{"version":3,"sources":["webpack:///./src/art/viva_logo_ce.jpg","webpack:///./src/art/dentaltalk_lg_portrait.png","webpack:///./src/art/blog_sm_portrait.png","webpack:///./src/plugins/bootstrap-vue.js","webpack:///./src/plugins/globals.js","webpack:///./src/service/service.js","webpack:///src/components/CookieBanner.vue","webpack:///./src/components/CookieBanner.vue?3fea","webpack:///./src/components/CookieBanner.vue","webpack:///src/components/FooterBar.vue","webpack:///./src/components/FooterBar.vue?256f","webpack:///./src/components/FooterBar.vue","webpack:///src/components/MenuSidebar.vue","webpack:///./src/components/MenuSidebar.vue?5e69","webpack:///./src/components/MenuSidebar.vue","webpack:///./src/plugins/eventbus.js","webpack:///src/components/PodcastPlayer.vue","webpack:///./src/components/PodcastPlayer.vue?7b47","webpack:///src/App.vue","webpack:///./src/components/PodcastPlayer.vue","webpack:///./src/App.vue?b9da","webpack:///./src/App.vue","webpack:///./src/components/HelloWorld.vue?0003","webpack:///./src/components/HelloWorld.vue","webpack:///src/components/HelloWorld.vue","webpack:///src/components/Home.vue","webpack:///./src/components/Home.vue?8068","webpack:///./src/components/Home.vue","webpack:///src/components/Login.vue","webpack:///./src/components/Login.vue?b70f","webpack:///./src/components/Login.vue","webpack:///src/components/Logout.vue","webpack:///./src/components/Logout.vue?1bd9","webpack:///./src/components/Logout.vue","webpack:///src/components/Recover.vue","webpack:///./src/components/Recover.vue?5b5a","webpack:///./src/components/Recover.vue","webpack:///src/components/ResetPassword.vue","webpack:///./src/components/ResetPassword.vue?6219","webpack:///./src/components/ResetPassword.vue","webpack:///src/components/Register.vue","webpack:///./src/components/Register.vue?fffc","webpack:///./src/components/Register.vue","webpack:///src/components/AccountHome.vue","webpack:///./src/components/AccountHome.vue?25e5","webpack:///./src/components/AccountHome.vue","webpack:///src/components/AccountProfile.vue","webpack:///./src/components/AccountProfile.vue?8348","webpack:///./src/components/AccountProfile.vue","webpack:///src/components/AccountPassword.vue","webpack:///./src/components/AccountPassword.vue?c62f","webpack:///./src/components/AccountPassword.vue","webpack:///src/components/Account.vue","webpack:///./src/components/Account.vue?0a42","webpack:///./src/components/Account.vue","webpack:///src/components/Gdpr.vue","webpack:///./src/components/Gdpr.vue?2f2d","webpack:///./src/components/Gdpr.vue","webpack:///src/components/Classroom.vue","webpack:///./src/components/Classroom.vue?f6fd","webpack:///./src/components/Classroom.vue","webpack:///src/components/Countdown.vue","webpack:///./src/components/Countdown.vue?7b18","webpack:///./src/components/Countdown.vue","webpack:///src/components/ClassroomReserve.vue","webpack:///./src/components/ClassroomReserve.vue?67e8","webpack:///./src/components/ClassroomReserve.vue","webpack:///src/components/ClassroomLive.vue","webpack:///./src/components/ClassroomLive.vue?ba1d","webpack:///./src/components/ClassroomLive.vue","webpack:///src/components/CancelSeat.vue","webpack:///./src/components/CancelSeat.vue?2174","webpack:///./src/components/CancelSeat.vue","webpack:///src/components/ClassroomAffidavit.vue","webpack:///./src/components/ClassroomAffidavit.vue?1821","webpack:///./src/components/ClassroomAffidavit.vue","webpack:///src/components/Podcast.vue","webpack:///./src/components/Podcast.vue?f3cd","webpack:///./src/components/Podcast.vue","webpack:///src/components/BlogPost.vue","webpack:///./src/components/BlogPost.vue?a796","webpack:///./src/components/BlogPost.vue","webpack:///./src/plugins/youtubeMixin.js","webpack:///src/components/SVA.vue","webpack:///./src/components/SVA.vue?5220","webpack:///./src/components/SVA.vue","webpack:///src/components/Survey.vue","webpack:///./src/components/Survey.vue?20e2","webpack:///./src/components/Survey.vue","webpack:///src/components/EvalPodcast.vue","webpack:///./src/components/EvalPodcast.vue?7207","webpack:///./src/components/EvalPodcast.vue","webpack:///src/components/ExamPodcast.vue","webpack:///./src/components/ExamPodcast.vue?4de6","webpack:///./src/components/ExamPodcast.vue","webpack:///src/components/Eval.vue","webpack:///./src/components/Eval.vue?d0a0","webpack:///./src/components/Eval.vue","webpack:///src/components/Exam.vue","webpack:///./src/components/Exam.vue?6350","webpack:///./src/components/Exam.vue","webpack:///src/components/Done.vue","webpack:///./src/components/Done.vue?2a2a","webpack:///./src/components/Done.vue","webpack:///src/components/Search.vue","webpack:///./src/components/Search.vue?67c8","webpack:///./src/components/Search.vue","webpack:///src/components/Upcoming.vue","webpack:///./src/components/Upcoming.vue?15e9","webpack:///./src/components/Upcoming.vue","webpack:///src/components/Ondemand.vue","webpack:///./src/components/Ondemand.vue?3bb3","webpack:///./src/components/Ondemand.vue","webpack:///src/components/Podcasts.vue","webpack:///./src/components/Podcasts.vue?6ecd","webpack:///./src/components/Podcasts.vue","webpack:///src/components/Blog.vue","webpack:///./src/components/Blog.vue?466a","webpack:///./src/components/Blog.vue","webpack:///src/components/Tutorials.vue","webpack:///./src/components/Tutorials.vue?32e5","webpack:///./src/components/Tutorials.vue","webpack:///src/components/Ebooks.vue","webpack:///./src/components/Ebooks.vue?ae96","webpack:///./src/components/Ebooks.vue","webpack:///src/components/Seats.vue","webpack:///./src/components/Seats.vue?1fc2","webpack:///./src/components/Seats.vue","webpack:///src/components/Queue.vue","webpack:///./src/components/Queue.vue?1943","webpack:///./src/components/Queue.vue","webpack:///src/components/Pending.vue","webpack:///./src/components/Pending.vue?fe6a","webpack:///./src/components/Pending.vue","webpack:///src/components/CompletedWebinar.vue","webpack:///./src/components/CompletedWebinar.vue?5ef2","webpack:///./src/components/CompletedWebinar.vue","webpack:///src/components/CompletedPodcast.vue","webpack:///./src/components/CompletedPodcast.vue?ccc2","webpack:///./src/components/CompletedPodcast.vue","webpack:///src/components/Completed.vue","webpack:///./src/components/Completed.vue?de01","webpack:///./src/components/Completed.vue","webpack:///src/components/TutorialHistory.vue","webpack:///./src/components/TutorialHistory.vue?3638","webpack:///./src/components/TutorialHistory.vue","webpack:///src/components/Support.vue","webpack:///./src/components/Support.vue?d328","webpack:///./src/components/Support.vue","webpack:///src/components/Terms.vue","webpack:///./src/components/Terms.vue?e9ef","webpack:///./src/components/Terms.vue","webpack:///src/components/Privacy.vue","webpack:///./src/components/Privacy.vue?f384","webpack:///./src/components/Privacy.vue","webpack:///src/components/NotFound.vue","webpack:///./src/components/NotFound.vue?cc60","webpack:///./src/components/NotFound.vue","webpack:///src/components/Plyr.vue","webpack:///./src/components/Plyr.vue?4aee","webpack:///./src/components/Plyr.vue","webpack:///src/components/Plyr2.vue","webpack:///./src/components/Plyr2.vue?240c","webpack:///./src/components/Plyr2.vue","webpack:///src/components/Plyr3.vue","webpack:///./src/components/Plyr3.vue?6431","webpack:///./src/components/Plyr3.vue","webpack:///src/components/PlyrYoutube.vue","webpack:///./src/components/PlyrYoutube.vue?6cb7","webpack:///./src/components/PlyrYoutube.vue","webpack:///src/components/Test.vue","webpack:///./src/components/Test.vue?f7fa","webpack:///./src/components/Test.vue","webpack:///src/components/FontAwesome.vue","webpack:///./src/components/FontAwesome.vue?e9a2","webpack:///./src/components/FontAwesome.vue","webpack:///src/components/BootstrapVue.vue","webpack:///./src/components/BootstrapVue.vue?61cb","webpack:///./src/components/BootstrapVue.vue","webpack:///src/components/YoutubeVue.vue","webpack:///./src/components/YoutubeVue.vue?d201","webpack:///./src/components/YoutubeVue.vue","webpack:///./src/router/index.js","webpack:///./node_modules/vue-plyr/dist/vue-plyr.mjs","webpack:///src/components/SearchBar.vue","webpack:///./src/components/SearchBar.vue?12eb","webpack:///./src/components/SearchBar.vue","webpack:///src/components/SearchSidebar.vue","webpack:///./src/components/SearchSidebar.vue?0bdc","webpack:///./src/components/SearchSidebar.vue","webpack:///src/components/CertButton.vue","webpack:///./src/components/CertButton.vue?2c31","webpack:///./src/components/CertButton.vue","webpack:///src/components/QueueButton.vue","webpack:///./src/components/QueueButton.vue?3714","webpack:///./src/components/QueueButton.vue","webpack:///src/components/MobileAd.vue","webpack:///./src/components/MobileAd.vue?ceaa","webpack:///./src/components/MobileAd.vue","webpack:///src/components/MobileAdTest.vue","webpack:///./src/components/MobileAdTest.vue?5fac","webpack:///./src/components/MobileAdTest.vue","webpack:///src/components/VpFeaturedContent.vue","webpack:///./src/components/VpFeaturedContent.vue?58ce","webpack:///./src/components/VpFeaturedContent.vue","webpack:///src/components/LobbyExam.vue","webpack:///./src/components/LobbyExam.vue?ed82","webpack:///./src/components/LobbyExam.vue","webpack:///src/components/LobbyLive.vue","webpack:///./src/components/LobbyLive.vue?ce58","webpack:///./src/components/LobbyLive.vue","webpack:///./src/main.js","webpack:///./src/art/dentaltalk_lg_landscape.png","webpack:///./src/art/blog_lg_landscape.png","webpack:///./src/art/home_ce_laptop_icon.png","webpack:///./src/art/twitter2_150x150.png","webpack:///./src/art/dentaltalk_sm_portrait.png","webpack:///./src/art/facebook_150x150.png","webpack:///./src/art/logo.png","webpack:///./src/utils/utils.js","webpack:///./src/art/dentaltalk_sm_landscape.png","webpack:///./src/art/blog_sm_landscape.png","webpack:///./src/art/instagram_150x150.png","webpack:///./src/art/blog_lg_portrait.png","webpack:///./src/config/constants.js"],"names":["module","exports","__webpack_require__","p","Vue","use","BootstrapVue","IconsPlugin","component","BPopover","library","add","faUserSecret","faKey","faMask","faCat","faAngry","faBell","FontAwesomeIcon","globals","data","var1","var2","methods","myGlobalMethod","console","log","mixin","service","username","password","u","axios","post","then","res","catch","e","email","m","resetToken","t","studentHash","s","get","params","status","agdNumber","classHash","podcastHash","c","hash","h","code","catId","compId","query","cid","coid","q","location","loc","cancelCode","blogId","blockLog","b","podcastShowHash","ps","page","adId","a","slotTypeId","featuredHash","campaignId","eventId","v","logFeatured","tzOffsetMin","Date","getTimezoneOffset","keyword","optinFlag","o","CookieBanner","name","debug","error","isLoading","hasCookie","blurb","computed","showBanner","aout","this","setCookie","utils_default","setVivaCookie","created","hasVivaCookie","mounted","_this","rowCount","bind","finally","buttonClicked","components_CookieBanner","render","_vm","_h","$createElement","_c","_self","staticClass","staticStyle","margin-bottom","attrs","show","dismissible","block","bottom","lg","_v","_s","variant","size","on","click","staticRenderFns","src_components_CookieBanner","normalizeComponent","ssrContext","FooterBar","defineProperty_default","utils","components","cookie-banner","isLoggedIn","$root","hasToken","token","getToken","version","getVersion","build","getBuild","logout","window","confirm","$router","push","components_FooterBar","background-color","align-h","cols","to","max-width","src","href","target","title","getFullYear","sm","isApple","isAndroid","isMobile","isDesktop","_e","src_components_FooterBar","FooterBar_normalizeComponent","MenuSidebar","loading","variantBtn","variant2","variants","getDesktopUrl","$desktopUrl","gotoPath","path","currentRoute","j","getTime","route","shown","hidden","beforeDestroy","components_MenuSidebar","id","directives","rawName","modifiers","sidebar-menu","display","transform","-webkit-transform","icon","font-scale","backdrop-variant","backdrop","right","shadow","$event","preventDefault","src_components_MenuSidebar","MenuSidebar_normalizeComponent","EventBus","PodcastPlayer","player","showPlayer","mp3","props","rewind","playing","ended","play","forward","playerEvents","source","type","sources","pause","$refs","eventbus","$emit","hidePlayer","podcastPlay","podcastPause","$on","$off","components_PodcastPlayer","value","expression","fluid","md","stopPropagation","pill","ref","_data","App","footer-bar","menu-sidebar","podcast-player","PodcastPlayer_normalizeComponent","testme","showSearch","alert","selectortype_template_index_0_src_App","show-search","mode","key","$route","fullPath","src_App","App_normalizeComponent","components_HelloWorld","msg","_m","src_components_HelloWorld","HelloWorld_normalizeComponent","Home","webinars","classes","podcasts","studentData","seats","bannerAds","searchModel","label","gotoWebinar","ix","row","isReserved","isWaiting","gotoClass","constants_default","PATHS","ON_DEMAND_BASE","gotoPodcast","removeFilter","forEach","hasSeat","components_Home","remove-filter","model","callback","$$v","length","_l","classId","refInFor","photo","margin-left","className","speakerName","sponsorCompanyName","_f","releaseDateUTC","credits","creditName","slug","companyName","durationSec","src_components_Home","Home_normalizeComponent","Login","busy","rurl","form","String","default","login","setToken","setStudentHash","setStudentName","firstname","lastname","setStudentEmail","_this2","student","components_Login","submit","is-text","required","placeholder","$set","src_components_Login","Login_normalizeComponent","Logout__data","Logout","setClassHash","setStudentId","localStorage","setItem","clear","reload","components_Logout","src_components_Logout","Logout_normalizeComponent","Recover__data","errorMsg","success","Recover","recover","components_Recover","src_components_Recover","Recover_normalizeComponent","regexPwd","validators","regex","ResetPassword","passwords","password2","mixins","lib","validations","minLength","Object","sameAsPassword","validateState","_$v$passwords$name","$v","$dirty","$error","resetPassword","$touch","$anyError","components_ResetPassword","label-for","label-size","label-class","state","aria-describedby","src_components_ResetPassword","ResetPassword_normalizeComponent","Register_regexPwd","Register","lists","jobTitles","initSelectArray","titles","states","countries","gradYears","genders","ageRanges","officeSizes","sourceHeard","isPhoneMobile","jobTitle","officeName","address","city","zip","country","phone","certYear","gender","ageRange","officeSize","isValid","optionalAgdNumber","req","isNaN","Number","optionalAgdNumberDupe","viewGender","_$v$form$name","setUsername","register","setTimeout","setCertYears","MIN_YEAR","MAX_YEAR","certYears","toString","concat","prepSelectArray","components_Register","options","trim","unchecked-value","buttons","button-variant","bg-variant","src_components_Register","Register_normalizeComponent","AccountHome","checkbox","summary","ceHome","ceLive","ceTotal","watch","deep","handler","vmodel","components_AccountHome","src_components_AccountHome","AccountHome_normalizeComponent","AccountProfile","email2","components_AccountProfile","src_components_AccountProfile","AccountProfile_normalizeComponent","AccountPassword_regexPwd","AccountPassword","components_AccountPassword","Account","account-home","account-profile","account-password","AccountPassword_normalizeComponent","components_Account","no-body","content-class","card","active","scopedSlots","_u","fn","proxy","src_components_Account","Account_normalizeComponent","Gdpr","components_Gdpr","src_components_Gdpr","Gdpr_normalizeComponent","Classroom__data","classObj","ceTypeId","examTaken","examsLeftToday","showVideo","logging","Classroom","isVideo","typeId","CLASS_TYPE","ARCHIVE","PDF","youtubeUrl","isPDF","pdfClassFile","isArchive","isLive","studentStarted","isFlash","hasVideo","getVideoUrl","getYoutubeCode","getYoutubeUrl","btnViewLabel","isTutorial","hasExamsLeftToday","btnTakeExamDisabled","canShowExam","btnExamVariant","zoomCode","goBack","go","gotoExam","buildClass","agdCode","agdCategory","description","isCADentalBoard","courseNumberCADentalBoard","buildStudentData","getStudentName","examDate","examDateLocal","toggleVideo","gradebookId","viewPDF","win","open","focus","_this3","getClassHash","canonical","CANONICAL_BASE","caption","pres","thumb","substring","indexOf","videoSchema","@context","@type","thumbnailUrl","url","contentUrl","uploadDate","prettyDate","courseSchema","numberOfCredits","document","desc","leadingWords","headTag","getElementsByTagName","tag","createElement","setAttribute","appendChild","tag2","components_Classroom","aspect","allowfullscreen","rounded","disabled","examScore","padding","inqueue","domProps","textContent","releaseDate","JSON","stringify","innerHTML","src_components_Classroom","Classroom_normalizeComponent","Countdown__data","loaded","refDate","endDate","delta","timer","alarmSent","countdownStarted","Countdown","serverTime","endTime","headline","alarmSeconds","prettyCountdown","setDelta","Math","floor","newVal","oldVal","setInterval","clearInterval","components_Countdown","src_components_Countdown","Countdown_normalizeComponent","ClassroomReserve","reserving","started","countdownAlarm","reloadPage","getClass","reserveSeat","LIVE","components_ClassroomReserve","countdown-alarm","src_components_ClassroomReserve","ClassroomReserve_normalizeComponent","ClassroomLive","attendeeId","starting","inLobby","isCountdownStarted","privacyBlockTest","learnmore","privacyBlock","privacyOptinShow","countdown","getServerTime","getReleaseDate","btnWebinarDisabled","btnWebinarVariant","zoomUrl","icalCalendar","canShowLobby","scrollToTop","scrollTo","googleCalendarUrl","subject","startDate","setMinutes","getMinutes","durationMin","getDateTimeZ","encodeURI","hasOwnProperty","setOptin","cancelOptin","classStart","assign","_this4","components_ClassroomLive","countdown-started","font-size","aria-hidden","border","min-width","placement","triggers","src_components_ClassroomLive","ClassroomLive_normalizeComponent","CancelSeat__data","CancelSeat","btnExamDisabled","cancelSeat","components_CancelSeat","src_components_CancelSeat","CancelSeat_normalizeComponent","ClassroomAffidavit__data","savingYes","savingNo","ClassroomAffidavit","nl2br","gotoEval","confirmOndemandAttendance","attended","confirmLiveAttendance","saving","classViewCount","studentEnded","components_ClassroomAffidavit","text-align","rows","src_components_ClassroomAffidavit","ClassroomAffidavit_normalizeComponent","Podcast","activated","podcastSlug","podcastShow","curPodcastIx","featuredPodcastIx","haveFeaturedPodcast","topPlaying","numPodcasts","podcast","isRowPlaying","isActiveRow","isActiveFeaturedRow","activateFeaturedRow","curpodcastIx","activateRow","logPlay","components_Podcast","alt","alignment","class","border-bottom","src_components_Podcast","Podcast_normalizeComponent","BlogPost","blogObj","author","body","podcastId","posts","nolog","stripBlogad","replace","components_BlogPost","sub-title","podcastTitle","src_components_BlogPost","BlogPost_normalizeComponent","youtubeMixin","hasYoutube","hasRun","checkYoutube","_ref","asyncToGenerator_default","regenerator_default","mark","_callee","wrap","_context","prev","next","protocol","promise_default","resolve","img","Image","onload","onerror","abrupt","stop","apply","arguments","_callee2","_context2","SVA","showDivVideo","showDivPostVideo","playerCounter","playerTimer","videoId","svaObj","clearPlayerTimer","svaplyr","bail","detail","YT","PlayerState","ENDED","btnYes","btnSave","btnNo","replayVideo","youtubeId","_callee3","_context3","sent","destroy","destroyed","components_SVA","offset-lg","companyPhoto","allowtransparency","headlineButtons","buttonTextYes","buttonTextNo","src_components_SVA","SVA_normalizeComponent","Survey","survey","curQuestionIx","choices","choiceClassArr","numQuestions","questions","questionType","submitDisabled","every","item","getQuestionAddlText","toLowerCase","initChoices","_ix","isPicked","buttonIx","pick","qtype","_ix2","questionIx","choiceHash","_ix3","isLast","sh","sessionHash","components_Survey","question","row2","iy","btn-survey-unchecked","btn-survey-checked","src_components_Survey","Survey_normalizeComponent","EvalPodcast","requiredMsg","courseObjectives","courseUseful","courseAppropriate","courseLogical","instructorCommunication","instructorPreparedness","instructorEffectiveness","sitePresentation","siteNavigation","siteComparison","comments","otherTopics","text","maxLength","validateRadio","submitEval","evalData","evalTaken","components_EvalPodcast","max-rows","src_components_EvalPodcast","EvalPodcast_normalizeComponent","ExamPodcast","errorGrading","hideAgdReminder","grading","exam","passed","selected","answers","grades","radioClassArr","isGraded","haveAnswers","isCorrect","quesIndex","ansIndex","correctOption","isIncorrect","clearAnswers","checkAgdReminder","submitExam","examData","slice","getElementById","scrollIntoView","components_ExamPodcast","minScore","index","examQId","option1","correct","incorrect","option2","option3","option4","option5","option6","input","scale","src_components_ExamPodcast","ExamPodcast_normalizeComponent","Eval","components_Eval","src_components_Eval","Eval_normalizeComponent","Exam","examDelayMin","webinar","isExamDisabled","CE_TYPEID","HOMESTUDY","HOME_STUDY","components_Exam","src_components_Exam","Exam_normalizeComponent","Done__data","Done","components_Done","src_components_Done","Done_normalizeComponent","Search","featuredClass","featuredPodcast","featuredBlog","noResults","blogPosts","gotoBlogPost","gotoFeaturedClass","gotoFeaturedPodcast","doSearch","featuredContent","components_Search","fc","fp","fb","fh","src_components_Search","Search_normalizeComponent","Upcoming","mobileAds","adIndexArr","totalRows","pages","isFiltered","doLive","searchAllContent","showMobileAd","getMobileAd","adUrls","banners","indexStart","interval","getAdIndexArray","components_Upcoming","mb","src_components_Upcoming","Upcoming_normalizeComponent","Ondemand","pageSize","curPage","pageInput","pageChange","doOndemand","linkGen","pageNum","link","ifNull","setCurPage","parseInt","ceil","components_Ondemand","align","total-rows","per-page","change","src_components_Ondemand","Ondemand_normalizeComponent","Podcasts","doPodcasts","components_Podcasts","src_components_Podcasts","Podcasts_normalizeComponent","Blog","doBlogPosts","components_Blog","src_components_Blog","Blog_normalizeComponent","Tutorials","doTutorials","doTutorial","components_Tutorials","src_components_Tutorials","Tutorials_normalizeComponent","Ebooks","books","book","pdf","submitNewTab","doEbooks","components_Ebooks","thumbnail","subtitle","blurbLib","color","buttonText","vertical-align","width","src_components_Ebooks","Ebooks_normalizeComponent","Seats__data","Seats","gotoCancel","components_Seats","z-index","src_components_Seats","Seats_normalizeComponent","Queue__data","removed","Queue","doQueue","removeClass","filter","components_Queue","remove-class","src_components_Queue","Queue_normalizeComponent","Pending__data","Pending","doPending","components_Pending","classid","src_components_Pending","Pending_normalizeComponent","CompletedWebinar__data","CompletedWebinar","studentName","doCompleted","components_CompletedWebinar","src_components_CompletedWebinar","CompletedWebinar_normalizeComponent","CompletedPodcast__data","CompletedPodcast","components_CompletedPodcast","Completed","showWebinars","cntWebinars","cntPodcasts","completed-webinar","completed-podcast","CompletedPodcast_normalizeComponent","toggle","errors","components_Completed","src_components_Completed","Completed_normalizeComponent","TutorialHistory","doTutorialHistory","components_TutorialHistory","src_components_TutorialHistory","TutorialHistory_normalizeComponent","Support","office","comment","$reset","getStudentEmail","components_Support","src_components_Support","Support_normalizeComponent","Terms__data","Terms","components_Terms","src_components_Terms","Terms_normalizeComponent","Privacy__data","Privacy","components_Privacy","src_components_Privacy","Privacy_normalizeComponent","NotFound__data","NotFound","components_NotFound","src_components_NotFound","NotFound_normalizeComponent","Plyr__data","playerInit","arr","Plyr","components_Plyr","margin","src_components_Plyr","Plyr_normalizeComponent","Plyr2__data","obj","Plyr2","$parent","playPlayer","components_Plyr2","border-top","src_components_Plyr2","Plyr2_normalizeComponent","Plyr3__data","Plyr3","components_Plyr3","src_components_Plyr3","Plyr3_normalizeComponent","PlyrYoutube__data","PlyrYoutube","components_PlyrYoutube","src_components_PlyrYoutube","PlyrYoutube_normalizeComponent","Test__data","dt","Test","rawDate","dateStr","parse","components_Test","composing","src_components_Test","Test_normalizeComponent","FontAwesome__data","FontAwesome","components_FontAwesome","src_components_FontAwesome","FontAwesome_normalizeComponent","BootstrapVue__data","components_BootstrapVue","src_components_BootstrapVue","BootstrapVue_normalizeComponent","YoutubeVue__data","videoUrl","videoArr","playerVars","autoplay","rel","YoutubeVue","youtube","changeVideo","readyVideo","playingVideo","playVideo","pauseVideo","stopVideo","components_YoutubeVue","video-id","player-vars","ready","src_components_YoutubeVue","YoutubeVue_normalizeComponent","VueRouter","router","routes","meta","requiresAuth","alias","router__ref","HelloWorld","scrollBehavior","from","savedPosition","x","y","beforeEach","getItem","afterEach","gtag","page_title","page_location","page_path","pathname","send_to","nextTick","script","emit","Array","[object Object]","hideYouTubeDOMError","plyr_min_default","$el","firstChild","opts","element","emitPlayerEvent","message","event","isOldIE","navigator","test","userAgent","HEAD","styles","__vue_script__","__vue_render__","_t","_withStripped","VuePlyr","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","_compiled","functional","_scopeId","context","$vnode","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","_ssrRegister","$options","shadowRoot","originalRender","existing","beforeCreate","vue_plyr_normalizeComponent","inject","map","undefined","media","css","group","ids","Set","has","btoa","unescape","encodeURIComponent","head","styleSheet","cssText","Boolean","join","textNode","createTextNode","nodes","childNodes","removeChild","insertBefore","addStyle","install","plyr","keys","vue_plyr","SearchBar","extends_default","searchDisplay","haveFilter","search","remove","setSearchDisplay","safeSearch","getSearchDisplay","components_SearchBar","sidebar-search","readonly","src_components_SearchBar","SearchBar_normalizeComponent","SearchSidebar__data","smallWords","categories","companies","bg_variant","text_variant","categoriesTest","companiesTest","SearchSidebar","getSidebarLabel","getTextFromValue","textArr","searchType","catList","categoryID","categoryName","companyList","companyID","components_SearchSidebar","header-class","text-variant","body-class","autofocus","autocomplete","src_components_SearchSidebar","SearchSidebar_normalizeComponent","CertButton","modalFlag","showModal","hideModal","sendCert","components_CertButton","margin-top","ok-only","src_components_CertButton","CertButton_normalizeComponent","QueueButton","queueId","addQueue","removeQueue","components_QueueButton","src_components_QueueButton","QueueButton_normalizeComponent","MobileAd","submitted","haveMobileAd","mobileBanners","bannerCount","mobileAd","getModalName","haveEmail","getBanner","showEvent","hiddenEvent","submitEmail","components_MobileAd","confirmationMessageTitle","confirmationMessage","src_components_MobileAd","MobileAd_normalizeComponent","MobileAdTest","components_MobileAdTest","src_components_MobileAdTest","MobileAdTest_normalizeComponent","VpFeaturedContent","VPAD_SLOT_TYPE","VPAD_FEATURED_CLASS","VPAD_FEATURED_PODCAST","gotoFeaturedBlogPost","VPAD_FEATURED_BLOG","components_VpFeaturedContent","src_components_VpFeaturedContent","VpFeaturedContent_normalizeComponent","LobbyExam","featuredPodcastClicks","logFeaturedPodcast","lobbyTypeId","components_LobbyExam","offset-md","featuredBlurb","src_components_LobbyExam","LobbyExam_normalizeComponent","LobbyLive","components_LobbyLive","src_components_LobbyLive","LobbyLive_normalizeComponent","process","config","productionTip","VueYoutube","fullscreen","enabled","speed","prettyDateTime","seconds","prettySeconds","num","prettyNumber","constants","PARTICIPATORY","hostMap","defaultRunMode","sites","local","hosts","api","desktopUrl","prod","runMode","getRunMode","host","prototype","baseUrl","getApiBaseUrl","defaults","baseURL","el","studentId","studentEmail","testval","__VERSION__","__BUILD__","val","setSearchModel","getStudentId","getStudentHash","getClassId","setClassId","processLogin","VIVA_COOKIE_NAME","arg","d","isString","getDay","getMonth","getDate","prettyTime","hr","getHours","mn","SECONDS_IN_MINUTE","MINUTES_IN_HOUR","SECONDS_IN_HOUR","SECONDS_IN_DAY","twoDigits","plural","suffix","MAX_SEARCH_LENGTH","durationSeconds","secs","hours","minutes","toLocaleString","deltaSeconds","days","match","safeParseInt","defaultVal","parsed","includes","exp","hostVal","forcedMode","split","_arr","_i","siteName","runModeArg","itemCnt","adCnt","adStartPos","adInterval","adCurPos","adCurIx","str","maxlen","words","idx","UNDEFINED","PRODUCED","PRODUCED_ARCHIVE","MOVIE","LUNCHLEARN","PRODUCED_PLAYBACK","SLIDESHOW","SEMINAR","NONCE","VPAD_LOGIN","VPAD_TOP","VPAD_SLIDER","VPAD_HOMESLIDE","VPAD_RIGHT","VPAD_LEFT","VPAD_CONTENT_TOP","VPAD_CONTENT_LIST1","VPAD_CAT_TOP","VPAD_CAT_LIST1","VPAD_TRENDING","VPAD_CE","VPAD_TIP","VPAD_PRODUCT","VPAD_PROMOTION","VPAD_NEW_PRODUCT","VPAD_PRESS","VPAD_ACTIVITY","VPAD_CAT_ALT_TOP","VPAD_CAT_ALT_LIST","VPAD_CESPOTLIGHT","VPAD_EXAMBLURBLINK","VPAD_PODCAST_PROMOTION","VPAD_EXAM","VPAD_EXAMEMAIL","VPAD_LEFTCONTENT","VPAD_CONTENT_LIST2","VPAD_CONTENT_LIST3","VPAD_CONTENT_LIST4","VPAD_CAT_LIST2","VPAD_CAT_LIST3","VPAD_CAT_LIST4","VPAD_EBOOK","VPAD_EBOOK_THUMBNAIL","VPAD_RIGHT_INTERNAL","VPAD_EVENTID","VIEW","CLICK","PODCAST_BASE"],"mappings":"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","file":"static/js/app.00dd072154ab7e7ff4bf.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/img/viva_logo_ce.466251e.jpg\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/viva_logo_ce.jpg\n// module id = I4a9\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/dentaltalk_lg_portrait.226d09d.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/dentaltalk_lg_portrait.png\n// module id = IxV/\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/blog_sm_portrait.55a5a31.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/blog_sm_portrait.png\n// module id = K/2B\n// module chunks = 1","import Vue from 'vue'\r\n\r\n// https://bootstrap-vue.js.org/docs/\r\n// https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node\r\nimport { BootstrapVue, IconsPlugin, BPopover } from 'bootstrap-vue'\r\nimport 'bootstrap/dist/css/bootstrap.css'\r\nimport 'bootstrap-vue/dist/bootstrap-vue.css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { faUserSecret, faKey, faMask, faCat, faAngry, faBell } from '@fortawesome/free-solid-svg-icons'\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\n\r\nVue.use(BootstrapVue)\r\n// Optionally install the BootstrapVue icon components plugin\r\nVue.use(IconsPlugin)\r\n\r\nVue.component('b-popover', BPopover)\r\n\r\n// https://github.com/FortAwesome/vue-fontawesome\r\n// add the \"solid\" icons to the core library\r\nlibrary.add(faUserSecret, faKey, faMask, faCat, faAngry, faBell)\r\nVue.component('font-awesome-icon', FontAwesomeIcon)\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/bootstrap-vue.js","'use strict'\r\n\r\n// inspired by\r\n// https://developpaper.com/question/how-to-access-vue-global-variables-in-vue-files/\r\n\r\n/* eslint-disable */\r\nimport Vue from 'vue'\r\n\r\nlet globals = {\r\n data() {\r\n return {\r\n var1: 1,\r\n var2: 'string'\r\n }\r\n },\r\n methods:{\r\n myGlobalMethod() { console.log(`myGlobalMethod HOWDY!!`) }\r\n },\r\n}\r\n\r\n// export default globals\r\nexport default {\r\n globals: globals\r\n}\r\n\r\n// register global mixin\r\nVue.mixin(globals);\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/globals.js","'use strict'\r\nimport axios from 'axios'\r\n\r\n/* eslint-disable */\r\n\r\n// axios example\r\n// https://github.com/axios/axios\r\n\r\n// service naming conventions\r\n// https://restfulapi.net/resource-naming/\r\n// -- use hyphens, not underscore, for readability\r\n\r\n// axios tutorial\r\n// https://medium.com/codingthesmartway-com-blog/getting-started-with-axios-166cb0035237\r\n// video\r\n// https://www.youtube.com/watch?v=1vbpBDWu1AQ\r\n\r\nexport default {\r\n init(classHash, studentHash) {\r\n // validates student hash, class is valid/active and student is attendee\r\n // returns\r\n // -- validation results\r\n // NA -- after class activity (SVA, survey or none)\r\n // indicators if student complated: eval, exam\r\n let data = { s: studentHash, c: classHash }\r\n return axios.get('/api/init', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n login(username, password) {\r\n let data = { u: username, p: password }\r\n return axios.post('/api/login',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n resetPasswordRequest(username, email) {\r\n let data = { u: username, m: email }\r\n return axios.post('/api/reset-password-request',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n resetPassword(password, resetToken) {\r\n let data = { p: password, t: resetToken }\r\n return axios.post('/api/reset-password',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n recover(username, email) {\r\n let data = { u: username, m: email }\r\n return axios.post('/api/recover',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n validateUsername(studentHash,username) { // returns true if username can be used\r\n let data = { s: studentHash, u: username }\r\n return axios.get('/api/validate-username',{params: data}).then(res => res.data.status).catch(e => console.log(e) )\r\n },\r\n validateEmail(studentHash,email) { // returns true if email can be used\r\n let data = { s: studentHash, email: email }\r\n return axios.get('/api/validate-email',{params: data}).then(res => res.data.status).catch(e => console.log(e) )\r\n },\r\n validateAgdNumber(studentHash,agdNumber) { // returns true if email can be used\r\n let data = { s: studentHash, agdNumber: agdNumber }\r\n return axios.get('/api/validate-agd-number',{params: data}).then(res => res.data.status).catch(e => console.log(e) )\r\n },\r\n register(data) {\r\n return axios.post('/api/register',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n support(data) {\r\n return axios.post('/api/support',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getStudent(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/student',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n hideAgdReminder(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/hide-agd-reminder',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getSearchItems() {\r\n return axios.get('/api/search-items').then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getAccountItems(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/account-items',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getAccountHome(studentHash) {\r\n // returns ce status for account home tab\r\n let data = { s: studentHash }\r\n return axios.get('/api/account-home',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n sendReport(studentHash) { // Verification of Participation report\r\n let data = { s: studentHash }\r\n return axios.get('/api/send-ce-report',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n sendCert(studentHash, classHash, podcastHash) { // send cert for class or podcast\r\n let data = { s: studentHash, c: classHash, p:podcastHash }\r\n return axios.post('/api/send-cert', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getProfile(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/profile',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveProfile(data) {\r\n // POST saves profile\r\n return axios.post('/api/profile', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n removeConsent(hash) {\r\n // POST saves profile\r\n let data = {h: hash}\r\n return axios.post('/api/remove-consent', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getBlurb(code) {\r\n let data = { code: code }\r\n return axios.get('/api/blurb',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getSearch(studentHash, catId, compId, query) {\r\n let data = { cid: catId, coid: compId, q: query, s: studentHash }\r\n return axios.get('/api/search',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getHome(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/home',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getClass(classHash, studentHash) {\r\n let data = { c: classHash, s: studentHash }\r\n return axios.get('/api/class',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getWebinarLobby(classHash, podcastHash, studentHash, location) {\r\n // location := null | webinar | exam\r\n let data = { c: classHash, p: podcastHash, s: studentHash, loc: location }\r\n return axios.get('/api/webinar-lobby',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n removeQueue(classHash, studentHash) {\r\n let data = { c: classHash, s: studentHash }\r\n return axios.get('/api/remove-queue',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getCancelSeat(cancelCode, studentHash) {\r\n let data = { code: cancelCode, s: studentHash }\r\n return axios.get('/api/cancel-seat',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n cancelSeat(cancelCode, studentHash) {\r\n let data = { code: cancelCode, s: studentHash }\r\n return axios.post('/api/cancel-seat', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getPodcast(podcastHash, studentHash) {\r\n let data = { p: podcastHash, s: studentHash }\r\n return axios.get('/api/podcast',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getBlogPost(blogId, studentHash, blockLog) {\r\n let data = { b: blogId, s: studentHash, blockLog: blockLog }\r\n return axios.get('/api/blog-post',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getPodcastShow(podcastShowHash,studentHash) {\r\n let data = { ps: podcastShowHash, s: studentHash }\r\n return axios.get('/api/podcast-show',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getPending(studentHash,page) {\r\n let data = { s: studentHash, page: page }\r\n return axios.get('/api/pending', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getSeats(studentHash) {\r\n let data = { s: studentHash }\r\n return axios.get('/api/seats', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getQueue(studentHash,page) {\r\n let data = { s: studentHash, page: page }\r\n return axios.get('/api/queue', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveQueue(classHash, studentHash) {\r\n let data = { c: classHash, s: studentHash }\r\n return axios.post('/api/queue-add', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getCompleted(studentHash) {\r\n // gets summary data of webinars and podcasts\r\n let data = { s: studentHash }\r\n return axios.get('/api/completed', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getCompletedWebinars(studentHash,page) {\r\n let data = { s: studentHash, page: page }\r\n return axios.get('/api/completed-webinars', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getCompletedPodcasts(studentHash,page) {\r\n let data = { s: studentHash, page: page }\r\n return axios.get('/api/completed-podcasts', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getTutorialHistory(studentHash,page) {\r\n let data = { s: studentHash, page: page }\r\n return axios.get('/api/tutorial-history', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getMobileAd(adId,studentHash) {\r\n let data = { s: studentHash, a: adId }\r\n return axios.get('/api/mobilead', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n submitMobileAd(adId,studentHash, email) {\r\n let data = { s: studentHash, a: adId, e: email }\r\n return axios.post('/api/mobilead-submit', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n logFeaturedContentClick(studentHash, slotTypeId, featuredHash) {\r\n let data = { s: studentHash, t: slotTypeId, h: featuredHash }\r\n return axios.post('/api/featuredcontent-click', data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getSva(classHash,studentHash) {\r\n // console.log(`getSva s: ${studentHash} c: ${classHash}`)\r\n let data = { s: studentHash, c: classHash }\r\n return axios.get('/api/sva', {params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveSvaResponse(classHash, studentHash, campaignId, eventId) {\r\n // eventId: 1=view, 2=YES, 3=NO\r\n let data = { s: studentHash, c: classHash, v: campaignId, e: eventId }\r\n return axios.post('/api/save-sva-response',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getSurvey(classHash, studentHash) {\r\n let data = { c: classHash, s: studentHash }\r\n return axios.get('/api/survey',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveSurveyResponse(data) {\r\n return axios.post('/api/save-survey-response',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n classStart(classHash, studentHash) {\r\n // called when student launches live webinar\r\n // sets attendee.studentStarted\r\n // on first time creates gradebook with attendeeId\r\n // every time increments classViewCount\r\n let data = { c: classHash, s: studentHash }\r\n return axios.get('/api/class-start',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n classView(classHash, studentHash) {\r\n // called when student launches opens class view\r\n let data = { c: classHash, s: studentHash }\r\n return axios.get('/api/class-view',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n podcastView(podcastHash, studentHash, logFeatured, location) {\r\n // called when student plays podcast\r\n // logFeatured := true when podcast is a \"featured\" lobby podcast\r\n // location := null | webinar | exam\r\n let data = { p: podcastHash, s: studentHash, log: logFeatured, loc: location }\r\n return axios.get('/api/podcast-view',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveAffidavit(data) {\r\n return axios.post('/api/save-affidavit',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveEval(data) {\r\n return axios.post('/api/save-eval',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getExam(classHash, podcastHash, studentHash) {\r\n let data = { c: classHash, p: podcastHash, s: studentHash, }\r\n return axios.get('/api/exam',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n gradeExam(data) {\r\n // add tzOffsetMin to data (minutes from local time to UTC)\r\n data.tzOffsetMin = (new Date()).getTimezoneOffset()\r\n return axios.post('/api/grade-exam',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getUpcoming(studentHash, catId, compId, keyword, page) {\r\n let data = { s: studentHash, cid: catId, coid: compId, q: keyword, page: page }\r\n // Gets upcoming classes\r\n return axios.get('/api/upcoming',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getOndemand(studentHash, catId, compId, keyword, page) {\r\n let data = { s: studentHash, cid: catId, coid: compId, q: keyword, page: page }\r\n // Gets upcoming classes\r\n return axios.get('/api/ondemand',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getPodcasts(studentHash, catId, compId, keyword, page) {\r\n let data = { s: studentHash, cid: catId, coid: compId, q: keyword, page: page }\r\n // Gets upcoming classes\r\n return axios.get('/api/podcasts',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getBlogPosts(studentHash, catId, compId, keyword, page) {\r\n let data = { s: studentHash, cid: catId, coid: compId, q: keyword, page: page }\r\n // Gets upcoming classes\r\n return axios.get('/api/blog-posts',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getTutorials(studentHash, catId, compId, keyword, page) {\r\n let data = { s: studentHash, cid: catId, coid: compId, q: keyword, page: page }\r\n // Gets upcoming classes\r\n return axios.get('/api/tutorials',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n getBooks(studentHash) {\r\n let data = { s: studentHash }\r\n // Gets upcoming classes\r\n return axios.get('/api/books',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n saveBookResponse(data) {\r\n return axios.post('/api/book-response-mvp',data).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n reserveSeat(classHash, studentHash) {\r\n // Reserves seat for class\r\n let data = { s: studentHash, c: classHash }\r\n return axios.get('/api/reserve-seat',{params: data}).then(res => res.data).catch(e => console.log(e) )\r\n },\r\n setOptin(classHash, studentHash, optinFlag) {\r\n // Reserves seat for class\r\n let data = { s: studentHash, c: classHash, o: optinFlag }\r\n return axios.post('/api/set-privacy-optin',data).then(res => res.data).catch(e => console.log(e) )\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/service/service.js","<template>\r\n <b-alert :show=\"!isLoading && !hasCookie\" dismissible block bottom class=\"fixed-bottom\" style=\"margin-bottom: 0\">\r\n <b-row class=\"justify-content-md-center\">\r\n <b-col lg=\"11\" s=\"10\">{{ blurb }}</b-col>\r\n <b-col lg=\"1\" s=\"2\" class=\"text-center\"><b-button variant=\"dark\" size=\"sm\" @click=\"setCookie\">Ok</b-button></b-col>\r\n </b-row>\r\n </b-alert>\r\n</template>\r\n<script>\r\n\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nexport default {\r\n name: \"CookieBanner\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n isLoading: true,\r\n hasCookie: false,\r\n code: 'cookie_message', // blurbs.code\r\n blurb: 'This site uses cookies.'\r\n }\r\n },\r\n computed: {\r\n showBanner() {\r\n let aout = !this.isLoading && !this.hasCookie\r\n if (this.debug) console.log( `showBanner: ${aout}`)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n setCookie(e) {\r\n this.hasCookie = true\r\n utils.setVivaCookie()\r\n if (this.debug) console.log('Set Viva Cookie.')\r\n }\r\n },\r\n created() {\r\n this.hasCookie = utils.hasVivaCookie() // check storage\r\n },\r\n mounted() {\r\n if (this.debug) console.log(`isLoading: ${this.isLoading} hasCookie ${this.hasCookie}`)\r\n if (!this.hasCookie) {\r\n service\r\n .getBlurb(this.code)\r\n .then(\r\n (res => {\r\n // if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = res.data[0].blurb\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.isLoading = false\r\n if (this.debug) console.log(`isLoading: ${this.isLoading} hasCookie ${this.hasCookie} buttonClicked: ${this.buttonClicked}`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e)\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/CookieBanner.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-alert',{staticClass:\"fixed-bottom\",staticStyle:{\"margin-bottom\":\"0\"},attrs:{\"show\":!_vm.isLoading && !_vm.hasCookie,\"dismissible\":\"\",\"block\":\"\",\"bottom\":\"\"}},[_c('b-row',{staticClass:\"justify-content-md-center\"},[_c('b-col',{attrs:{\"lg\":\"11\",\"s\":\"10\"}},[_vm._v(_vm._s(_vm.blurb))]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-center\",attrs:{\"lg\":\"1\",\"s\":\"2\"}},[_c('b-button',{attrs:{\"variant\":\"dark\",\"size\":\"sm\"},on:{\"click\":_vm.setCookie}},[_vm._v(\"Ok\")])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4628cbc0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CookieBanner.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4628cbc0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CookieBanner.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CookieBanner.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CookieBanner.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4628cbc0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CookieBanner.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4628cbc0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CookieBanner.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container>\r\n <b-row class=\"mt-2 mb-2\">\r\n <b-col>\r\n <hr size=1 style=\"background-color:#CCC;\">\r\n </b-col>\r\n </b-row>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" class=\"text-center\">\r\n <b-link to=\"/home\"><img src=\"@/art/logo.png\" class=\"fluid\" style=\"max-width:180px;\" /></b-link>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col class=\"text-center\">\r\n <b-link href=\"https://www.facebook.com/VivaLearningOfficial/\" target=\"_blank\" title=\"Facebook\"><img src=\"@/art/facebook_150x150.png\" class=\"social\" /></b-link>\r\n <b-link href=\"https://www.instagram.com/vivalearning/?hl=en\" class=\"pl-4 pr-4\" target=\"_blank\" title=\"Instagram\"><img src=\"@/art/instagram_150x150.png\" class=\"social\" /></b-link>\r\n <b-link href=\"https://twitter.com/vivalearning?lang=en\" target=\"_blank\" title=\"Twitter\"><img src=\"@/art/twitter2_150x150.png\" class=\"social\" /></b-link>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mt-3 mb-3\">\r\n <b-col class=\"text-center\">\r\n <b-link to=\"/privacy\">Privacy Policy</b-link>\r\n • \r\n <b-link to=\"/terms\">Terms & Conditions</b-link>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mt-3 mb-4\">\r\n <b-col class=\"text-center\">\r\n © {{(new Date).getFullYear()}} Viva Learning LLC\r\n <div>All rights reserved.</div>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mt-3 mb-3\">\r\n <b-col class=\"text-center\">\r\n Version: {{version}}\r\n • \r\n Build: {{build}}\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"debug\" class=\"mt-3 mb-3\">\r\n <b-col cols=\"12\" sm=\"6\" class=\"text-center\">\r\n Apple: {{utils.isApple()}}\r\n • \r\n Android: {{utils.isAndroid()}}\r\n </b-col>\r\n <b-col cols=\"12\" sm=\"6\" class=\"text-center\">\r\n Mobile: {{utils.isMobile()}}\r\n • \r\n Desktop: {{utils.isDesktop()}}\r\n </b-col>\r\n </b-row>\r\n <CookieBanner></CookieBanner>\r\n </b-container>\r\n</template>\r\n<script>\r\n/* eslint-disable */\r\n// import router from \"../router\"\r\nimport utils from \"@/utils/utils\"\r\nimport CookieBanner from \"@/components/CookieBanner\"\r\n\r\nexport default {\r\n name: \"FooterBar\",\r\n data() {\r\n return {\r\n debug: false,\r\n utils: utils\r\n };\r\n },\r\n components: {\r\n \"cookie-banner\": CookieBanner\r\n },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken();\r\n },\r\n token() {\r\n return this.$root.getToken();\r\n },\r\n version() { return this.$root.getVersion(); },\r\n build() { return this.$root.getBuild(); }\r\n },\r\n methods: {\r\n logout(e) {\r\n if (window.confirm('Are you sure you want to log out?')) {\r\n this.$router.push(\"/logout\");\r\n }\r\n }\r\n },\r\n mounted() { },\r\n components: { CookieBanner }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n.social {\r\n height: 24px;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/FooterBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',[_c('b-row',{staticClass:\"mt-2 mb-2\"},[_c('b-col',[_c('hr',{staticStyle:{\"background-color\":\"#CCC\"},attrs:{\"size\":\"1\"}})])],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('b-link',{attrs:{\"to\":\"/home\"}},[_c('img',{staticClass:\"fluid\",staticStyle:{\"max-width\":\"180px\"},attrs:{\"src\":require(\"@/art/logo.png\")}})])],1)],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"text-center\"},[_c('b-link',{attrs:{\"href\":\"https://www.facebook.com/VivaLearningOfficial/\",\"target\":\"_blank\",\"title\":\"Facebook\"}},[_c('img',{staticClass:\"social\",attrs:{\"src\":require(\"@/art/facebook_150x150.png\")}})]),_vm._v(\" \"),_c('b-link',{staticClass:\"pl-4 pr-4\",attrs:{\"href\":\"https://www.instagram.com/vivalearning/?hl=en\",\"target\":\"_blank\",\"title\":\"Instagram\"}},[_c('img',{staticClass:\"social\",attrs:{\"src\":require(\"@/art/instagram_150x150.png\")}})]),_vm._v(\" \"),_c('b-link',{attrs:{\"href\":\"https://twitter.com/vivalearning?lang=en\",\"target\":\"_blank\",\"title\":\"Twitter\"}},[_c('img',{staticClass:\"social\",attrs:{\"src\":require(\"@/art/twitter2_150x150.png\")}})])],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 mb-3\"},[_c('b-col',{staticClass:\"text-center\"},[_c('b-link',{attrs:{\"to\":\"/privacy\"}},[_vm._v(\"Privacy Policy\")]),_vm._v(\"\\n   •  \\n \"),_c('b-link',{attrs:{\"to\":\"/terms\"}},[_vm._v(\"Terms & Conditions\")])],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 mb-4\"},[_c('b-col',{staticClass:\"text-center\"},[_vm._v(\"\\n © \"+_vm._s((new Date).getFullYear())+\" Viva Learning LLC\\n \"),_c('div',[_vm._v(\"All rights reserved.\")])])],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 mb-3\"},[_c('b-col',{staticClass:\"text-center\"},[_vm._v(\"\\n Version: \"+_vm._s(_vm.version)+\"\\n   •  \\n Build: \"+_vm._s(_vm.build)+\"\\n \")])],1),_vm._v(\" \"),(_vm.debug)?_c('b-row',{staticClass:\"mt-3 mb-3\"},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\"\\n Apple: \"+_vm._s(_vm.utils.isApple())+\"\\n   •  \\n Android: \"+_vm._s(_vm.utils.isAndroid())+\"\\n \")]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\"\\n Mobile: \"+_vm._s(_vm.utils.isMobile())+\"\\n   •  \\n Desktop: \"+_vm._s(_vm.utils.isDesktop())+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('CookieBanner')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-755bd2d4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/FooterBar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-755bd2d4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./FooterBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FooterBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FooterBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-755bd2d4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./FooterBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-755bd2d4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/FooterBar.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <b-row id=\"div-menu-bar\" class=\"pt-2\">\r\n <b-col cols=\"8\" lg=\"2\">\r\n <b-link to=\"/home\"><img src=\"@/art/logo.png\" class=\"fluid\" /></b-link>\r\n </b-col>\r\n <b-col v-if=\"utils.isDesktop()\" lg=\"8\" class=\"text-center\">\r\n <b-alert :show=\"utils.isDesktop()\" variant=\"info\" dismissible class=\"mt-2\">\r\n <span class=\"font-weight-bold\">Alert: You are currently viewing our mobile site. For a better experience, proceed to the Viva Learning desktop site.</span>\r\n <br>\r\n <b-link :href=\"getDesktopUrl\">Go to the Viva Learning desktop site »</b-link>\r\n </b-alert>\r\n </b-col>\r\n <b-col cols=\"4\" lg=\"2\" class=\"text-right\">\r\n <b-icon icon=\"list\" class=\"border rounded p-2 font-weight-bold\"\r\n font-scale=\"2.8\"\r\n style=\" display:inline-block;transform:scale(1.3,1); -webkit-transform:scale(1.3,1);\"\r\n v-b-toggle.sidebar-menu\r\n ></b-icon>\r\n </b-col>\r\n </b-row>\r\n <b-sidebar\r\n id=\"sidebar-menu\"\r\n title=\"\"\r\n :backdrop-variant=\"variant2\"\r\n backdrop\r\n right\r\n shadow=\"lg\"\r\n @shown=\"shown\"\r\n >\r\n <div v-if=\"!isLoggedIn\">\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/home')\">Home</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/login')\">Login</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/webinars')\">Upcoming Live CE Webinars</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/ondemand')\">On-Demand CE Webinars</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/podcasts')\">Dental Podcasts</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/blog')\">Dental Blog</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/ebooks')\">Dental eBooks</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/tutorials')\">Product Training</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/support')\"><b-icon icon=\"life-preserver\"></b-icon> Support</div>\r\n </div>\r\n\r\n <div v-if=\"isLoggedIn\">\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/home')\">Home</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/webinars')\">Upcoming Live CE Webinars</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/ondemand')\">On-Demand CE Webinars</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/podcasts')\">Dental Podcasts</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/blog')\">Dental Blog</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/ebooks')\">Dental eBooks</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/tutorials')\">Product Training</div>\r\n <hr class=\"hr-menu\" size=1>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/seats')\">Reserved Seats</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/queue')\">Watch Later</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/exams')\">CE in Progress</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/completed')\">CE Completed</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/tutorial-history')\">Viewed Tutorials</div>\r\n <hr class=\"hr-menu\" size=1>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/account')\"><b-icon icon=\"person-fill\"></b-icon> Account</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"gotoPath('/support')\"><b-icon icon=\"life-preserver\"></b-icon> Support</div>\r\n <div class=\"div-link-menu\" @click.prevent=\"logout()\">Logout</div>\r\n </div>\r\n\r\n </b-sidebar>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"MenuSidebar\",\r\n data() {\r\n return {\r\n debug: false,\r\n utils: utils,\r\n loading: false,\r\n variantBtn: 'dark',\r\n variant2: 'dark',\r\n variant: 'dark',\r\n variants: [\r\n 'transparent',\r\n 'white',\r\n 'light',\r\n 'dark',\r\n 'primary',\r\n 'secondary',\r\n 'success',\r\n 'danger',\r\n 'warning',\r\n 'info',\r\n ]\r\n }\r\n },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken()\r\n },\r\n getDesktopUrl() {\r\n // Defined in main.js\r\n return this.$desktopUrl\r\n }\r\n },\r\n methods: {\r\n gotoPath(path) {\r\n let query = {}\r\n if (path == this.$router.currentRoute.path) {\r\n // console.log('route refresh')\r\n // use junk query var to force route refresh\r\n query = {j: (new Date).getTime()}\r\n }\r\n let route = { path: path, query: query }\r\n this.$router.push(route)\r\n },\r\n logout(e) {\r\n if (window.confirm('Are you sure you want to log out?')) {\r\n this.$router.push(\"/logout\");\r\n }\r\n },\r\n shown() { // when sidebar opened\r\n // console.log(`sidebar shown. path: ${this.$route.path} fullPath ${this.$route.fullPath}`)\r\n },\r\n hidden() {\r\n // console.log(`sidebar hidden`)\r\n }\r\n },\r\n created() {\r\n },\r\n mounted() {\r\n },\r\n beforeDestroy() {}\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n#div-menu-bar {\r\n background-color: #FFF;\r\n margin: -60px auto 10px auto;\r\n}\r\n.div-link-menu {\r\n /* background-color: #CCC; */\r\n background-color: #FFF;\r\n color: black;\r\n padding: 10px 0 10px 10%;\r\n margin: 0 0 1px 0;\r\n width: 100%;\r\n}\r\n.div-link-menu:hover {\r\n background-color: #888;\r\n}\r\n\r\n .hr-menu {\r\n background-color: #000;\r\n padding: 0;\r\n margin: 0;\r\n }\r\n\r\n.lnk-menu {\r\n background-color: #AAA;\r\n}\r\n.lnk-menu:hover {\r\n background-color: #CCC;\r\n}\r\n.lnk-menu:active {\r\n background-color: #000;\r\n}\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/MenuSidebar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-row',{staticClass:\"pt-2\",attrs:{\"id\":\"div-menu-bar\"}},[_c('b-col',{attrs:{\"cols\":\"8\",\"lg\":\"2\"}},[_c('b-link',{attrs:{\"to\":\"/home\"}},[_c('img',{staticClass:\"fluid\",attrs:{\"src\":require(\"@/art/logo.png\")}})])],1),_vm._v(\" \"),(_vm.utils.isDesktop())?_c('b-col',{staticClass:\"text-center\",attrs:{\"lg\":\"8\"}},[_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.utils.isDesktop(),\"variant\":\"info\",\"dismissible\":\"\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Alert: You are currently viewing our mobile site. For a better experience, proceed to the Viva Learning desktop site.\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('b-link',{attrs:{\"href\":_vm.getDesktopUrl}},[_vm._v(\"Go to the Viva Learning desktop site »\")])],1)],1):_vm._e(),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\",\"lg\":\"2\"}},[_c('b-icon',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar-menu\",modifiers:{\"sidebar-menu\":true}}],staticClass:\"border rounded p-2 font-weight-bold\",staticStyle:{\"display\":\"inline-block\",\"transform\":\"scale(1.3,1)\",\"-webkit-transform\":\"scale(1.3,1)\"},attrs:{\"icon\":\"list\",\"font-scale\":\"2.8\"}})],1)],1),_vm._v(\" \"),_c('b-sidebar',{attrs:{\"id\":\"sidebar-menu\",\"title\":\"\",\"backdrop-variant\":_vm.variant2,\"backdrop\":\"\",\"right\":\"\",\"shadow\":\"lg\"},on:{\"shown\":_vm.shown}},[(!_vm.isLoggedIn)?_c('div',[_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/home')}}},[_vm._v(\"Home\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/login')}}},[_vm._v(\"Login\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/webinars')}}},[_vm._v(\"Upcoming Live CE Webinars\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/ondemand')}}},[_vm._v(\"On-Demand CE Webinars\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/podcasts')}}},[_vm._v(\"Dental Podcasts\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/blog')}}},[_vm._v(\"Dental Blog\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/ebooks')}}},[_vm._v(\"Dental eBooks\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/tutorials')}}},[_vm._v(\"Product Training\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/support')}}},[_c('b-icon',{attrs:{\"icon\":\"life-preserver\"}}),_vm._v(\" Support\")],1)]):_vm._e(),_vm._v(\" \"),(_vm.isLoggedIn)?_c('div',[_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/home')}}},[_vm._v(\"Home\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/webinars')}}},[_vm._v(\"Upcoming Live CE Webinars\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/ondemand')}}},[_vm._v(\"On-Demand CE Webinars\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/podcasts')}}},[_vm._v(\"Dental Podcasts\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/blog')}}},[_vm._v(\"Dental Blog\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/ebooks')}}},[_vm._v(\"Dental eBooks\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/tutorials')}}},[_vm._v(\"Product Training\")]),_vm._v(\" \"),_c('hr',{staticClass:\"hr-menu\",attrs:{\"size\":\"1\"}}),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/seats')}}},[_vm._v(\"Reserved Seats\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/queue')}}},[_vm._v(\"Watch Later\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/exams')}}},[_vm._v(\"CE in Progress\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/completed')}}},[_vm._v(\"CE Completed\")]),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/tutorial-history')}}},[_vm._v(\"Viewed Tutorials\")]),_vm._v(\" \"),_c('hr',{staticClass:\"hr-menu\",attrs:{\"size\":\"1\"}}),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/account')}}},[_c('b-icon',{attrs:{\"icon\":\"person-fill\"}}),_vm._v(\" Account\")],1),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPath('/support')}}},[_c('b-icon',{attrs:{\"icon\":\"life-preserver\"}}),_vm._v(\" Support\")],1),_vm._v(\" \"),_c('div',{staticClass:\"div-link-menu\",on:{\"click\":function($event){$event.preventDefault();return _vm.logout()}}},[_vm._v(\"Logout\")])]):_vm._e()])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-817f4bba\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/MenuSidebar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-817f4bba\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MenuSidebar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MenuSidebar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MenuSidebar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-817f4bba\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./MenuSidebar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-817f4bba\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/MenuSidebar.vue\n// module id = null\n// module chunks = ","// Eventbus used to open sidebar.\r\n// https://alligator.io/vuejs/global-event-bus/\r\n// https://www.digitalocean.com/community/tutorials/vuejs-global-event-bus\r\n//\r\n// To use:\r\n// import EventBus from '@/plugins/eventbus'\r\n//\r\n// Send event:\r\n// EventBus.$emit('i-got-clicked', this.clickCount);\r\n//\r\n// Receive event:\r\n//\r\n// EventBus.$on('i-got-clicked', clickCount => {\r\n// console.log(`Clicks: ${clickCount}`)\r\n// })\r\n\r\nimport Vue from 'vue'\r\nconst EventBus = new Vue()\r\n\r\nexport default EventBus\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/eventbus.js","<template>\r\n <b-container v-show=\"showPlayer\" class=\"divPlayerApp\" fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" md=\"8\" class=\"divPlayerApp2\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div> </div>\r\n <div>\r\n <b-button size=\"sm\" @click.stop.prevent=\"rewind\" class=\"mr-2\"> <b-icon icon=\"arrow-counterclockwise\"></b-icon> 15s</b-button>\r\n <b-button size=\"sm\" @click.stop.prevent=\"forward\" class=\"ml-2\">15s <b-icon icon=\"arrow-clockwise\"></b-icon></b-button>\r\n </div>\r\n <div>\r\n <b-button pill size=\"sm\" @click.prevent=\"hidePlayer\">×</b-button>\r\n </div>\r\n </div>\r\n <vue-plyr ref=\"plyr\">\r\n <audio>\r\n <!-- <source src=\"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3\" type=\"audio/mp3\"/> -->\r\n </audio>\r\n </vue-plyr>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\nexport default {\r\n name: \"PodcastPlayer\",\r\n data() {\r\n return {\r\n debug: false,\r\n player: null,\r\n showPlayer: false,\r\n mp3: null // 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3'\r\n }\r\n },\r\n props: { },\r\n computed: { },\r\n // watch: {\r\n // model: {\r\n // deep: true,\r\n // handler(modelArg) { // receives updated this.model\r\n // // console.log('searchBar watcher')\r\n // // console.log(value)\r\n // // Send updated model to parent.\r\n // this.$emit('input', modelArg) // send to listeners as input event\r\n // }\r\n // }\r\n // },\r\n methods: {\r\n rewind() {\r\n if (this.player.playing) {\r\n this.player.rewind(15) // rewind 15 secs\r\n }\r\n else if (this.player.ended) {\r\n this.play(null)\r\n }\r\n },\r\n forward() {\r\n if (this.player.playing) {\r\n this.player.forward(15) // forward 15 secs\r\n }\r\n else if (this.player.ended) {\r\n this.play(null)\r\n }\r\n },\r\n play(data) {\r\n if (!this.player) {\r\n this.playerEvents()\r\n }\r\n this.showPlayer = true\r\n if (data) { // load new mp3 {mp3: '', title: ''}\r\n // console.log(`2) changing to: ${data.mp3}`)\r\n // source setter\r\n // https://github.com/sampotts/plyr#the-source-setter\r\n this.player.source = {\r\n type: 'audio',\r\n title: data.title,\r\n sources: [\r\n {\r\n src: data.mp3,\r\n type: 'audio/mp3'\r\n }\r\n ]\r\n }\r\n // console.log(this.player.source)\r\n }\r\n else {\r\n this.player.play() // in case player x'ed out\r\n }\r\n },\r\n pause() {\r\n if (this.player) {\r\n // TBD emit event to pause\r\n this.player.pause()\r\n }\r\n },\r\n playerEvents () { // load player events\r\n if (this.$refs['plyr']) {\r\n // console.log(`playerEvents called`)\r\n\r\n this.player = this.$refs['plyr'].player\r\n\r\n // 'statechange','ready','canplay','error','progress','playing','play','pause','ended'\r\n this.player.on('statechange', () => console.log('event statechange'))\r\n this.player.on('ready', () => {\r\n if (this.debug) console.log('event ready')\r\n })\r\n this.player.on('canplay', (e) => {\r\n if (this.debug) console.log('event canplay')\r\n // console.log(e)\r\n this.player.play()\r\n })\r\n // this.player.on('canplaythrough', () => console.log('event canplaythrough'))\r\n this.player.on('error', () => console.log('event error'))\r\n // this.player.on('progress', () => console.log('event progress'))\r\n this.player.on('playing', () => {\r\n // emits on first play or after pause\r\n if (this.debug) console.log('event playing')\r\n EventBus.$emit('podcast-play-event')\r\n })\r\n this.player.on('play', () => {\r\n // sent on resume after pause only\r\n if (this.debug) console.log('event play')\r\n })\r\n this.player.on('pause', () => {\r\n if (this.debug) console.log('event pause')\r\n EventBus.$emit('podcast-pause-event')\r\n })\r\n this.player.on('ended', () => {\r\n if (this.debug) console.log('event ended')\r\n })\r\n }\r\n else {\r\n console.log(`plyr not found!`)\r\n // alert(`plyr not found`)\r\n }\r\n },\r\n hidePlayer() { // when x is clicked\r\n // TBD emit event to reset podcast.vue settings\r\n // console.log(`hiding player`)\r\n this.pause()\r\n this.showPlayer = false\r\n },\r\n podcastPlay(data) {\r\n this.play(data)\r\n },\r\n podcastPause() {\r\n this.pause()\r\n }\r\n },\r\n created() {\r\n if (this.debug) console.log(`podcastPlayer created`)\r\n // setup events\r\n EventBus.$on('podcast-play', this.podcastPlay.bind(this))\r\n EventBus.$on('podcast-pause', this.podcastPause.bind(this))\r\n },\r\n mounted() {\r\n if (this.debug) console.log(`podcastPlayer mounted`)\r\n },\r\n beforeDestroy() {\r\n if (this.debug) console.log(`podcastPlayer destroyed`)\r\n EventBus.$off('podcast-play')\r\n EventBus.$off('podcast-pause')\r\n }\r\n}\r\n\r\n</script>\n\n\n// WEBPACK FOOTER //\n// src/components/PodcastPlayer.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPlayer),expression:\"showPlayer\"}],staticClass:\"divPlayerApp\",attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"divPlayerApp2\",attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('div',{staticClass:\"d-flex justify-content-between\"},[_c('div',[_vm._v(\" \")]),_vm._v(\" \"),_c('div',[_c('b-button',{staticClass:\"mr-2\",attrs:{\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.rewind($event)}}},[_c('b-icon',{attrs:{\"icon\":\"arrow-counterclockwise\"}}),_vm._v(\" 15s\")],1),_vm._v(\" \"),_c('b-button',{staticClass:\"ml-2\",attrs:{\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.forward($event)}}},[_vm._v(\"15s \"),_c('b-icon',{attrs:{\"icon\":\"arrow-clockwise\"}})],1)],1),_vm._v(\" \"),_c('div',[_c('b-button',{attrs:{\"pill\":\"\",\"size\":\"sm\"},on:{\"click\":function($event){$event.preventDefault();return _vm.hidePlayer($event)}}},[_vm._v(\"×\")])],1)]),_vm._v(\" \"),_c('vue-plyr',{ref:\"plyr\"},[_c('audio')])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-666c3c9a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PodcastPlayer.vue\n// module id = null\n// module chunks = ","<template>\r\n <div id=\"app\">\r\n <searchsidebar @show-search=\"showSearch\"></searchsidebar>\r\n <!-- <header-bar></header-bar> -->\r\n <menu-sidebar></menu-sidebar>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <router-view :key=\"$route.fullPath\"></router-view>\r\n </transition>\r\n\r\n <footer-bar></footer-bar>\r\n\r\n <podcast-player></podcast-player>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n\r\n'use strict'\r\n\r\n/* eslint-disable */\r\n// import HeaderBar from \"@/components/HeaderBar\"\r\nimport FooterBar from \"@/components/FooterBar\"\r\nimport MenuSidebar from \"@/components/MenuSidebar\"\r\nimport PodcastPlayer from \"@/components/PodcastPlayer\"\r\n\r\nlet data = {}\r\n\r\nexport default {\r\n name: \"App\",\r\n data() { return data },\r\n components: {\r\n // \"header-bar\": HeaderBar,\r\n \"footer-bar\": FooterBar,\r\n \"menu-sidebar\": MenuSidebar,\r\n \"podcast-player\": PodcastPlayer\r\n },\r\n methods: {\r\n testme() {\r\n // call using this.$parent.testme()\r\n console.log(`APP testme!!`)\r\n },\r\n showSearch() {\r\n alert('show search')\r\n },\r\n },\r\n created() {\r\n // console.log(`APP created`)\r\n },\r\n mounted() {\r\n // console.log(`APP mounted`)\r\n }\r\n}\r\n</script>\r\n\r\n<style>\r\nbody {\r\n background-color: #f3f4f9; /* light gray background */\r\n}\r\n\r\n#app {\r\n background-color: #f3f4f9; /* light gray background */\r\n font-family: \"Avenir\", Helvetica, Arial, sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n /* text-align: center; */\r\n color: #2c3e50;\r\n margin-top: 60px;\r\n}\r\n\r\n.div-section-header {\r\n /* border: 1px solid #77F; */\r\n background-color: #f3f4f9;\r\n margin: 15px 5px 10px 0;\r\n}\r\n.div-section-body {\r\n padding: 1px 0px 0px 10px;\r\n background-color: #FFF;\r\n border: 1px solid #DDD;\r\n}\r\n\r\n.div-padding {\r\n padding: 10px 5px 10px 5px;\r\n}\r\n\r\n.txt-section-title {\r\n font-weight: bold;\r\n color: black;\r\n font-size: 1.2rem;\r\n}\r\n.txt-section-subtitle {\r\n font-weight: bold;\r\n color: #3471b3;;\r\n font-size: .9rem;\r\n}\r\n\r\n.txt-blog-featured {\r\n position: relative; /* these 2 lines nudge text center up */\r\n top: -2px;\r\n padding: 2px 3px;\r\n margin-right: 4px;\r\n font-weight:normal;\r\n font-size:9px;\r\n background-color:#2165af;\r\n color:white;\r\n}\r\n\r\n.divPlayerApp {\r\n z-index: 100;\r\n background-color: #FFF;\r\n margin: 5px auto 0 auto;\r\n position: fixed;\r\n /* position: sticky; */\r\n /* left: 20px; */\r\n bottom: 0;\r\n}\r\n\r\n.divPlayerApp2 {\r\n padding: 5px 20px;\r\n border: 2px solid gray;\r\n}\r\n\r\n.page-header h2 {\r\n font-size: 1.1em;\r\n color: white;\r\n background-color: black;\r\n padding: 10px 0px;\r\n text-align: center;\r\n}\r\n\r\n.class-title {\r\n font-size: .9rem;\r\n font-weight: bold;\r\n}\r\n.class-author {\r\n font-size: .9rem;\r\n font-weight: normal;\r\n}\r\n.class-details {\r\n font-size: .71rem;\r\n}\r\n\r\n.txt-class-blurb {\r\n font-size: .95rem;\r\n}\r\n\r\n.pointer {\r\n cursor: pointer;\r\n}\r\n\r\n.red {\r\n color: red;\r\n}\r\n\r\n.reserved { /* subtitle under photo */\r\n font-size: .7rem;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n color: white;\r\n background-color: rgba(255, 0, 0, 1.0);;\r\n margin: 0 auto;\r\n max-width: 150px;\r\n}\r\n\r\n.waitlist { /* subtitle under photo */\r\n font-size: .7rem;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n color: white;\r\n background-color: #3471b3;\r\n margin: 0 auto;\r\n max-width: 150px;\r\n}\r\n\r\n.completed { /* subtitle under photo */\r\n font-size: .7rem;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n color: white;\r\n background-color: #3471b3;\r\n margin: 0 auto;\r\n max-width: 150px;\r\n}\r\n\r\n\r\n/* transitions */\r\n\r\n.fade-enter-to {\r\n opacity: 1;\r\n}\r\n\r\n.fade-enter {\r\n opacity: 0;\r\n}\r\n\r\n.fade-enter-active,\r\n.fade-leave-active {\r\n transition: opacity .4s ease-out;\r\n}\r\n\r\n.fade-leave-to {\r\n opacity: 0;\r\n}\r\n\r\n/* misc */\r\n.col,\r\n.col-1,\r\n.col-2,\r\n.col-3,\r\n.col-4,\r\n.col-5,\r\n.col-6,\r\n.col-7,\r\n.col-8,\r\n.col-9,\r\n.col-10,\r\n.col-11,\r\n.col-12 {\r\n /* border: 1px solid #ccc; */\r\n font-size: auto;\r\n}\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PodcastPlayer.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PodcastPlayer.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-666c3c9a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PodcastPlayer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PodcastPlayer.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('searchsidebar',{on:{\"show-search\":_vm.showSearch}}),_vm._v(\" \"),_c('menu-sidebar'),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('router-view',{key:_vm.$route.fullPath})],1),_vm._v(\" \"),_c('footer-bar'),_vm._v(\" \"),_c('podcast-player')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-547a821c\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-547a821c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-547a821c\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hello\"},[_c('h1',[_vm._v(_vm._s(_vm.msg))]),_vm._v(\" \"),_c('h2',[_vm._v(\"Essential Links\")]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('h2',[_vm._v(\"Ecosystem\")]),_vm._v(\" \"),_vm._m(1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"https://vuejs.org\",\"target\":\"_blank\"}},[_vm._v(\"\\n Core Docs\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"https://forum.vuejs.org\",\"target\":\"_blank\"}},[_vm._v(\"\\n Forum\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"https://chat.vuejs.org\",\"target\":\"_blank\"}},[_vm._v(\"\\n Community Chat\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"https://twitter.com/vuejs\",\"target\":\"_blank\"}},[_vm._v(\"\\n Twitter\\n \")])]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"http://vuejs-templates.github.io/webpack/\",\"target\":\"_blank\"}},[_vm._v(\"\\n Docs for This Template\\n \")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"http://router.vuejs.org/\",\"target\":\"_blank\"}},[_vm._v(\"\\n vue-router\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"http://vuex.vuejs.org/\",\"target\":\"_blank\"}},[_vm._v(\"\\n vuex\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"http://vue-loader.vuejs.org/\",\"target\":\"_blank\"}},[_vm._v(\"\\n vue-loader\\n \")])]),_vm._v(\" \"),_c('li',[_c('a',{attrs:{\"href\":\"https://github.com/vuejs/awesome-vue\",\"target\":\"_blank\"}},[_vm._v(\"\\n awesome-vue\\n \")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1e3c4e09\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1e3c4e09\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HelloWorld.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1e3c4e09\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HelloWorld.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1e3c4e09\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","<template>\r\n <div class=\"hello\">\r\n <h1>{{ msg }}</h1>\r\n <h2>Essential Links</h2>\r\n <ul>\r\n <li>\r\n <a\r\n href=\"https://vuejs.org\"\r\n target=\"_blank\"\r\n >\r\n Core Docs\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"https://forum.vuejs.org\"\r\n target=\"_blank\"\r\n >\r\n Forum\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"https://chat.vuejs.org\"\r\n target=\"_blank\"\r\n >\r\n Community Chat\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"https://twitter.com/vuejs\"\r\n target=\"_blank\"\r\n >\r\n Twitter\r\n </a>\r\n </li>\r\n <br>\r\n <li>\r\n <a\r\n href=\"http://vuejs-templates.github.io/webpack/\"\r\n target=\"_blank\"\r\n >\r\n Docs for This Template\r\n </a>\r\n </li>\r\n </ul>\r\n <h2>Ecosystem</h2>\r\n <ul>\r\n <li>\r\n <a\r\n href=\"http://router.vuejs.org/\"\r\n target=\"_blank\"\r\n >\r\n vue-router\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"http://vuex.vuejs.org/\"\r\n target=\"_blank\"\r\n >\r\n vuex\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"http://vue-loader.vuejs.org/\"\r\n target=\"_blank\"\r\n >\r\n vue-loader\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href=\"https://github.com/vuejs/awesome-vue\"\r\n target=\"_blank\"\r\n >\r\n awesome-vue\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'HelloWorld',\r\n data () {\r\n return {\r\n msg: 'HelloWorld Component!'\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\nh1, h2 {\r\n font-weight: normal;\r\n}\r\nul {\r\n list-style-type: none;\r\n padding: 0;\r\n}\r\nli {\r\n display: inline-block;\r\n margin: 0 10px;\r\n}\r\na {\r\n color: #42b983;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/HelloWorld.vue","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-row>\r\n <b-col>\r\n <div class=\"text-center\">\r\n <span class=\"txt-home-title-part1\">Free </span>\r\n <span class=\"txt-home-title-part2\">Online Dental CE</span>\r\n </div>\r\n <div class=\"mt-3 text-center txt-home-subtitle\">\r\n Earn live, interactive and self-study\r\n <br>dental continuing education credits\r\n </div>\r\n <div class=\"mt-4 text-center\">\r\n <img src=\"@/art/home_ce_laptop_icon.png\" class=\"fluid\" style=\"max-width:100px;\" />\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n\r\n <!-- LIVE WEBINARS -->\r\n <div class=\"div-section-header\" v-if=\"webinars.length !== 0\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Free Live Dental CE Webinars</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing Next {{webinars.length}} Upcoming</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link class=\"txt-section-subtitle\" to=\"/upcoming\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"(row,ix) in webinars\" ref=\"rows\" v-bind:key=\"row.classId\" class=\"mt-3 mb-3 pointer\" @click=\"gotoWebinar(ix,row)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.isReserved\" class=\"text-center reserved\">RESERVED</div>\r\n <div v-if=\"row.isWaiting\" class=\"text-center waitlist\">WAITLIST</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <span class=\"red\">\r\n <br>{{row.releaseDateUTC | prettyDateTime}}\r\n <br>{{row.credits}} CEU ({{row.creditName}})\r\n </span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- ONDEMAND WEBINARS -->\r\n <div class=\"div-section-header\" v-if=\"classes.length !== 0\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">On-Demand CE Webinars</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing {{classes.length}} Newest</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link class=\"txt-section-subtitle\" to=\"/ondemand\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"row in classes\" v-bind:key=\"row.classId\" class=\"mt-3 mb-3 pointer\" @click=\"gotoClass(row.slug)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}} - {{row.credits}} CEU ({{row.creditName}})\r\n </div>\r\n <div class=\"mt-2\" v-if=\"false\">\r\n <b-button :to=\"{ path: constants.PATHS.ON_DEMAND_BASE + '/' + row.slug }\">Enter Classroom</b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- PODCASTS -->\r\n <div class=\"div-section-header\" v-if=\"podcasts.length !== 0\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental Podcasts</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing {{podcasts.length}} Newest</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link class=\"txt-section-subtitle\" to=\"/podcasts\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"row in podcasts\" v-bind:key=\"row.id\" class=\"mt-3 mb-3 pointer\" @click=\"gotoPodcast(row.podcastShowHash,row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.companyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{row.durationSec | prettySeconds }}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div> <!-- podcasts -->\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\nimport constants from \"@/config/constants\"\r\n\r\nexport default {\r\n name: \"Home\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: 'Home',\r\n blurb: '',\r\n webinars: [],\r\n classes: [],\r\n podcasts: [],\r\n studentData: {status: false},\r\n studentHash: this.$root.getToken() || '',\r\n seats: [], // reserved seats\r\n bannerAds: [],\r\n searchModel: {\r\n path: '/search',\r\n label: 'Search All Content',\r\n catId: null,\r\n compId: null,\r\n query: null\r\n }\r\n }\r\n },\r\n props: {},\r\n computed: {},\r\n methods: {\r\n gotoWebinar(ix, row) {\r\n if (row.isReserved || row.isWaiting) {\r\n this.$router.push(`/live/${row.hash}`)\r\n }\r\n else {\r\n this.$router.push(`/reserve/${row.hash}`)\r\n }\r\n },\r\n gotoClass(hash) {\r\n this.$router.push(`${constants.PATHS.ON_DEMAND_BASE}/${hash}`)\r\n },\r\n gotoPodcast(ps,p) { // podcastShowHash, podcastHash\r\n this.$router.push(`/podcast/${ps}/${p}`)\r\n },\r\n removeFilter() {\r\n // never called on home. placeholder.\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n }\r\n },\r\n created() {\r\n service\r\n .getHome(this.studentHash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getHome`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n if (res.webinars.status) {\r\n this.webinars = res.webinars.data\r\n this.seats = res.webinars.seats\r\n // console.log('seats'); console.log(this.seats)\r\n this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = row.hasSeat && !row.isWaiting )\r\n // below works too, but doesn't need seats[]\r\n // this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = this.seats.includes(row.classId) && !row.isWaiting )\r\n }\r\n if (res.classes.status) this.classes = res.classes.data\r\n if (res.podcasts.status) this.podcasts = res.podcasts.data\r\n // this.bannerAds = res.bannerAds.bannerAds\r\n // this.blurb = `All episodes from this series (${this.podcasts.length})`\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n // this.error = this.$root.getClassId() === 0;\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.txt-home-title-part1 {\r\n font-weight: bold;\r\n color: #939393;\r\n font-size: 2rem;\r\n}\r\n.txt-home-title-part2 {\r\n /* font-weight: bold; */\r\n color: #3471b3;\r\n font-size: 1.9rem;\r\n}\r\n.txt-home-subtitle {\r\n font-weight: bold;\r\n font-size: 1.1rem;\r\n line-height: 130%;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Home.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"text-center\"},[_c('span',{staticClass:\"txt-home-title-part1\"},[_vm._v(\"Free \")]),_vm._v(\" \"),_c('span',{staticClass:\"txt-home-title-part2\"},[_vm._v(\"Online Dental CE\")])]),_vm._v(\" \"),_c('div',{staticClass:\"mt-3 text-center txt-home-subtitle\"},[_vm._v(\"\\n Earn live, interactive and self-study\\n \"),_c('br'),_vm._v(\"dental continuing education credits\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"mt-4 text-center\"},[_c('img',{staticClass:\"fluid\",staticStyle:{\"max-width\":\"100px\"},attrs:{\"src\":require(\"@/art/home_ce_laptop_icon.png\")}})])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(_vm.webinars.length !== 0)?_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Free Live Dental CE Webinars\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing Next \"+_vm._s(_vm.webinars.length)+\" Upcoming\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[_c('b-link',{staticClass:\"txt-section-subtitle\",attrs:{\"to\":\"/upcoming\"}},[_vm._v(\"Show All\")])],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.webinars),function(row,ix){return _c('b-row',{key:row.classId,ref:\"rows\",refInFor:true,staticClass:\"mt-3 mb-3 pointer\",on:{\"click\":function($event){return _vm.gotoWebinar(ix,row)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.isReserved)?_c('div',{staticClass:\"text-center reserved\"},[_vm._v(\"RESERVED\")]):_vm._e(),_vm._v(\" \"),(row.isWaiting)?_c('div',{staticClass:\"text-center waitlist\"},[_vm._v(\"WAITLIST\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('span',{staticClass:\"red\"},[_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(row.releaseDateUTC))+\"\\n \"),_c('br'),_vm._v(_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")])])])],1)}),1),_vm._v(\" \"),(_vm.classes.length !== 0)?_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"On-Demand CE Webinars\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing \"+_vm._s(_vm.classes.length)+\" Newest\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[_c('b-link',{staticClass:\"txt-section-subtitle\",attrs:{\"to\":\"/ondemand\"}},[_vm._v(\"Show All\")])],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.classes),function(row){return _c('b-row',{key:row.classId,staticClass:\"mt-3 mb-3 pointer\",on:{\"click\":function($event){return _vm.gotoClass(row.slug)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"to\":{ path: _vm.constants.PATHS.ON_DEMAND_BASE + '/' + row.slug }}},[_vm._v(\"Enter Classroom\")])],1):_vm._e()])],1)}),1),_vm._v(\" \"),(_vm.podcasts.length !== 0)?_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental Podcasts\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing \"+_vm._s(_vm.podcasts.length)+\" Newest\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[_c('b-link',{staticClass:\"txt-section-subtitle\",attrs:{\"to\":\"/podcasts\"}},[_vm._v(\"Show All\")])],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.podcasts),function(row){return _c('b-row',{key:row.id,staticClass:\"mt-3 mb-3 pointer\",on:{\"click\":function($event){return _vm.gotoPodcast(row.podcastShowHash,row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.companyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1)])],1)}),1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6c87b8cb\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Home.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6c87b8cb\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Home.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Home.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6c87b8cb\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Home.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6c87b8cb\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Home.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"busy\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"10\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Login</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n Invalid login - please try again.\r\n </b-alert>\r\n\r\n <b-form @submit.prevent=\"login\" v-if=\"show\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"person-fill\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"username\"\r\n v-model=\"form.username\"\r\n type=\"text\"\r\n required\r\n placeholder=\"Enter username\"\r\n ></b-form-input>\r\n </b-input-group>\r\n\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password\"\r\n v-model=\"form.password\"\r\n type=\"password\"\r\n required\r\n placeholder=\"Enter password\"\r\n ></b-form-input>\r\n </b-input-group>\r\n\r\n <b-button type=\"submit\" variant=\"primary\" class=\"w-100\">Login</b-button>\r\n </b-form>\r\n </b-col>\r\n </b-row>\r\n <b-row align-h=\"center\" class=\"mt-2\">\r\n <b-col cols=\"6\" sm=\"5\" lg=\"3\">\r\n <b-link :to=\"{ path: '/register', query: {rurl: rurl}}\">Create Free Account</b-link>\r\n </b-col>\r\n <b-col cols=\"6\" sm=\"5\" lg=\"2\" class=\"text-right\">\r\n <b-link to=\"/recover\">Forgot password?</b-link>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n// URL paramas\r\n// https://www.thepolyglotdeveloper.com/2017/11/pass-data-between-routes-vuejs-web-application/\r\n// import router from \"../router\";\r\n\r\nimport service from \"@/service/service\";\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"Login\",\r\n data() {\r\n return {\r\n debug: false,\r\n msg: \"Viva Account Login\",\r\n show: true,\r\n busy: false,\r\n error: false,\r\n studentHash: null,\r\n rurl: null,\r\n form: { username: \"\", password: \"\" }\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n s: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken()\r\n }\r\n },\r\n methods: {\r\n login(e) {\r\n // e.preventDefault(); // used submit.prevent\r\n this.error = false\r\n this.busy = true\r\n // console.log(`u: ${this.form.username} p: ${this.form.password}`);\r\n service\r\n .login(this.form.username, this.form.password)\r\n .then( res => {\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.studentHash = res.hash;\r\n this.$root.setToken(res.token); // logs student in\r\n this.$root.setStudentHash(this.studentHash)\r\n this.$root.setStudentName(res.title, res.firstname, res.lastname)\r\n this.$root.setStudentEmail(res.email)\r\n\r\n // smart redirect\r\n this.$router.push({ path: this.rurl })\r\n } else {\r\n // error bad login\r\n this.error = true\r\n }\r\n })\r\n .finally(e => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e)\r\n this.error = true\r\n })\r\n }\r\n },\r\n created() {\r\n // props:\r\n // /login/:s/:c\r\n // url\r\n // /login?s=sss&c=ccc\r\n\r\n // try to get from props, url param, global\r\n this.studentHash = this.s || this.$route.query.s || this.$root.getToken() || null\r\n this.rurl = this.$route.query.rurl || '/home'\r\n if (this.debug) console.log(`Login.created - s: ${this.studentHash} rurl: ${this.rurl}`);\r\n },\r\n mounted() {\r\n // console.log(`Component: ${this.type}`)\r\n // console.log(`studentId: ${this.$root.studentId}`);\r\n // console.log(`getStudentId: ${this.$root.getStudentId()}`);\r\n if (this.debug) console.log(`Login.mounted - s: ${this.studentHash} rurl: ${this.rurl}`);\r\n\r\n this.error = false\r\n this.busy = true\r\n\r\n if (this.studentHash) {\r\n service\r\n .getStudent(this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.$root.setStudentHash(res.student.hash)\r\n this.$root.setToken(res.student.hash)\r\n this.$root.setStudentName(res.student.title, res.student.firstname, res.student.lastname)\r\n this.$root.setStudentEmail(res.student.email)\r\n\r\n this.$router.push({ path: this.rurl })\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n // console.log(`finally...`)\r\n })\r\n .catch(e => console.log(e))\r\n }\r\n else {\r\n this.busy = false\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Login.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"10\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Login\")])])])],1)],1),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n Invalid login - please try again.\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.show)?_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"person-fill\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"username\",\"type\":\"text\",\"required\":\"\",\"placeholder\":\"Enter username\"},model:{value:(_vm.form.username),callback:function ($$v) {_vm.$set(_vm.form, \"username\", $$v)},expression:\"form.username\"}})],1),_vm._v(\" \"),_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password\",\"type\":\"password\",\"required\":\"\",\"placeholder\":\"Enter password\"},model:{value:(_vm.form.password),callback:function ($$v) {_vm.$set(_vm.form, \"password\", $$v)},expression:\"form.password\"}})],1),_vm._v(\" \"),_c('b-button',{staticClass:\"w-100\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Login\")])],1):_vm._e()],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-2\",attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"6\",\"sm\":\"5\",\"lg\":\"3\"}},[_c('b-link',{attrs:{\"to\":{ path: '/register', query: {rurl: _vm.rurl}}}},[_vm._v(\"Create Free Account\")])],1),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"6\",\"sm\":\"5\",\"lg\":\"2\"}},[_c('b-link',{attrs:{\"to\":\"/recover\"}},[_vm._v(\"Forgot password?\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0e45c3ae\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Login.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0e45c3ae\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Login.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Login.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Login.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0e45c3ae\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Login.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0e45c3ae\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Login.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row>\r\n <b-col>\r\n Logout\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n// URL paramas\r\n// https://www.thepolyglotdeveloper.com/2017/11/pass-data-between-routes-vuejs-web-application/\r\n// import router from \"../router\";\r\n\r\nimport service from \"@/service/service\";\r\n\r\nvar data = {\r\n msg: \"Viva Account Logout\",\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: \"\",\r\n classHash: \"\",\r\n};\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"Login\",\r\n data() {\r\n return data;\r\n },\r\n methods: {\r\n logout() {\r\n // the final use of location.reload() will kill all data except localstorage.\r\n this.$root.setToken('')\r\n this.$root.setStudentHash('')\r\n this.$root.setStudentName('')\r\n this.$root.setStudentEmail('')\r\n this.$root.setClassHash('')\r\n this.$root.setStudentId(0)\r\n localStorage.setItem('id_token',null)\r\n localStorage.clear()\r\n this.$router.push(\"/login\").then( () => { location.reload() })\r\n }\r\n },\r\n created() { this.logout() },\r\n mounted() { }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.login-header h2 {\r\n color: white;\r\n background-color: black;\r\n padding: 10px 0px;\r\n}\r\n.col {\r\n border: 1px solid #ccc;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Logout.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_vm._v(\"\\n Logout\\n \")])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-db5d2504\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Logout.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-db5d2504\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Logout.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Logout.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Logout.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-db5d2504\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Logout.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-db5d2504\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Logout.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Reset Password</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-if=\"error\" key=\"error-box\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-if=\"success\" key=\"success-box\" show variant=\"info\" class=\"mt-2\">\r\n Check inbox for your login credentials.\r\n <div class=\"mt-2 text-center\">\r\n <b-button to=\"/login\">Login</b-button>\r\n </div>\r\n </b-alert>\r\n </transition>\r\n\r\n <b-overlay :show=\"busy\">\r\n <b-form @submit.prevent=\"recover\" v-show=\"!success\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"person-fill\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"username\"\r\n v-model=\"form.username\"\r\n type=\"text\"\r\n placeholder=\"Enter username\"\r\n ></b-form-input>\r\n </b-input-group>\r\n\r\n <b-row>\r\n <b-col>\r\n <b>-- or --</b>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model=\"form.email\"\r\n type=\"email\"\r\n placeholder=\"Enter account email address\"\r\n ></b-form-input>\r\n </b-input-group>\r\n <b-button v-if=\"!busy\" key=\"notbusy\" type=\"submit\" variant=\"primary\" class=\"w-100\">Recover Login</b-button>\r\n <!-- <b-button v-else key=\"isbusy\" disabled type=\"button\" variant=\"warning\" class=\"w-100\">Please wait. Busy.</b-button> -->\r\n </b-form>\r\n </b-overlay>\r\n\r\n <div class=\"text-right mt-1\">\r\n <router-link to=\"/login\">Return to Login</router-link>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\n// URL paramas\r\n// https://www.thepolyglotdeveloper.com/2017/11/pass-data-between-routes-vuejs-web-application/\r\n// import router from \"../router\";\r\n\r\nimport service from \"../service/service\";\r\nimport utils from \"../utils/utils\";\r\n\r\nvar data = {\r\n msg: \"Recover Viva Account\",\r\n show: true,\r\n debug: false,\r\n busy: false,\r\n error: false,\r\n errorMsg: \"Unknown error.\",\r\n success: false,\r\n classHash: \"\",\r\n form: { username: \"\", email: \"\" }\r\n}\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"Recover\",\r\n data() {\r\n return data;\r\n },\r\n props: { },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken()\r\n }\r\n },\r\n methods: {\r\n recover(e) {\r\n this.error = false;\r\n this.success = false;\r\n // console.log(`u: ${this.form.username} p: ${this.form.password}`);\r\n if (this.form.username.length !== 0 || this.form.email.length !== 0) {\r\n this.busy = true;\r\n service\r\n .resetPasswordRequest(this.form.username, this.form.email)\r\n .then(res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status && res.rowCount !== 0) {\r\n let data = res.data[0]\r\n if (data.status) {\r\n this.error = false\r\n this.success = true\r\n this.form.username = ''\r\n this.form.email = ''\r\n }\r\n else {\r\n this.success = false\r\n this.errorMsg = data.msg\r\n this.error = true\r\n }\r\n // s: ()\r\n } else {\r\n // error bad recovery\r\n this.error = true;\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.busy = false\r\n this.error = true;\r\n });\r\n }\r\n else {\r\n this.success = false\r\n this.busy = false\r\n this.errorMsg = 'Provide either username or account email address.'\r\n this.error = true\r\n }\r\n }\r\n },\r\n created() {\r\n if (this.isLoggedIn) {\r\n this.$router.push(\"/logout\").then( () => { location.reload() })\r\n }\r\n },\r\n mounted() {\r\n\r\n },\r\n beforeDestroy() {\r\n this.success = false\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Recover.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Reset Password\")])])])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.error)?_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.success)?_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"info\"}},[_vm._v(\"\\n Check inbox for your login credentials.\\n \"),_c('div',{staticClass:\"mt-2 text-center\"},[_c('b-button',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Login\")])],1)]):_vm._e()],1),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.success),expression:\"!success\"}],on:{\"submit\":function($event){$event.preventDefault();return _vm.recover($event)}}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"person-fill\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"username\",\"type\":\"text\",\"placeholder\":\"Enter username\"},model:{value:(_vm.form.username),callback:function ($$v) {_vm.$set(_vm.form, \"username\", $$v)},expression:\"form.username\"}})],1),_vm._v(\" \"),_c('b-row',[_c('b-col',[_c('b',[_vm._v(\"-- or --\")])])],1),_vm._v(\" \"),_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Enter account email address\"},model:{value:(_vm.form.email),callback:function ($$v) {_vm.$set(_vm.form, \"email\", $$v)},expression:\"form.email\"}})],1),_vm._v(\" \"),(!_vm.busy)?_c('b-button',{key:\"notbusy\",staticClass:\"w-100\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Recover Login\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"text-right mt-1\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Return to Login\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-043d9224\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Recover.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-043d9224\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Recover.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Recover.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Recover.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-043d9224\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Recover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-043d9224\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Recover.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Recover Viva Account</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-if=\"error\" key=\"error-box\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-if=\"success\" key=\"success-box\" show variant=\"info\" class=\"mt-2\">\r\n Password updated. Click Login button to access your account.\r\n <div class=\"mt-2 text-center\">\r\n <b-button to=\"/login\">Login</b-button>\r\n </div>\r\n </b-alert>\r\n </transition>\r\n\r\n <b-overlay :show=\"busy\">\r\n <b-form @submit.stop.prevent=\"resetPassword\" v-show=\"!success\">\r\n\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div class=\"px-2\">\r\n <!-- New password -->\r\n <b-form-group\r\n label=\"New Password\"\r\n label-for=\"password\"\r\n label-size=\"sm\"\r\n class=\"mb-2\"\r\n label-class=\"mb-0 pt-2 font-weight-bold\"\r\n >\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password\"\r\n v-model=\"$v.passwords.password.$model\"\r\n type=\"password\"\r\n placeholder=\"New password\"\r\n :state=\"validateState('password')\"\r\n aria-describedby=\"support-password-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.required\">Password is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.minLength\">Password must be 6 characters or longer.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.regexPwd\">Invalid character(s) detected.</b-form-invalid-feedback>\r\n <!-- <b-form-invalid-feedback id=\"support-password-feedback\">Password is required.</b-form-invalid-feedback> -->\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- New password retype -->\r\n <b-form-group\r\n label=\"New Password (retype)\"\r\n label-for=\"password2\"\r\n label-size=\"sm\"\r\n class=\"mb-2\"\r\n label-class=\"mb-0 pt-2 font-weight-bold\"\r\n >\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password2\"\r\n v-model=\"$v.passwords.password2.$model\"\r\n type=\"password\"\r\n placeholder=\"New password (retype)\"\r\n :state=\"validateState('password2')\"\r\n aria-describedby=\"support-password2-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-password2-feedback\">Passwords must match.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert\r\n v-model=\"error\"\r\n key=\"error-box\"\r\n show\r\n variant=\"danger\"\r\n dismissible\r\n class=\"mt-2\"\r\n >{{errorMsg}}</b-alert>\r\n <b-alert\r\n v-model=\"success\"\r\n key=\"success-box\"\r\n show\r\n variant=\"success\"\r\n dismissible\r\n class=\"mt-2\"\r\n >Account password updated.</b-alert>\r\n </div>\r\n </transition>\r\n\r\n <div class=\"text-center mt-2 mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Update Password</b-button>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-form>\r\n </b-overlay>\r\n\r\n <div class=\"text-right mt-1\">\r\n <router-link to=\"/login\">Return to Login</router-link>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\n// URL paramas\r\n// https://www.thepolyglotdeveloper.com/2017/11/pass-data-between-routes-vuejs-web-application/\r\n// import router from \"../router\";\r\n\r\nimport service from \"../service/service\";\r\nimport utils from \"../utils/utils\";\r\n\r\nimport { validationMixin } from \"vuelidate\";\r\nimport {\r\n required,\r\n email,\r\n minLength,\r\n maxLength,\r\n between,\r\n sameAs,\r\n helpers\r\n} from \"vuelidate/lib/validators\";\r\n\r\n// Password regex: Allow alphanumeric and some special characters\r\nconst regexPwd = helpers.regex('regexPwd', /^[a-zA-Z0-9.!@#$%&*~:;?+=^_-]*$/)\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"ResetPassword\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: \"System error - contact tech support.\",\r\n loading: false,\r\n busy: false,\r\n success: false,\r\n passwords: {\r\n password: null,\r\n password2: null\r\n },\r\n msg: \"Use the form below to reset account password.\",\r\n resetToken: null\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n t: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n passwords: {\r\n password: {\r\n required,\r\n minLength: minLength(6),\r\n regexPwd\r\n },\r\n password2: {\r\n sameAsPassword: sameAs(\"password\")\r\n }\r\n }\r\n },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken()\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.passwords[name];\r\n return $dirty ? !$error : null;\r\n },\r\n resetPassword(e) {\r\n this.$v.passwords.$touch();\r\n if (this.$v.passwords.$anyError) {\r\n console.log(`Validation ERROR!!`);\r\n return;\r\n }\r\n this.error = false;\r\n this.success = false;\r\n this.busy = true;\r\n\r\n service\r\n .resetPassword(this.passwords.password, this.resetToken)\r\n .then(res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status) {\r\n this.success = true\r\n } else {\r\n this.success = false\r\n this.errorMsg = data.errorMsg || \"Service error.\"\r\n this.error = true;\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true;\r\n }) }\r\n },\r\n created() {\r\n if (this.isLoggedIn) { // must be logged out\r\n this.$router.push(\"/logout\").then( () => { location.reload() })\r\n }\r\n this.resetToken = this.t\r\n if (this.debug) console.log(`resetToken: ${this.resetToken}`)\r\n },\r\n mounted() {},\r\n beforeDestroy() {\r\n this.success = false\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/ResetPassword.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Recover Viva Account\")])])])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.error)?_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.success)?_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"info\"}},[_vm._v(\"\\n Password updated. Click Login button to access your account.\\n \"),_c('div',{staticClass:\"mt-2 text-center\"},[_c('b-button',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Login\")])],1)]):_vm._e()],1),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.success),expression:\"!success\"}],on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.resetPassword($event)}}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"px-2\"},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"New Password\",\"label-for\":\"password\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password\",\"type\":\"password\",\"placeholder\":\"New password\",\"state\":_vm.validateState('password'),\"aria-describedby\":\"support-password-feedback\"},model:{value:(_vm.$v.passwords.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.passwords.password, \"$model\", $$v)},expression:\"$v.passwords.password.$model\"}}),_vm._v(\" \"),(!_vm.$v.passwords.password.required)?_c('b-form-invalid-feedback',[_vm._v(\"Password is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.passwords.password.minLength)?_c('b-form-invalid-feedback',[_vm._v(\"Password must be 6 characters or longer.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.passwords.password.regexPwd)?_c('b-form-invalid-feedback',[_vm._v(\"Invalid character(s) detected.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"New Password (retype)\",\"label-for\":\"password2\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password2\",\"type\":\"password\",\"placeholder\":\"New password (retype)\",\"state\":_vm.validateState('password2'),\"aria-describedby\":\"support-password2-feedback\"},model:{value:(_vm.$v.passwords.password2.$model),callback:function ($$v) {_vm.$set(_vm.$v.passwords.password2, \"$model\", $$v)},expression:\"$v.passwords.password2.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-password2-feedback\"}},[_vm._v(\"Passwords must match.\")])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(_vm._s(_vm.errorMsg))]),_vm._v(\" \"),_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_vm._v(\"Account password updated.\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-2 mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Update Password\")])],1)],1)])],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"text-right mt-1\"},[_c('router-link',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Return to Login\")])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-645b554c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ResetPassword.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-645b554c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ResetPassword.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ResetPassword.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ResetPassword.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-645b554c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ResetPassword.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-645b554c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ResetPassword.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"busy\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Create Free Account</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n\r\n <b-form @submit.stop.prevent=\"register\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div class=\"px-2\">\r\n\r\n <!-- JobTitle -->\r\n <b-form-group label=\"Position\" label-for=\"position\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"position\" placeholder=\"-- select one --\" v-model.trim=\"$v.form.jobTitle.$model\" :options=\"lists.jobTitles\" :state=\"validateState('jobTitle')\" aria-describedby=\"support-position-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select position.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- AGD Number -->\r\n <b-form-group label=\"AGD Member Number (optional)\" label-for=\"zip\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"agdnumber\"\r\n v-model=\"$v.form.agdNumber.$model\"\r\n type=\"text\"\r\n placeholder=\"AGD Member Number\"\r\n :state=\"validateState('agdNumber')\"\r\n aria-describedby=\"support-agdnumber-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.agdNumber.optionalAgdNumber\">Leave blank or enter valid value.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.agdNumber.optionalAgdNumberDupe\">AGD Number already in use. Choose another.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Salutation -->\r\n <b-form-group label=\"Title\" label-for=\"title\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"title\" placeholder=\"\" v-model.trim=\"$v.form.title.$model\" :options=\"lists.titles\" :state=\"validateState('title')\" aria-describedby=\"support-title-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-title-feedback\">Select title.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- First Name -->\r\n <b-form-group label=\"First Name\" label-for=\"firstname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"firstname\"\r\n v-model.trim=\"$v.form.firstname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your first name\"\r\n :state=\"validateState('firstname')\"\r\n aria-describedby=\"support-firstname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-firstname-feedback\">First name is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Last Name -->\r\n <b-form-group label=\"Last Name\" label-for=\"lastname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"lastname\"\r\n v-model.trim=\"$v.form.lastname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your last name\"\r\n :state=\"validateState('lastname')\"\r\n aria-describedby=\"support-lastname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-lastname-feedback\">Last name is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Office -->\r\n <b-form-group label=\"Practice Name\" label-for=\"officeName\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"officeName\"\r\n v-model.trim=\"$v.form.officeName.$model\"\r\n type=\"text\"\r\n placeholder=\"Your practice name\"\r\n :state=\"validateState('officeName')\"\r\n aria-describedby=\"support-officeName-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-officeName-feedback\">This is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Address -->\r\n <b-form-group label=\"Address\" label-for=\"address\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"address\"\r\n v-model=\"$v.form.address.$model\"\r\n type=\"text\"\r\n placeholder=\"Your address\"\r\n :state=\"validateState('address')\"\r\n aria-describedby=\"support-address-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-address-feedback\">Address is required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- City -->\r\n <b-form-group label=\"City\" label-for=\"city\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"city\"\r\n v-model.trim=\"$v.form.city.$model\"\r\n type=\"text\"\r\n placeholder=\"Your city\"\r\n :state=\"validateState('city')\"\r\n aria-describedby=\"support-city-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-city-feedback\">City is a required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- State -->\r\n <b-form-group label=\"State\" label-for=\"state\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"state\" placeholder=\"\" v-model=\"$v.form.state.$model\" :options=\"lists.states\" :state=\"validateState('state')\" aria-describedby=\"support-state-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select state.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Zip -->\r\n <b-form-group label=\"Zip/Postal Code\" label-for=\"zip\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"zip\"\r\n v-model.trim=\"$v.form.zip.$model\"\r\n type=\"text\"\r\n placeholder=\"Your zip/postal code\"\r\n :state=\"validateState('zip')\"\r\n aria-describedby=\"support-zip-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-zip-feedback\">Zip/Postal Code is required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Country -->\r\n <b-form-group label=\"Country\" label-for=\"country\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"country\" placeholder=\"\" v-model=\"$v.form.country.$model\" :options=\"lists.countries\" :state=\"validateState('country')\" aria-describedby=\"support-country-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select country.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Phone -->\r\n <b-form-group label=\"Phone\" label-for=\"phone\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"phone\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"phone\"\r\n v-model.trim=\"$v.form.phone.$model\"\r\n type=\"tel\"\r\n placeholder=\"Your phone number\"\r\n :state=\"validateState('phone')\"\r\n aria-describedby=\"support-phone-feedback\"\r\n ></b-form-input>\r\n \r\n <b-form-checkbox\r\n id=\"isphonemobile\"\r\n v-model=\"isPhoneMobile\"\r\n value=\"checked\"\r\n unchecked-value=\"unchecked\"\r\n class=\"mt-2\"\r\n >\r\n Is Mobile\r\n </b-form-checkbox>\r\n <b-form-invalid-feedback id=\"support-phone-feedback\">Phone number is required.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Email -->\r\n <b-form-group label=\"Email\" label-for=\"email\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model.trim.lazy=\"$v.form.email.$model\"\r\n type=\"email\"\r\n placeholder=\"Your work email address\"\r\n :state=\"validateState('email')\"\r\n aria-describedby=\"support-email-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.required\">Email is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.email\">Enter valid email address.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.isValid\">Email already in use. Choose another.</b-form-invalid-feedback>\r\n <!-- <b-form-invalid-feedback id=\"support-email-feedback\">Work email address is required.</b-form-invalid-feedback> -->\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Username -->\r\n <b-form-group label=\"Username\" label-for=\"username\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"person\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"username\"\r\n v-model.trim.lazy=\"$v.form.username.$model\"\r\n type=\"text\"\r\n placeholder=\"Account username\"\r\n :state=\"validateState('username')\"\r\n aria-describedby=\"support-username-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.username.required\">Username is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.username.minLength\">Username has minimum length.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.username.isValid\">This username is not available. Choose another.</b-form-invalid-feedback>\r\n <!-- <b-form-invalid-feedback id=\"support-username-feedback\">Unique username is required.</b-form-invalid-feedback> -->\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Password -->\r\n <b-form-group label=\"Password\" label-for=\"password\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password\"\r\n v-model.trim=\"$v.form.password.$model\"\r\n type=\"password\"\r\n placeholder=\"Password\"\r\n :state=\"validateState('password')\"\r\n aria-describedby=\"support-password-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.password.required\">Password is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.password.minLength\">Password must be 6 characters or longer.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.password.regexPwd\">Invalid character(s) detected.</b-form-invalid-feedback>\r\n <!-- <b-form-invalid-feedback id=\"support-password-feedback\">Password is required.</b-form-invalid-feedback> -->\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Password retype -->\r\n <b-form-group label=\"Password (retype)\" label-for=\"password2\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password2\"\r\n v-model.trim=\"$v.form.password2.$model\"\r\n type=\"password\"\r\n placeholder=\"Password (retype)\"\r\n :state=\"validateState('password2')\"\r\n aria-describedby=\"support-password2-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-password2-feedback\">Passwords must match.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Cert Year -->\r\n <b-form-group label=\"Graduation Year\" label-for=\"certyear\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"certyear\" placeholder=\"\" v-model=\"$v.form.certYear.$model\" :options=\"lists.certYears\" :state=\"validateState('certYear')\" aria-describedby=\"support-certyear-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-certyear-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Gender -->\r\n <b-form-group label=\"Gender\" label-for=\"gender\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-form-radio-group\r\n id=\"gender\"\r\n name=\"gender\"\r\n v-model=\"$v.form.gender.$model\"\r\n :options=\"lists.genders\"\r\n buttons\r\n button-variant=\"info\"\r\n aria-describedby=\"support-gender-feedback\"\r\n ></b-form-radio-group>\r\n <b-input-group-append is-text>\r\n <!-- <b-icon icon=\"envelope\"></b-icon> -->\r\n {{viewGender}}\r\n </b-input-group-append>\r\n <b-form-invalid-feedback id=\"support-gender-feedback\">Required field.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Age Range -->\r\n <b-form-group label=\"Age Range\" label-for=\"agerange\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"agerange\" placeholder=\"\" v-model=\"$v.form.ageRange.$model\" :options=\"lists.ageRanges\" :state=\"validateState('ageRange')\" aria-describedby=\"support-agerange-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-agerange-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Office Size -->\r\n <b-form-group label=\"Office Size\" label-for=\"officesize\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"officesize\" placeholder=\"\" v-model=\"$v.form.officeSize.$model\" :options=\"lists.officeSizes\" :state=\"validateState('officeSize')\" aria-describedby=\"support-officesize-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-officesize-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Source -->\r\n <b-form-group label=\"Referred By\" label-for=\"sourceheard\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"sourceheard\" placeholder=\"\" v-model=\"$v.form.sourceHeard.$model\" :options=\"lists.sourceHeard\" :state=\"validateState('sourceHeard')\" aria-describedby=\"support-sourceheard-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-sourceheard-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-model=\"success\" key=\"success-box\" show variant=\"success\" dismissible class=\"mt-2\">\r\n Account created.\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <b-card v-if=\"!success\" bg-variant=\"light\" class=\"mb-2\">\r\n By clicking the Create Account button below you agree to the CE Pass Terms & Conditions.\r\n <div class=\"text-center mt-2 mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Create Account</b-button>\r\n </div>\r\n </b-card>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-form>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\n// URL paramas\r\n// https://www.thepolyglotdeveloper.com/2017/11/pass-data-between-routes-vuejs-web-application/\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, email, minLength, maxLength, between, sameAs, helpers } from 'vuelidate/lib/validators'\r\n\r\n// Allow alphanumeric and some special characters\r\nconst regexPwd = helpers.regex('regexPwd', /^[a-zA-Z0-9.!@#$%&*~:;?+=^_-]*$/)\r\n\r\n// optional agdNumber validator\r\n// https://vuelidate.js.org/#sub-optional-validator\r\n// If provided - expecting number between 4 and 10 characters.\r\nconst optionalAgdNumber = (value) => !helpers.req(value) || (!isNaN(Number(value)) && value.length > 4 && value.length < 10)\r\nconst optionalAgdNumberDupe = function (value) {\r\n if (!helpers.req(value)) { // optional\r\n return true\r\n }\r\n return service.validateAgdNumber(this.form.hash, value)\r\n }\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"Register\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: 'System error - contact tech support.',\r\n loading: false,\r\n busy: false,\r\n success: false,\r\n msg: 'Use this section to update your account profile.',\r\n rurl: '',\r\n lists: {\r\n jobTitles: [utils.initSelectArray()],\r\n titles: [utils.initSelectArray()],\r\n states: [utils.initSelectArray()],\r\n countries: [utils.initSelectArray()],\r\n gradYears: [ ],\r\n genders: ['F','M','O'],\r\n ageRanges: [utils.initSelectArray()],\r\n officeSizes: [utils.initSelectArray()],\r\n sourceHeard: [utils.initSelectArray()] // used for reg only\r\n },\r\n isPhoneMobile: 'checked',\r\n form: {\r\n jobTitle: null,\r\n title: null,\r\n firstname: null,\r\n lastname: null,\r\n officeName: null,\r\n address: null,\r\n city: null,\r\n state: null,\r\n zip: null,\r\n country: 'US',\r\n phone: null,\r\n isPhoneMobile: true,\r\n email: null,\r\n username: null,\r\n password: null,\r\n password2: null,\r\n agdNumber: null,\r\n certYear: null,\r\n gender: null,\r\n ageRange: null,\r\n officeSize: null,\r\n sourceHeard: null\r\n }\r\n }\r\n },\r\n props: { },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n jobTitle: {\r\n required\r\n },\r\n title: {\r\n required\r\n },\r\n firstname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n lastname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n officeName: {\r\n required,\r\n minLength: minLength(4)\r\n },\r\n address: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n city: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n state: {\r\n required\r\n },\r\n zip: {\r\n required,\r\n minLength: minLength(5)\r\n },\r\n country: {\r\n required\r\n },\r\n phone: {\r\n required,\r\n minLength: minLength(10)\r\n },\r\n email: {\r\n required,\r\n email,\r\n isValid(value) {\r\n if (value === '') return true // handled by required\r\n // service returns promise that resolves to true\r\n // if email can be used.\r\n return service.validateEmail('', value)\r\n }\r\n },\r\n username: {\r\n required,\r\n minLength: minLength(6),\r\n isValid(value) {\r\n if (value === '') return true // handled by required\r\n // if ($v.form.username.$error) return true ($v not defined.)\r\n\r\n // service returns promise that resolves to true\r\n // if username can be used.\r\n return service.validateUsername('', value)\r\n }\r\n },\r\n password: {\r\n required,\r\n minLength: minLength(6),\r\n regexPwd\r\n },\r\n password2: {\r\n sameAsPassword: sameAs('password')\r\n },\r\n agdNumber: {\r\n optionalAgdNumber,\r\n optionalAgdNumberDupe\r\n },\r\n certYear: {\r\n required\r\n },\r\n gender: {\r\n required\r\n },\r\n ageRange: {\r\n required\r\n },\r\n officeSize: {\r\n required\r\n },\r\n sourceHeard: {\r\n required\r\n }\r\n }\r\n },\r\n computed: {\r\n viewGender() {\r\n if(this.form.gender == 'M') return 'Male'\r\n if(this.form.gender == 'F') return 'Female'\r\n if(this.form.gender == 'O') return 'Other'\r\n return 'Select One'\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n setUsername(value) {\r\n // can be used if input form uses @change\r\n this.form.username = value\r\n this.$v.form.username.$touch()\r\n },\r\n register(e) {\r\n\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n\r\n this.form.isPhoneMobile = (this.isPhoneMobile === 'checked')\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n service\r\n .register(this.form)\r\n .then( res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status && res.student && res.student.status) {\r\n let student = res.student\r\n // Login and go to smart redirect\r\n this.studentHash = res.hash;\r\n this.$root.setToken(student.hash); // logs student in\r\n this.$root.setStudentHash(student.hash)\r\n this.$root.setStudentName(student.title, student.firstname, student.lastname)\r\n this.$root.setStudentEmail(student.email)\r\n\r\n // Show success message 2 mins then go to rurl.\r\n window.setTimeout( (function () {\r\n console.log(`Forwarding to: ${this.rurl}`)\r\n this.$router.push({ path: this.rurl })\r\n }).bind(this), 2000)\r\n\r\n this.error = false\r\n this.success = true\r\n\r\n // TBD re-init whole form\r\n // this.form.username = ''\r\n // this.form.email = ''\r\n // this.form.password = ''\r\n\r\n } else {\r\n this.success = false\r\n this.errorMsg = res.errorMsg || 'System Error from Register Service.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.busy = false\r\n this.error = true\r\n })\r\n },\r\n setCertYears() {\r\n const MIN_YEAR = (new Date).getFullYear() - 90 // 90 years ago\r\n const MAX_YEAR = (new Date).getFullYear() + 10 // future graduates\r\n this.lists.certYears = []\r\n for(let ix=MIN_YEAR; ix <= MAX_YEAR; ix++) {\r\n this.lists.certYears.push(ix.toString())\r\n }\r\n }\r\n },\r\n created() {\r\n this.setCertYears()\r\n this.rurl = this.$route.query.rurl || '/home'\r\n this.busy = true\r\n service\r\n .getAccountItems(null)\r\n .then(\r\n (res => {\r\n // console.log(`back from getAccountItems!`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.lists.jobTitles = this.lists.jobTitles.concat(utils.prepSelectArray(res.jobTitles))\r\n this.lists.titles = this.lists.titles.concat(utils.prepSelectArray(res.titles))\r\n this.lists.states = this.lists.states.concat(res.states)\r\n this.lists.countries = this.lists.countries.concat(res.countries)\r\n this.lists.ageRanges = this.lists.ageRanges.concat(utils.prepSelectArray(res.ageRanges))\r\n this.lists.officeSizes = this.lists.officeSizes.concat(utils.prepSelectArray(res.officeSizes))\r\n this.lists.sourceHeard = this.lists.sourceHeard.concat(utils.prepSelectArray(res.sourceHeard))\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n })\r\n },\r\n mounted() { console.log('Register Mounted') },\r\n beforeDestroy() { console.log(`Register beforeDestroy`) }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Register.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Create Free Account\")])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.register($event)}}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"px-2\"},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Position\",\"label-for\":\"position\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"position\",\"placeholder\":\"-- select one --\",\"options\":_vm.lists.jobTitles,\"state\":_vm.validateState('jobTitle'),\"aria-describedby\":\"support-position-feedback\"},model:{value:(_vm.$v.form.jobTitle.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.jobTitle, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.jobTitle.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select position.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"AGD Member Number (optional)\",\"label-for\":\"zip\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"agdnumber\",\"type\":\"text\",\"placeholder\":\"AGD Member Number\",\"state\":_vm.validateState('agdNumber'),\"aria-describedby\":\"support-agdnumber-feedback\"},model:{value:(_vm.$v.form.agdNumber.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.agdNumber, \"$model\", $$v)},expression:\"$v.form.agdNumber.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.agdNumber.optionalAgdNumber)?_c('b-form-invalid-feedback',[_vm._v(\"Leave blank or enter valid value.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.agdNumber.optionalAgdNumberDupe)?_c('b-form-invalid-feedback',[_vm._v(\"AGD Number already in use. Choose another.\")]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Title\",\"label-for\":\"title\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"title\",\"placeholder\":\"\",\"options\":_vm.lists.titles,\"state\":_vm.validateState('title'),\"aria-describedby\":\"support-title-feedback\"},model:{value:(_vm.$v.form.title.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.title, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.title.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-title-feedback\"}},[_vm._v(\"Select title.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"First Name\",\"label-for\":\"firstname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"firstname\",\"type\":\"text\",\"placeholder\":\"Your first name\",\"state\":_vm.validateState('firstname'),\"aria-describedby\":\"support-firstname-feedback\"},model:{value:(_vm.$v.form.firstname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.firstname, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.firstname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-firstname-feedback\"}},[_vm._v(\"First name is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Last Name\",\"label-for\":\"lastname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"lastname\",\"type\":\"text\",\"placeholder\":\"Your last name\",\"state\":_vm.validateState('lastname'),\"aria-describedby\":\"support-lastname-feedback\"},model:{value:(_vm.$v.form.lastname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.lastname, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.lastname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-lastname-feedback\"}},[_vm._v(\"Last name is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Practice Name\",\"label-for\":\"officeName\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"officeName\",\"type\":\"text\",\"placeholder\":\"Your practice name\",\"state\":_vm.validateState('officeName'),\"aria-describedby\":\"support-officeName-feedback\"},model:{value:(_vm.$v.form.officeName.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.officeName, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.officeName.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-officeName-feedback\"}},[_vm._v(\"This is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Address\",\"label-for\":\"address\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"address\",\"type\":\"text\",\"placeholder\":\"Your address\",\"state\":_vm.validateState('address'),\"aria-describedby\":\"support-address-feedback\"},model:{value:(_vm.$v.form.address.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.address, \"$model\", $$v)},expression:\"$v.form.address.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-address-feedback\"}},[_vm._v(\"Address is required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"City\",\"label-for\":\"city\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"city\",\"type\":\"text\",\"placeholder\":\"Your city\",\"state\":_vm.validateState('city'),\"aria-describedby\":\"support-city-feedback\"},model:{value:(_vm.$v.form.city.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.city, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.city.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-city-feedback\"}},[_vm._v(\"City is a required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"State\",\"label-for\":\"state\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"state\",\"placeholder\":\"\",\"options\":_vm.lists.states,\"state\":_vm.validateState('state'),\"aria-describedby\":\"support-state-feedback\"},model:{value:(_vm.$v.form.state.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.state, \"$model\", $$v)},expression:\"$v.form.state.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select state.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Zip/Postal Code\",\"label-for\":\"zip\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"zip\",\"type\":\"text\",\"placeholder\":\"Your zip/postal code\",\"state\":_vm.validateState('zip'),\"aria-describedby\":\"support-zip-feedback\"},model:{value:(_vm.$v.form.zip.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.zip, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.zip.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-zip-feedback\"}},[_vm._v(\"Zip/Postal Code is required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Country\",\"label-for\":\"country\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"country\",\"placeholder\":\"\",\"options\":_vm.lists.countries,\"state\":_vm.validateState('country'),\"aria-describedby\":\"support-country-feedback\"},model:{value:(_vm.$v.form.country.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.country, \"$model\", $$v)},expression:\"$v.form.country.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select country.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Phone\",\"label-for\":\"phone\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"phone\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"phone\",\"type\":\"tel\",\"placeholder\":\"Your phone number\",\"state\":_vm.validateState('phone'),\"aria-describedby\":\"support-phone-feedback\"},model:{value:(_vm.$v.form.phone.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.phone, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.phone.$model\"}}),_vm._v(\"\\n   \\n \"),_c('b-form-checkbox',{staticClass:\"mt-2\",attrs:{\"id\":\"isphonemobile\",\"value\":\"checked\",\"unchecked-value\":\"unchecked\"},model:{value:(_vm.isPhoneMobile),callback:function ($$v) {_vm.isPhoneMobile=$$v},expression:\"isPhoneMobile\"}},[_vm._v(\"\\n Is Mobile\\n \")]),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-phone-feedback\"}},[_vm._v(\"Phone number is required.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Email\",\"label-for\":\"email\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Your work email address\",\"state\":_vm.validateState('email'),\"aria-describedby\":\"support-email-feedback\"},model:{value:(_vm.$v.form.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.email.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.email.required)?_c('b-form-invalid-feedback',[_vm._v(\"Email is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.email)?_c('b-form-invalid-feedback',[_vm._v(\"Enter valid email address.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.isValid)?_c('b-form-invalid-feedback',[_vm._v(\"Email already in use. Choose another.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Username\",\"label-for\":\"username\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"person\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"username\",\"type\":\"text\",\"placeholder\":\"Account username\",\"state\":_vm.validateState('username'),\"aria-describedby\":\"support-username-feedback\"},model:{value:(_vm.$v.form.username.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.username, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.username.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.username.required)?_c('b-form-invalid-feedback',[_vm._v(\"Username is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.username.minLength)?_c('b-form-invalid-feedback',[_vm._v(\"Username has minimum length.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.username.isValid)?_c('b-form-invalid-feedback',[_vm._v(\"This username is not available. Choose another.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Password\",\"label-for\":\"password\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password\",\"type\":\"password\",\"placeholder\":\"Password\",\"state\":_vm.validateState('password'),\"aria-describedby\":\"support-password-feedback\"},model:{value:(_vm.$v.form.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.password, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.password.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.password.required)?_c('b-form-invalid-feedback',[_vm._v(\"Password is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.password.minLength)?_c('b-form-invalid-feedback',[_vm._v(\"Password must be 6 characters or longer.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.password.regexPwd)?_c('b-form-invalid-feedback',[_vm._v(\"Invalid character(s) detected.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Password (retype)\",\"label-for\":\"password2\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password2\",\"type\":\"password\",\"placeholder\":\"Password (retype)\",\"state\":_vm.validateState('password2'),\"aria-describedby\":\"support-password2-feedback\"},model:{value:(_vm.$v.form.password2.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.password2, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.password2.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-password2-feedback\"}},[_vm._v(\"Passwords must match.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Graduation Year\",\"label-for\":\"certyear\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"certyear\",\"placeholder\":\"\",\"options\":_vm.lists.certYears,\"state\":_vm.validateState('certYear'),\"aria-describedby\":\"support-certyear-feedback\"},model:{value:(_vm.$v.form.certYear.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.certYear, \"$model\", $$v)},expression:\"$v.form.certYear.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-certyear-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Gender\",\"label-for\":\"gender\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-form-radio-group',{attrs:{\"id\":\"gender\",\"name\":\"gender\",\"options\":_vm.lists.genders,\"buttons\":\"\",\"button-variant\":\"info\",\"aria-describedby\":\"support-gender-feedback\"},model:{value:(_vm.$v.form.gender.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.gender, \"$model\", $$v)},expression:\"$v.form.gender.$model\"}}),_vm._v(\" \"),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.viewGender)+\"\\n \")]),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-gender-feedback\"}},[_vm._v(\"Required field.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Age Range\",\"label-for\":\"agerange\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"agerange\",\"placeholder\":\"\",\"options\":_vm.lists.ageRanges,\"state\":_vm.validateState('ageRange'),\"aria-describedby\":\"support-agerange-feedback\"},model:{value:(_vm.$v.form.ageRange.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.ageRange, \"$model\", $$v)},expression:\"$v.form.ageRange.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-agerange-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Office Size\",\"label-for\":\"officesize\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"officesize\",\"placeholder\":\"\",\"options\":_vm.lists.officeSizes,\"state\":_vm.validateState('officeSize'),\"aria-describedby\":\"support-officesize-feedback\"},model:{value:(_vm.$v.form.officeSize.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.officeSize, \"$model\", $$v)},expression:\"$v.form.officeSize.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-officesize-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Referred By\",\"label-for\":\"sourceheard\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"sourceheard\",\"placeholder\":\"\",\"options\":_vm.lists.sourceHeard,\"state\":_vm.validateState('sourceHeard'),\"aria-describedby\":\"support-sourceheard-feedback\"},model:{value:(_vm.$v.form.sourceHeard.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.sourceHeard, \"$model\", $$v)},expression:\"$v.form.sourceHeard.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-sourceheard-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]),_vm._v(\" \"),_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_vm._v(\"\\n Account created.\\n \")])],1)]),_vm._v(\" \"),(!_vm.success)?_c('b-card',{staticClass:\"mb-2\",attrs:{\"bg-variant\":\"light\"}},[_vm._v(\"\\n By clicking the Create Account button below you agree to the CE Pass Terms & Conditions.\\n \"),_c('div',{staticClass:\"text-center mt-2 mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Create Account\")])],1)]):_vm._e()],1)])],1)],1)],1)])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-533cadb6\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Register.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-533cadb6\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Register.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Register.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Register.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-533cadb6\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Register.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-533cadb6\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Register.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n\r\n <b-overlay :show=\"busy\">\r\n\r\n <div>\r\n <span class=\"font-weight-bold\">Your Account</span>\r\n </div>\r\n\r\n <b-row>\r\n <b-col cols=\"6\" md=\"3\">\r\n Username\r\n </b-col>\r\n <b-col cols=\"6\" md=\"9\">\r\n <b>{{form.username}}</b>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"6\" md=\"3\">\r\n Name\r\n </b-col>\r\n <b-col cols=\"6\" md=\"9\">\r\n <b>{{form.firstname+' '+form.lastname}}</b>\r\n </b-col>\r\n </b-row>\r\n\r\n <div class=\"mt-2\">\r\n <span class=\"font-weight-bold\">CE Quick Glance</span>\r\n </div>\r\n <b-row>\r\n <b-col cols=\"6\" md=\"3\">\r\n Self-Study\r\n </b-col>\r\n <b-col cols=\"6\" md=\"9\">\r\n <b>{{summary.ceHome}} credits</b>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"6\" md=\"3\">\r\n Live interactive\r\n </b-col>\r\n <b-col cols=\"6\" md=\"9\">\r\n <b>{{summary.ceLive}} credits</b>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"6\" md=\"3\">\r\n Total\r\n </b-col>\r\n <b-col cols=\"6\" md=\"9\">\r\n <b>{{summary.ceTotal}} credits</b>\r\n </b-col>\r\n </b-row>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-if=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-if=\"success\" key=\"success-box\" show variant=\"success\" dismissible class=\"mt-2\">\r\n Check email inbox for CE report.\r\n </b-alert>\r\n </transition>\r\n\r\n <b-form @submit.stop.prevent=\"submit\" class=\"mt-2\">\r\n <div class=\"text-center mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Send CE Report</b-button>\r\n </div>\r\n </b-form>\r\n\r\n </b-overlay>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"AccountHome\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: 'System error - contact tech support.',\r\n loading: false,\r\n busy: false,\r\n success: false,\r\n msg: '',\r\n checkbox: null,\r\n form: this.value,\r\n summary: { ceHome: 0.0, ceLive: 0.0, ceTotal: 0.0}\r\n }\r\n },\r\n props: {\r\n // student object. the v-model for the component\r\n value: {\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n watch: {\r\n form: {\r\n deep: true,\r\n handler(vmodel) { // receives updated this.form\r\n // console.log('watcher')\r\n // console.log(vmodel)\r\n // Send updated model to parent.\r\n this.$emit('input', vmodel) // send to listeners as input event\r\n }\r\n }\r\n },\r\n computed: {},\r\n methods: {\r\n submit(e) {\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true;\r\n\r\n service\r\n .sendReport(this.form.hash)\r\n .then( res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status) {\r\n this.success = true\r\n }\r\n else {\r\n this.success = false\r\n this.errorMsg = data.msg || 'Service error.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e)\r\n this.error = true\r\n })\r\n }\r\n },\r\n created() {\r\n\r\n if (this.form.hash.length !== 0) {\r\n this.busy = true\r\n service\r\n .getAccountHome(this.form.hash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getAccountHome!`)\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // TBD populate stuff\r\n this.summary = res.summary\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false;\r\n // console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n },\r\n mounted() {\r\n console.log(`AccountHome mounted`)\r\n },\r\n beforeDestroy() {\r\n console.log(`AccountHome beforeDestroy`)\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/AccountHome.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"Your Account\")])]),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_vm._v(\"\\n Username\\n \")]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"9\"}},[_c('b',[_vm._v(_vm._s(_vm.form.username))])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_vm._v(\"\\n Name\\n \")]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"9\"}},[_c('b',[_vm._v(_vm._s(_vm.form.firstname+' '+_vm.form.lastname))])])],1),_vm._v(\" \"),_c('div',{staticClass:\"mt-2\"},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(\"CE Quick Glance\")])]),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_vm._v(\"\\n Self-Study\\n \")]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"9\"}},[_c('b',[_vm._v(_vm._s(_vm.summary.ceHome)+\" credits\")])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_vm._v(\"\\n Live interactive\\n \")]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"9\"}},[_c('b',[_vm._v(_vm._s(_vm.summary.ceLive)+\" credits\")])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_vm._v(\"\\n Total\\n \")]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"6\",\"md\":\"9\"}},[_c('b',[_vm._v(_vm._s(_vm.summary.ceTotal)+\" credits\")])])],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.error)?_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.success)?_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"}},[_vm._v(\"\\n Check email inbox for CE report.\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('b-form',{staticClass:\"mt-2\",on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"text-center mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Send CE Report\")])],1)])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6691e7ca\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AccountHome.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6691e7ca\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AccountHome.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountHome.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountHome.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6691e7ca\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AccountHome.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6691e7ca\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AccountHome.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n\r\n <div class=\"mb-2\">\r\n {{ msg }}\r\n </div>\r\n\r\n <b-overlay :show=\"busy\">\r\n <div class=\"div-section-body\">\r\n\r\n <b-form @submit.stop.prevent=\"submit\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div class=\"px-2\">\r\n\r\n <!-- JobTitle -->\r\n <b-form-group label=\"Position\" label-for=\"position\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"position\" placeholder=\"\" v-model=\"$v.form.jobTitle.$model\" :options=\"lists.jobTitles\" :state=\"validateState('jobTitle')\" aria-describedby=\"support-position-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select position.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- AGD Number -->\r\n <b-form-group label=\"AGD Member Number (optional)\" label-for=\"zip\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"agdnumber\"\r\n v-model=\"$v.form.agdNumber.$model\"\r\n type=\"text\"\r\n placeholder=\"AGD Member Number\"\r\n :state=\"validateState('agdNumber')\"\r\n aria-describedby=\"support-agdnumber-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.agdNumber.optionalAgdNumber\">Leave blank or enter valid value.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.agdNumber.optionalAgdNumberDupe\">AGD Number already in use. Choose another.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Salutation -->\r\n <b-form-group label=\"Title\" label-for=\"title\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"title\" placeholder=\"-- select one --\" v-model=\"$v.form.title.$model\" :options=\"lists.titles\" :state=\"validateState('title')\" aria-describedby=\"support-title-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-title-feedback\">Select title.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- First Name -->\r\n <b-form-group label=\"First Name\" label-for=\"firstname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"firstname\"\r\n v-model=\"$v.form.firstname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your first name\"\r\n :state=\"validateState('firstname')\"\r\n aria-describedby=\"support-firstname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-firstname-feedback\">First name is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Last Name -->\r\n <b-form-group label=\"Last Name\" label-for=\"lastname\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"lastname\"\r\n v-model=\"$v.form.lastname.$model\"\r\n type=\"text\"\r\n placeholder=\"Your last name\"\r\n :state=\"validateState('lastname')\"\r\n aria-describedby=\"support-lastname-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-lastname-feedback\">Last name is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Office -->\r\n <b-form-group label=\"Practice Name\" label-for=\"officeName\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"officeName\"\r\n v-model=\"$v.form.officeName.$model\"\r\n type=\"text\"\r\n placeholder=\"Your practice name\"\r\n :state=\"validateState('officeName')\"\r\n aria-describedby=\"support-officeName-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-officeName-feedback\">This is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Address -->\r\n <b-form-group label=\"Address\" label-for=\"address\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"address\"\r\n v-model=\"$v.form.address.$model\"\r\n type=\"text\"\r\n placeholder=\"Your address\"\r\n :state=\"validateState('address')\"\r\n aria-describedby=\"support-address-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-address-feedback\">Address is required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- City -->\r\n <b-form-group label=\"City\" label-for=\"city\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"city\"\r\n v-model=\"$v.form.city.$model\"\r\n type=\"text\"\r\n placeholder=\"Your city\"\r\n :state=\"validateState('city')\"\r\n aria-describedby=\"support-city-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-city-feedback\">City is a required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- State -->\r\n <b-form-group label=\"State\" label-for=\"state\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"state\" placeholder=\"\" v-model=\"$v.form.state.$model\" :options=\"lists.states\" :state=\"validateState('state')\" aria-describedby=\"support-state-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select state.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Zip -->\r\n <b-form-group label=\"Zip/Postal Code\" label-for=\"zip\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"zip\"\r\n v-model=\"$v.form.zip.$model\"\r\n type=\"text\"\r\n placeholder=\"Your zip/postal code\"\r\n :state=\"validateState('zip')\"\r\n aria-describedby=\"support-zip-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-zip-feedback\">Zip/Postal Code is required field.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Country -->\r\n <b-form-group label=\"Country\" label-for=\"country\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"country\" placeholder=\"\" v-model=\"$v.form.country.$model\" :options=\"lists.countries\" :state=\"validateState('country')\" aria-describedby=\"support-country-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-position-feedback\">Select country.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Phone -->\r\n <b-form-group label=\"Phone\" label-for=\"phone\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"phone\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"phone\"\r\n v-model=\"$v.form.phone.$model\"\r\n type=\"tel\"\r\n placeholder=\"Your phone number\"\r\n :state=\"validateState('phone')\"\r\n aria-describedby=\"support-phone-feedback\"\r\n ></b-form-input>\r\n \r\n <b-form-checkbox\r\n id=\"isphonemobile\"\r\n v-model=\"isPhoneMobile\"\r\n value=\"checked\"\r\n unchecked-value=\"unchecked\"\r\n class=\"mt-2\"\r\n >\r\n Is Mobile\r\n </b-form-checkbox>\r\n <b-form-invalid-feedback id=\"support-phone-feedback\">Phone number is required.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Email -->\r\n <b-form-group label=\"Work Email\" label-for=\"email\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model=\"$v.form.email.$model\"\r\n type=\"email\"\r\n placeholder=\"Your work email address\"\r\n :state=\"validateState('email')\"\r\n aria-describedby=\"support-email-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.required\">Email is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.email\">Enter valid email address.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.isValid\">Email already in use. Choose another.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Email Home -->\r\n <b-form-group label=\"Home Email\" label-for=\"email2\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email2\"\r\n v-model=\"$v.form.email2.$model\"\r\n type=\"email\"\r\n placeholder=\"Your home email address\"\r\n :state=\"validateState('email2')\"\r\n aria-describedby=\"support-email2-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email2.email\">Enter valid email address.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Cert Year -->\r\n <b-form-group label=\"Graduation Year\" label-for=\"certyear\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"certyear\" placeholder=\"\" v-model=\"$v.form.certYear.$model\" :options=\"lists.certYears\" :state=\"validateState('certYear')\" aria-describedby=\"support-certyear-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-certyear-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Gender -->\r\n <b-form-group label=\"Gender\" label-for=\"gender\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-form-radio-group\r\n id=\"gender\"\r\n v-model=\"$v.form.gender.$model\"\r\n :options=\"lists.genders\"\r\n buttons\r\n button-variant=\"info\"\r\n name=\"gender\"\r\n aria-describedby=\"support-gender-feedback\"\r\n ></b-form-radio-group>\r\n <b-input-group-append is-text>\r\n <!-- <b-icon icon=\"envelope\"></b-icon> -->\r\n {{viewGender}}\r\n </b-input-group-append>\r\n <b-form-invalid-feedback id=\"support-gender-feedback\">Required field.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Age Range -->\r\n <b-form-group label=\"Age Range\" label-for=\"agerange\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"agerange\" placeholder=\"\" v-model=\"$v.form.ageRange.$model\" :options=\"lists.ageRanges\" :state=\"validateState('ageRange')\" aria-describedby=\"support-agerange-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-agerange-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Office Size -->\r\n <b-form-group label=\"Office Size\" label-for=\"officesize\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"officesize\" placeholder=\"\" v-model=\"$v.form.officeSize.$model\" :options=\"lists.officeSizes\" :state=\"validateState('officeSize')\" aria-describedby=\"support-officesize-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-officesize-feedback\">Select one.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-model=\"success\" key=\"success-box\" show variant=\"success\" dismissible class=\"mt-2\">\r\n Profile updated.\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <div class=\"text-center mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Update Profile</b-button>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-form>\r\n </div>\r\n </b-overlay>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, email, minLength, maxLength, between, helpers } from 'vuelidate/lib/validators'\r\n\r\n// optional agdNumber validator\r\n// https://vuelidate.js.org/#sub-optional-validator\r\n// If provided - expecting number between 4 and 10 characters.\r\nconst optionalAgdNumber = (value) => !helpers.req(value) || (!isNaN(Number(value)) && value.length > 4 && value.length < 10)\r\nconst optionalAgdNumberDupe = function (value) {\r\n if (!helpers.req(value)) { // optional\r\n return true\r\n }\r\n return service.validateAgdNumber(this.form.hash, value)\r\n }\r\n// Using v-model with custom components\r\n// https://stackoverflow.com/questions/49072799/vuejs-how-to-pass-an-object-as-prop-and-have-the-component-update-sub-objects\r\n\r\nexport default {\r\n name: \"AccountProfile\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: 'System error - contact tech support.',\r\n loading: false,\r\n busy: false,\r\n success: false,\r\n msg: 'Use this section to update your account profile. ',\r\n lists: {\r\n jobTitles: [utils.initSelectArray()],\r\n titles: [utils.initSelectArray()],\r\n states: [utils.initSelectArray()],\r\n countries: [utils.initSelectArray()],\r\n gradYears: [],\r\n genders: ['F','M','O'],\r\n ageRanges: [utils.initSelectArray()],\r\n officeSizes: [utils.initSelectArray()],\r\n // sourceHeard: [] // used for reg only\r\n },\r\n isPhoneMobile: 'checked',\r\n form: this.value // prop from Account via profile service\r\n }\r\n },\r\n props: {\r\n // student object. the v-model for the component\r\n value: {\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n jobTitle: {\r\n required\r\n },\r\n title: {\r\n required\r\n },\r\n firstname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n lastname: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n officeName: {\r\n required,\r\n minLength: minLength(4)\r\n },\r\n address: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n city: {\r\n required,\r\n minLength: minLength(2)\r\n },\r\n state: {\r\n required\r\n },\r\n zip: {\r\n required,\r\n minLength: minLength(5)\r\n },\r\n country: {\r\n required\r\n },\r\n phone: {\r\n required,\r\n minLength: minLength(10)\r\n },\r\n email: {\r\n required,\r\n email,\r\n isValid(value) {\r\n if (value === '') return true // handled by required\r\n // service returns promise that resolves to true\r\n // if email can be used.\r\n return service.validateEmail(this.form.hash, value)\r\n }\r\n },\r\n email2: {\r\n email\r\n },\r\n agdNumber: {\r\n optionalAgdNumber,\r\n optionalAgdNumberDupe\r\n },\r\n certYear: {\r\n required\r\n },\r\n gender: {\r\n required\r\n },\r\n ageRange: {\r\n required\r\n },\r\n officeSize: {\r\n required\r\n }\r\n }\r\n },\r\n watch: {\r\n form: {\r\n deep: true,\r\n handler(vmodel) { // receives updated this.form\r\n // console.log('watcher')\r\n // console.log(vmodel)\r\n // Send updated model to parent.\r\n this.$emit('input', vmodel) // send to listeners as input event\r\n }\r\n }\r\n },\r\n computed: {\r\n viewGender() {\r\n if(this.form.gender == 'M') return 'Male'\r\n if(this.form.gender == 'F') return 'Female'\r\n if(this.form.gender == 'O') return 'Other'\r\n return 'Select One'\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n submit(e) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n\r\n this.form.isPhoneMobile = (this.isPhoneMobile === 'checked')\r\n\r\n service\r\n .saveProfile(this.form)\r\n .then(\r\n ( res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status) {\r\n this.success = true\r\n }\r\n else {\r\n this.success = false\r\n this.errorMsg = 'Service error.'\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally( () => {\r\n // console.log(`submit saveProfile finally`)\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e)\r\n this.error = true\r\n });\r\n },\r\n setCertYears() {\r\n const MIN_YEAR = (new Date).getFullYear() - 90 // 90 years ago\r\n const MAX_YEAR = (new Date).getFullYear() + 10 // future graduates\r\n this.lists.certYears = []\r\n for(let ix=MIN_YEAR; ix <= MAX_YEAR; ix++) {\r\n this.lists.certYears.push(ix.toString())\r\n }\r\n }\r\n },\r\n created() {\r\n this.setCertYears()\r\n\r\n if (this.form.hash.length !== 0) {\r\n this.busy = true\r\n service\r\n .getAccountItems(this.form.hash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getAccountItems!`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.lists.jobTitles = this.lists.jobTitles.concat(utils.prepSelectArray(res.jobTitles))\r\n this.lists.titles = this.lists.titles.concat(utils.prepSelectArray(res.titles))\r\n this.lists.states = this.lists.states.concat(res.states)\r\n this.lists.countries = this.lists.countries.concat(res.countries)\r\n this.lists.ageRanges = this.lists.ageRanges.concat(utils.prepSelectArray(res.ageRanges))\r\n this.lists.officeSizes = this.lists.officeSizes.concat(utils.prepSelectArray(res.officeSizes))\r\n // this.lists.sourceHeard = this.lists.sourceHeard.concat(utils.prepSelectArray(res.sourceHeard))\r\n this.isPhoneMobile = (this.form.isPhoneMobile) ? 'checked' : 'unchecked'\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false;\r\n // console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n })\r\n }\r\n else {\r\n // flag error! Not logged in.\r\n }\r\n },\r\n mounted() {\r\n // console.log(`AccountProfile mounted`)\r\n },\r\n beforeDestroy() {\r\n // console.log(`AccountProfile beforeDestroy`)\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/AccountProfile.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.msg)+\"\\n \")]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',{staticClass:\"div-section-body\"},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit($event)}}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"px-2\"},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Position\",\"label-for\":\"position\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"position\",\"placeholder\":\"\",\"options\":_vm.lists.jobTitles,\"state\":_vm.validateState('jobTitle'),\"aria-describedby\":\"support-position-feedback\"},model:{value:(_vm.$v.form.jobTitle.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.jobTitle, \"$model\", $$v)},expression:\"$v.form.jobTitle.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select position.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"AGD Member Number (optional)\",\"label-for\":\"zip\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"agdnumber\",\"type\":\"text\",\"placeholder\":\"AGD Member Number\",\"state\":_vm.validateState('agdNumber'),\"aria-describedby\":\"support-agdnumber-feedback\"},model:{value:(_vm.$v.form.agdNumber.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.agdNumber, \"$model\", $$v)},expression:\"$v.form.agdNumber.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.agdNumber.optionalAgdNumber)?_c('b-form-invalid-feedback',[_vm._v(\"Leave blank or enter valid value.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.agdNumber.optionalAgdNumberDupe)?_c('b-form-invalid-feedback',[_vm._v(\"AGD Number already in use. Choose another.\")]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Title\",\"label-for\":\"title\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"title\",\"placeholder\":\"-- select one --\",\"options\":_vm.lists.titles,\"state\":_vm.validateState('title'),\"aria-describedby\":\"support-title-feedback\"},model:{value:(_vm.$v.form.title.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.title, \"$model\", $$v)},expression:\"$v.form.title.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-title-feedback\"}},[_vm._v(\"Select title.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"First Name\",\"label-for\":\"firstname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"firstname\",\"type\":\"text\",\"placeholder\":\"Your first name\",\"state\":_vm.validateState('firstname'),\"aria-describedby\":\"support-firstname-feedback\"},model:{value:(_vm.$v.form.firstname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.firstname, \"$model\", $$v)},expression:\"$v.form.firstname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-firstname-feedback\"}},[_vm._v(\"First name is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Last Name\",\"label-for\":\"lastname\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"lastname\",\"type\":\"text\",\"placeholder\":\"Your last name\",\"state\":_vm.validateState('lastname'),\"aria-describedby\":\"support-lastname-feedback\"},model:{value:(_vm.$v.form.lastname.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.lastname, \"$model\", $$v)},expression:\"$v.form.lastname.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-lastname-feedback\"}},[_vm._v(\"Last name is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Practice Name\",\"label-for\":\"officeName\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"officeName\",\"type\":\"text\",\"placeholder\":\"Your practice name\",\"state\":_vm.validateState('officeName'),\"aria-describedby\":\"support-officeName-feedback\"},model:{value:(_vm.$v.form.officeName.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.officeName, \"$model\", $$v)},expression:\"$v.form.officeName.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-officeName-feedback\"}},[_vm._v(\"This is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Address\",\"label-for\":\"address\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"address\",\"type\":\"text\",\"placeholder\":\"Your address\",\"state\":_vm.validateState('address'),\"aria-describedby\":\"support-address-feedback\"},model:{value:(_vm.$v.form.address.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.address, \"$model\", $$v)},expression:\"$v.form.address.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-address-feedback\"}},[_vm._v(\"Address is required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"City\",\"label-for\":\"city\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"city\",\"type\":\"text\",\"placeholder\":\"Your city\",\"state\":_vm.validateState('city'),\"aria-describedby\":\"support-city-feedback\"},model:{value:(_vm.$v.form.city.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.city, \"$model\", $$v)},expression:\"$v.form.city.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-city-feedback\"}},[_vm._v(\"City is a required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"State\",\"label-for\":\"state\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"state\",\"placeholder\":\"\",\"options\":_vm.lists.states,\"state\":_vm.validateState('state'),\"aria-describedby\":\"support-state-feedback\"},model:{value:(_vm.$v.form.state.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.state, \"$model\", $$v)},expression:\"$v.form.state.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select state.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Zip/Postal Code\",\"label-for\":\"zip\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"zip\",\"type\":\"text\",\"placeholder\":\"Your zip/postal code\",\"state\":_vm.validateState('zip'),\"aria-describedby\":\"support-zip-feedback\"},model:{value:(_vm.$v.form.zip.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.zip, \"$model\", $$v)},expression:\"$v.form.zip.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-zip-feedback\"}},[_vm._v(\"Zip/Postal Code is required field.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Country\",\"label-for\":\"country\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"country\",\"placeholder\":\"\",\"options\":_vm.lists.countries,\"state\":_vm.validateState('country'),\"aria-describedby\":\"support-country-feedback\"},model:{value:(_vm.$v.form.country.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.country, \"$model\", $$v)},expression:\"$v.form.country.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-position-feedback\"}},[_vm._v(\"Select country.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Phone\",\"label-for\":\"phone\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"phone\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"phone\",\"type\":\"tel\",\"placeholder\":\"Your phone number\",\"state\":_vm.validateState('phone'),\"aria-describedby\":\"support-phone-feedback\"},model:{value:(_vm.$v.form.phone.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.phone, \"$model\", $$v)},expression:\"$v.form.phone.$model\"}}),_vm._v(\"\\n   \\n \"),_c('b-form-checkbox',{staticClass:\"mt-2\",attrs:{\"id\":\"isphonemobile\",\"value\":\"checked\",\"unchecked-value\":\"unchecked\"},model:{value:(_vm.isPhoneMobile),callback:function ($$v) {_vm.isPhoneMobile=$$v},expression:\"isPhoneMobile\"}},[_vm._v(\"\\n Is Mobile\\n \")]),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-phone-feedback\"}},[_vm._v(\"Phone number is required.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Work Email\",\"label-for\":\"email\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Your work email address\",\"state\":_vm.validateState('email'),\"aria-describedby\":\"support-email-feedback\"},model:{value:(_vm.$v.form.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email, \"$model\", $$v)},expression:\"$v.form.email.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.email.required)?_c('b-form-invalid-feedback',[_vm._v(\"Email is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.email)?_c('b-form-invalid-feedback',[_vm._v(\"Enter valid email address.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.isValid)?_c('b-form-invalid-feedback',[_vm._v(\"Email already in use. Choose another.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Home Email\",\"label-for\":\"email2\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email2\",\"type\":\"email\",\"placeholder\":\"Your home email address\",\"state\":_vm.validateState('email2'),\"aria-describedby\":\"support-email2-feedback\"},model:{value:(_vm.$v.form.email2.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email2, \"$model\", $$v)},expression:\"$v.form.email2.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.email2.email)?_c('b-form-invalid-feedback',[_vm._v(\"Enter valid email address.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Graduation Year\",\"label-for\":\"certyear\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"certyear\",\"placeholder\":\"\",\"options\":_vm.lists.certYears,\"state\":_vm.validateState('certYear'),\"aria-describedby\":\"support-certyear-feedback\"},model:{value:(_vm.$v.form.certYear.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.certYear, \"$model\", $$v)},expression:\"$v.form.certYear.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-certyear-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Gender\",\"label-for\":\"gender\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-form-radio-group',{attrs:{\"id\":\"gender\",\"options\":_vm.lists.genders,\"buttons\":\"\",\"button-variant\":\"info\",\"name\":\"gender\",\"aria-describedby\":\"support-gender-feedback\"},model:{value:(_vm.$v.form.gender.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.gender, \"$model\", $$v)},expression:\"$v.form.gender.$model\"}}),_vm._v(\" \"),_c('b-input-group-append',{attrs:{\"is-text\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.viewGender)+\"\\n \")]),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-gender-feedback\"}},[_vm._v(\"Required field.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Age Range\",\"label-for\":\"agerange\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"agerange\",\"placeholder\":\"\",\"options\":_vm.lists.ageRanges,\"state\":_vm.validateState('ageRange'),\"aria-describedby\":\"support-agerange-feedback\"},model:{value:(_vm.$v.form.ageRange.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.ageRange, \"$model\", $$v)},expression:\"$v.form.ageRange.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-agerange-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Office Size\",\"label-for\":\"officesize\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"officesize\",\"placeholder\":\"\",\"options\":_vm.lists.officeSizes,\"state\":_vm.validateState('officeSize'),\"aria-describedby\":\"support-officesize-feedback\"},model:{value:(_vm.$v.form.officeSize.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.officeSize, \"$model\", $$v)},expression:\"$v.form.officeSize.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-officesize-feedback\"}},[_vm._v(\"Select one.\")])],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]),_vm._v(\" \"),_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_vm._v(\"\\n Profile updated.\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Update Profile\")])],1)],1)])],1)],1)],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-08cf755b\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AccountProfile.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-08cf755b\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AccountProfile.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountProfile.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountProfile.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-08cf755b\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AccountProfile.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-08cf755b\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AccountProfile.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <div class=\"mb-2\">\r\n {{ msg }}\r\n </div>\r\n\r\n <b-overlay :show=\"busy\">\r\n <div class=\"div-section-body\">\r\n\r\n <b-form @submit.stop.prevent=\"submit\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div class=\"px-2\">\r\n <!-- New password -->\r\n <b-form-group\r\n label=\"New Password\"\r\n label-for=\"password\"\r\n label-size=\"sm\"\r\n class=\"mb-2\"\r\n label-class=\"mb-0 pt-2 font-weight-bold\"\r\n >\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password\"\r\n v-model=\"$v.passwords.password.$model\"\r\n type=\"password\"\r\n placeholder=\"New password\"\r\n :state=\"validateState('password')\"\r\n aria-describedby=\"support-password-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.required\">Password is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.minLength\">Password must be 6 characters or longer.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.passwords.password.regexPwd\">Invalid character(s) detected.</b-form-invalid-feedback>\r\n <!-- <b-form-invalid-feedback id=\"support-password-feedback\">Password is required.</b-form-invalid-feedback> -->\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- New password retype -->\r\n <b-form-group\r\n label=\"New Password (retype)\"\r\n label-for=\"password2\"\r\n label-size=\"sm\"\r\n class=\"mb-2\"\r\n label-class=\"mb-0 pt-2 font-weight-bold\"\r\n >\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"lock\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"password2\"\r\n v-model=\"$v.passwords.password2.$model\"\r\n type=\"password\"\r\n placeholder=\"New password (retype)\"\r\n :state=\"validateState('password2')\"\r\n aria-describedby=\"support-password2-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-password2-feedback\">Passwords must match.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert\r\n v-model=\"error\"\r\n key=\"error-box\"\r\n show\r\n variant=\"danger\"\r\n dismissible\r\n class=\"mt-2\"\r\n >{{errorMsg}}</b-alert>\r\n <b-alert\r\n v-model=\"success\"\r\n key=\"success-box\"\r\n show\r\n variant=\"success\"\r\n dismissible\r\n class=\"mt-2\"\r\n >Account password updated.</b-alert>\r\n </div>\r\n </transition>\r\n\r\n <div class=\"text-center mt-2 mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Update Password</b-button>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-form>\r\n\r\n </div>\r\n </b-overlay>\r\n\r\n <b-card class=\"mt-5 mb-2\">\r\n <div class=\"text-left\">\r\n Click the link below if you reside in the European Economic Area (EEA) and choose to exercise the option to remove your access to your personally identifiable information contained in this site.\r\n </div>\r\n <div class=\"mt-2 text-center\">\r\n <b-link class=\"text-center\" to=\"/gdpr\">GDPR Remove Consent</b-link>\r\n </div>\r\n </b-card>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nimport { validationMixin } from \"vuelidate\";\r\nimport {\r\n required,\r\n email,\r\n minLength,\r\n maxLength,\r\n between,\r\n sameAs,\r\n helpers\r\n} from \"vuelidate/lib/validators\";\r\n\r\n// Password regex: Allow alphanumeric and some special characters\r\nconst regexPwd = helpers.regex('regexPwd', /^[a-zA-Z0-9.!@#$%&*~:;?+=^_-]*$/)\r\n\r\nexport default {\r\n name: \"AccountPassword\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: \"System error - contact tech support.\",\r\n loading: false,\r\n busy: false,\r\n success: false,\r\n passwords: {\r\n password: null,\r\n password2: null\r\n },\r\n msg: \"Use form below to change your account password.\",\r\n form: this.value\r\n };\r\n },\r\n props: {\r\n // student object. the v-model for the component\r\n value: {\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n passwords: {\r\n password: {\r\n required,\r\n minLength: minLength(6),\r\n regexPwd\r\n },\r\n password2: {\r\n sameAsPassword: sameAs(\"password\")\r\n }\r\n }\r\n },\r\n watch: {\r\n form: {\r\n deep: true,\r\n handler(vmodel) {\r\n // receives updated this.form\r\n // console.log('watcher')\r\n // console.log(vmodel)\r\n // Send updated model to parent.\r\n this.$emit(\"input\", vmodel); // send to listeners as input event\r\n }\r\n }\r\n },\r\n computed: {},\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.passwords[name];\r\n return $dirty ? !$error : null;\r\n },\r\n submit(e) {\r\n this.$v.passwords.$touch();\r\n if (this.$v.passwords.$anyError) {\r\n console.log(`ERROR!!`);\r\n return;\r\n }\r\n this.error = false;\r\n this.success = false;\r\n this.busy = true;\r\n\r\n this.form.password = this.passwords.password;\r\n\r\n service\r\n .saveProfile(this.form)\r\n .then(res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status) {\r\n this.success = true;\r\n } else {\r\n this.success = false;\r\n this.errorMsg = data.errorMsg || \"Service error.\";\r\n this.error = true;\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false;\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true;\r\n });\r\n }\r\n },\r\n created() {\r\n console.log(`AccountPassword created`);\r\n },\r\n mounted() {\r\n console.log(`AccountPassword mounted`);\r\n },\r\n beforeDestroy() {\r\n console.log(`AccountPassword beforeDestroy`);\r\n }\r\n};\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/AccountPassword.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"mb-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.msg)+\"\\n \")]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',{staticClass:\"div-section-body\"},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit($event)}}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"px-2\"},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"New Password\",\"label-for\":\"password\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password\",\"type\":\"password\",\"placeholder\":\"New password\",\"state\":_vm.validateState('password'),\"aria-describedby\":\"support-password-feedback\"},model:{value:(_vm.$v.passwords.password.$model),callback:function ($$v) {_vm.$set(_vm.$v.passwords.password, \"$model\", $$v)},expression:\"$v.passwords.password.$model\"}}),_vm._v(\" \"),(!_vm.$v.passwords.password.required)?_c('b-form-invalid-feedback',[_vm._v(\"Password is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.passwords.password.minLength)?_c('b-form-invalid-feedback',[_vm._v(\"Password must be 6 characters or longer.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.passwords.password.regexPwd)?_c('b-form-invalid-feedback',[_vm._v(\"Invalid character(s) detected.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"New Password (retype)\",\"label-for\":\"password2\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"lock\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"password2\",\"type\":\"password\",\"placeholder\":\"New password (retype)\",\"state\":_vm.validateState('password2'),\"aria-describedby\":\"support-password2-feedback\"},model:{value:(_vm.$v.passwords.password2.$model),callback:function ($$v) {_vm.$set(_vm.$v.passwords.password2, \"$model\", $$v)},expression:\"$v.passwords.password2.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-password2-feedback\"}},[_vm._v(\"Passwords must match.\")])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(_vm._s(_vm.errorMsg))]),_vm._v(\" \"),_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_vm._v(\"Account password updated.\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-2 mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Update Password\")])],1)],1)])],1)],1)],1)]),_vm._v(\" \"),_c('b-card',{staticClass:\"mt-5 mb-2\"},[_c('div',{staticClass:\"text-left\"},[_vm._v(\"\\n Click the link below if you reside in the European Economic Area (EEA) and choose to exercise the option to remove your access to your personally identifiable information contained in this site.\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"mt-2 text-center\"},[_c('b-link',{staticClass:\"text-center\",attrs:{\"to\":\"/gdpr\"}},[_vm._v(\"GDPR Remove Consent\")])],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-024a7d02\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AccountPassword.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-024a7d02\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AccountPassword.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountPassword.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AccountPassword.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-024a7d02\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AccountPassword.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-024a7d02\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AccountPassword.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"10\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Account Management</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-overlay :show=busy>\r\n <b-card no-body v-if=\"student !== null\">\r\n <b-tabs content-class=\"mt-3\" card>\r\n <b-tab title=\"Home\" active>\r\n <template v-slot:title>\r\n <b-icon icon=\"house-fill\"></b-icon>\r\n </template>\r\n <account-home v-model=\"student\"></account-home>\r\n </b-tab>\r\n <b-tab title=\"Profile\">\r\n <template v-slot:title>\r\n <b-icon icon=\"person-fill\"></b-icon>\r\n </template>\r\n <account-profile v-model=\"student\"></account-profile>\r\n </b-tab>\r\n <b-tab title=\"Password\">\r\n <template v-slot:title>\r\n <b-icon icon=\"lock-fill\"></b-icon>\r\n </template>\r\n <account-password v-model=\"student\"></account-password>\r\n </b-tab>\r\n </b-tabs>\r\n </b-card>\r\n </b-overlay>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n// Using v-model with custom components\r\n// https://stackoverflow.com/questions/49072799/vuejs-how-to-pass-an-object-as-prop-and-have-the-component-update-sub-objects\r\n\r\nimport service from \"@/service/service\"\r\n\r\nimport AccountHome from '@/components/AccountHome'\r\nimport AccountProfile from '@/components/AccountProfile'\r\nimport AccountPassword from '@/components/AccountPassword'\r\n\r\n// v-model with custom components\r\n\r\nexport default {\r\n name: \"Account\",\r\n data() {\r\n return {\r\n msg: \"\",\r\n show: true,\r\n debug: false,\r\n loading: false,\r\n busy: false,\r\n error: false,\r\n studentHash: null,\r\n student: null\r\n }\r\n },\r\n components: {\r\n 'account-home': AccountHome,\r\n 'account-profile': AccountProfile,\r\n 'account-password': AccountPassword\r\n },\r\n methods: { },\r\n created() {\r\n this.studentHash = this.$root.getToken()\r\n if (this.studentHash.length !== 0) {\r\n this.busy = true\r\n service\r\n .getProfile(this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from getProfile!`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.student = res.student\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n console.log(`Missing student hash.`)\r\n }\r\n },\r\n mounted() { console.log('mounted')}\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Account.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"10\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Account Management\")])])])],1)],1),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[(_vm.student !== null)?_c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-tabs',{attrs:{\"content-class\":\"mt-3\",\"card\":\"\"}},[_c('b-tab',{attrs:{\"title\":\"Home\",\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('b-icon',{attrs:{\"icon\":\"house-fill\"}})]},proxy:true}],null,false,2650473965)},[_vm._v(\" \"),_c('account-home',{model:{value:(_vm.student),callback:function ($$v) {_vm.student=$$v},expression:\"student\"}})],1),_vm._v(\" \"),_c('b-tab',{attrs:{\"title\":\"Profile\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('b-icon',{attrs:{\"icon\":\"person-fill\"}})]},proxy:true}],null,false,1291098780)},[_vm._v(\" \"),_c('account-profile',{model:{value:(_vm.student),callback:function ($$v) {_vm.student=$$v},expression:\"student\"}})],1),_vm._v(\" \"),_c('b-tab',{attrs:{\"title\":\"Password\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('b-icon',{attrs:{\"icon\":\"lock-fill\"}})]},proxy:true}],null,false,526697474)},[_vm._v(\" \"),_c('account-password',{model:{value:(_vm.student),callback:function ($$v) {_vm.student=$$v},expression:\"student\"}})],1)],1)],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b9dc613e\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Account.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b9dc613e\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Account.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Account.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Account.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b9dc613e\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Account.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b9dc613e\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Account.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"10\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">GDPR Remove Consent</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div>\r\n <!-- <p class=\"font-weight-bold\">GDPR Remove Consent</p> -->\r\n <p>As stated in the Privacy policy posted on this site, residents of the EEA have the right to request that their Personally Identifiable Information be removed.</p>\r\n <p>By removing consent, we will no longer use and disclose such Personally Identifiable Information in accordance with our Privacy Policy and our Terms of Use, and as permitted or required by law.</p>\r\n <p>NOTE: Once your consent is removed, this training account will be deactivated and any training records will be archived solely for internal use.</p>\r\n <p>To remove consent, you must first confirm your identity. To confirm your identity, we will send you an Identity Confirmation email to your email address on record with a confirmation link.</p>\r\n <p>To start this process, click the checkbox and click the Submit Button.</p>\r\n </div>\r\n\r\n <b-overlay :show=\"busy\">\r\n <b-card bg-variant=\"light\">\r\n <b-form @submit.stop.prevent=\"submit\">\r\n <!-- -->\r\n <b-form-checkbox\r\n id=\"checkbox-1\"\r\n v-model=\"checkbox\"\r\n name=\"checkbox-1\"\r\n value=\"checked\"\r\n unchecked-value=\"unchecked\"\r\n >\r\n I reside in the European Economic Area (EEA) and would like to remove my consent related to my Personally Identifiable Information (PII).\r\n </b-form-checkbox>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-if=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-if=\"success\" key=\"success-box\" show variant=\"success\" dismissible class=\"mt-2\">\r\n Check your email for instructions on completing this operation.\r\n <div class=\"mt-2 text-center\">\r\n <b-button to=\"/home\">Home</b-button>\r\n </div>\r\n </b-alert>\r\n </transition>\r\n\r\n <div class=\"text-center mt-2 mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Submit Request</b-button>\r\n </div>\r\n </b-form>\r\n </b-card>\r\n </b-overlay>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n// Using v-model with custom components\r\n// https://stackoverflow.com/questions/49072799/vuejs-how-to-pass-an-object-as-prop-and-have-the-component-update-sub-objects\r\n\r\nimport service from \"@/service/service\"\r\n\r\nexport default {\r\n name: \"Gdpr\",\r\n data() {\r\n return {\r\n msg: \"\",\r\n show: false,\r\n debug: false,\r\n loading: false,\r\n busy: false,\r\n error: false,\r\n success: false,\r\n studentHash: null,\r\n checkbox: null\r\n }\r\n },\r\n methods: { \r\n submit(e) {\r\n\r\n if ( this.checkbox == 'checked') {\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n\r\n service\r\n .removeConsent(this.studentHash)\r\n .then( res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status) {\r\n this.success = true\r\n }\r\n else {\r\n this.success = false\r\n this.errorMsg = data.errorMsg || 'Service error.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => { \r\n this.busy = false\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true;\r\n })\r\n }\r\n else {\r\n this.errorMsg = 'Check the checkbox before clicking the Submit Request button.'\r\n this.error = true\r\n }\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken()\r\n },\r\n mounted() { console.log('GDPR mounted')}\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Gdpr.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"10\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"GDPR Remove Consent\")])])])],1)],1),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(\"As stated in the Privacy policy posted on this site, residents of the EEA have the right to request that their Personally Identifiable Information be removed.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"By removing consent, we will no longer use and disclose such Personally Identifiable Information in accordance with our Privacy Policy and our Terms of Use, and as permitted or required by law.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"NOTE: Once your consent is removed, this training account will be deactivated and any training records will be archived solely for internal use.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"To remove consent, you must first confirm your identity. To confirm your identity, we will send you an Identity Confirmation email to your email address on record with a confirmation link.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"To start this process, click the checkbox and click the Submit Button.\")])]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-card',{attrs:{\"bg-variant\":\"light\"}},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit($event)}}},[_c('b-form-checkbox',{attrs:{\"id\":\"checkbox-1\",\"name\":\"checkbox-1\",\"value\":\"checked\",\"unchecked-value\":\"unchecked\"},model:{value:(_vm.checkbox),callback:function ($$v) {_vm.checkbox=$$v},expression:\"checkbox\"}},[_vm._v(\"\\n I reside in the European Economic Area (EEA) and would like to remove my consent related to my Personally Identifiable Information (PII).\\n \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.error)?_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.success)?_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"}},[_vm._v(\"\\n Check your email for instructions on completing this operation.\\n \"),_c('div',{staticClass:\"mt-2 text-center\"},[_c('b-button',{attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")])],1)]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-2 mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Submit Request\")])],1)],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-75f66ea0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Gdpr.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-75f66ea0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Gdpr.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Gdpr.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Gdpr.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-75f66ea0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Gdpr.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-75f66ea0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Gdpr.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <div v-if=\"!error && !loading\">\r\n <div v-if=\"showVideo\">\r\n <b-embed v-if=\"showVideo\" ref=\"plyr\"\r\n type=\"iframe\"\r\n aspect=\"16by9\"\r\n :src=\"getVideoUrl\"\r\n allowfullscreen\r\n ></b-embed>\r\n </div>\r\n\r\n <div> <!-- button row tutorial / ondemand / archive -->\r\n <b-row v-if=\"classObj.isTutorial\"> <!-- tutorial video/pdf -->\r\n <b-col class=\"mt-3 mb-3 text-center\">\r\n <b-overlay :show=\"logging\" rounded=\"sm\">\r\n <b-button v-if=\"isVideo\" @click=\"toggleVideo\">{{btnViewLabel}}</b-button>\r\n <b-button v-if=\"isPDF\" @click=\"viewPDF\">{{btnViewLabel}}</b-button>\r\n </b-overlay>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"!classObj.isTutorial\"> <!-- ondemand video/pdf/archive/flash(stubbed) -->\r\n <b-col class=\"mt-3 mb-3 text-center\">\r\n <div class=\"mb-2\">\r\n <b-overlay :show=\"logging\" rounded=\"sm\">\r\n <b-button v-if=\"isVideo\" @click=\"toggleVideo\" class=\"mr-2\">{{btnViewLabel}}</b-button>\r\n <b-button v-if=\"isPDF\" @click=\"viewPDF\" class=\"mr-2\">View PDF</b-button>\r\n <b-button v-if=\"isArchive\" :disabled=\"true\" @click=\"toggleVideo\" class=\"mr-2\">{{btnViewLabel}}</b-button>\r\n <!-- Exam button -->\r\n <b-button v-if=\"!studentData.examTaken\" :disabled=\"btnTakeExamDisabled\" @click.prevent=\"gotoExam\" class=\"ml-2\">Take Exam</b-button>\r\n </b-overlay>\r\n </div>\r\n <b-button-group v-if=\"debug\"> <!-- debug only -->\r\n <b-button size=\"sm\" variant=\"success\" :to=\"{ path: `/eval/${classHash}`}\">Eval</b-button>\r\n <b-button size=\"sm\" variant=\"info\" :to=\"{ path: `/sva/${classHash}` }\">SVA</b-button>\r\n <b-button size=\"sm\" variant=\"secondary\" :to=\"{ path: `/survey/${classHash}` }\">Survey</b-button>\r\n <b-button size=\"sm\" variant=\"warning\" :to=\"{ path: `/exam/${classHash}` }\">Exam</b-button>\r\n </b-button-group>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div v-if=\"!classObj.isTutorial\"> <!-- alert banners -->\r\n <b-alert :show=\"isArchive\" variant=\"warning\"><b>Video Upcoming</b> The on-demand video of this live webinar is being produced.<br>Please check back.</b-alert>\r\n <b-alert :show=\"isFlash\" variant=\"danger\"><b>Video Unavailable</b> The video for this class is not available on this device.</b-alert>\r\n <b-alert :show=\"!classObj.canShowExam\" variant=\"warning\"><b>Exam Upcoming</b> After the webinar, you will be emailed a link to your CE exam.<br>Please allow up to two hours to receive your email.</b-alert>\r\n <b-alert :show=\"studentData.status && !studentData.examTaken && !hasExamsLeftToday\" variant=\"danger\"><b>Exam Limit Reached:</b> You’ve reached the limit of 10 exams per day. Please resume your self-study activity another day.</b-alert>\r\n <b-alert :show=\"studentData.examTaken\" variant=\"info\">\r\n <b>Exam Completed</b> on {{studentData.examDateLocal}} with a score of {{studentData.examScore}}.\r\n Credits: {{studentData.credits}} {{ studentData.ceTypeId | prettyCEType }}\r\n <certbutton :c=\"buildClass()\" :s=\"buildStudentData()\"></certbutton>\r\n </b-alert>\r\n </div>\r\n\r\n <div class=\"div-section-body\" style=\"padding: 0 2px 0 3px;\">\r\n <div style=\"padding: 5px 5px 10px 3px;\">\r\n <b-row style=\"padding: 5px 5px 10px 3px;\">\r\n <b-col cols=\"4\">\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"classObj.photo\" />\r\n <div v-if=\"studentData.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n <queuebutton :c=\"classObj.hash\" :s=\"studentHash\" :q=\"studentData.inqueue\"></queuebutton>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{classObj.className}}</div>\r\n <div class=\"class-details\">\r\n <div v-if=\"!classObj.isTutorial && classObj.name\">\r\n {{classObj.name}}\r\n <br />\r\n </div>\r\n <span v-text=\"(classObj.isTutorial) ? 'Company' : 'Sponsor'\"></span>: {{classObj.companyName}}\r\n <br />\r\n {{classObj.releaseDate | prettyDate}}<span v-if=\"!classObj.isTutorial\"> - {{classObj.credits}} CEU (Self Study)</span>\r\n </div>\r\n\r\n <script type=\"application/ld+json\">\r\n {{JSON.stringify(classObj.videoSchema)}}\r\n </script>\r\n <script type=\"application/ld+json\">\r\n {{JSON.stringify(classObj.courseSchema)}}\r\n </script>\r\n\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <!-- :inner-html.prop instead of v-html -->\r\n <b-col class=\"mt-2 txt-class-blurb\" :inner-html.prop=\"this.classObj.description | nl2br\"></b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Classroom\",\r\n blurb: \"Classroom blurb.\",\r\n classObj: {},\r\n studentData: {status: false, ceTypeId: 1, examTaken: false, examsLeftToday: 10},\r\n studentHash: '',\r\n classHash: '',\r\n showVideo: false,\r\n logging: false\r\n}\r\n\r\nexport default {\r\n name: \"Classroom\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n isVideo() {\r\n let aout = this.classObj.typeId != constants.CLASS_TYPE.ARCHIVE\r\n && this.classObj.typeId != constants.CLASS_TYPE.PDF\r\n && this.classObj.youtubeUrl != null;\r\n // console.log(`isVideo: ${aout}`)\r\n return aout\r\n },\r\n isPDF() {\r\n let aout = this.classObj.typeId === constants.CLASS_TYPE.PDF\r\n && this.classObj.pdfClassFile !== null;\r\n return aout\r\n },\r\n isArchive() {\r\n let aout = this.classObj.typeId === constants.CLASS_TYPE.ARCHIVE\r\n // console.log(`isArchive: ${aout}`)\r\n return aout\r\n },\r\n isLive: function() {\r\n // Indicates student started live webinar.\r\n return this.studentData.studentStarted\r\n },\r\n isFlash() {\r\n let aout = this.classObj.typeId != constants.CLASS_TYPE.ARCHIVE\r\n && this.classObj.typeId != constants.CLASS_TYPE.PDF\r\n && this.classObj.youtubeUrl == null;\r\n // console.log(`isFlash: ${aout}`)\r\n return aout\r\n },\r\n hasVideo() {\r\n let aout = this.classObj.youtubeUrl != null\r\n // console.log(`hasVideo: ${aout}`)\r\n return aout\r\n },\r\n getVideoUrl() {\r\n let code = utils.getYoutubeCode(this.classObj.youtubeUrl)\r\n let url = utils.getYoutubeUrl(code, true)\r\n return url\r\n // return 'https://www.youtube.com/embed/zpOULjyy-n8?rel=0' // reo\r\n // return 'https://www.youtube.com/embed/pTvxZgiuU3Y?rel=0'\r\n // return 'https://www.youtube.com/watch?v=pTvxZgiuU3Y&rel=0' // viva\r\n },\r\n btnViewLabel() {\r\n let txt = ''\r\n if (this.showVideo) {\r\n txt = (this.classObj.isTutorial) ? 'Hide Tutorial' : 'Hide Class'\r\n }\r\n else {\r\n txt = (this.classObj.isTutorial) ? 'View Tutorial' : 'View Class'\r\n }\r\n return txt\r\n },\r\n hasExamsLeftToday() {\r\n // Returns true if:\r\n // -- live class\r\n // -- OnDemand class and studentData.examsLeftToday > 0\r\n return (this.isLive || (this.studentData.examsLeftToday > 0))\r\n },\r\n btnTakeExamDisabled() {\r\n // Return true if exam button should be disabled.\r\n // Reasons for disabled:\r\n // -- classObj.canShowExam is false\r\n // -- hit daily exams quota\r\n if (this.debug) console.log(`canShowExam: ${this.classObj.canShowExam} isLive: ${this.isLive} hasExamsLeftToday: {this.hasExamsLeftToday}`)\r\n // return (!this.classObj.canShowExam || (!this.isLive && !this.hasExamsLeftToday))\r\n return (!this.classObj.canShowExam || !this.hasExamsLeftToday)\r\n },\r\n btnExamVariant() {\r\n return (this.classObj.zoomCode !== null) ? 'secondary' : 'secondary'\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n gotoExam() {\r\n // Exam flow: affidavit -> eval -> sva/survey -> exam.\r\n // Student will not have gradebook record until they:\r\n // 1) start ondemand webinar\r\n // 2) start live webinar\r\n this.$router.push({ path: `/affidavit/${this.classHash}` })\r\n },\r\n buildClass() {\r\n let aout = {\r\n status: true,\r\n classId: this.classObj.classId,\r\n agdCode: this.classObj.agdCode,\r\n agdCategory: this.classObj.agdCategory,\r\n className: this.classObj.className,\r\n speakerName: this.classObj.name,\r\n classHash: this.classObj.hash,\r\n description: this.classObj.description,\r\n podcastHash: null,\r\n isCADentalBoard: this.classObj.isCADentalBoard,\r\n courseNumberCADentalBoard: this.classObj.courseNumberCADentalBoard\r\n }\r\n return aout\r\n },\r\n buildStudentData() {\r\n let aout = {\r\n status: true,\r\n hash: this.studentHash,\r\n name: this.$root.getStudentName(),\r\n examDate: this.studentData.examDate,\r\n examDateLocal: this.studentData.examDateLocal,\r\n credits: this.studentData.credits,\r\n ceTypeId: this.studentData.ceTypeId\r\n }\r\n return aout\r\n },\r\n toggleVideo() {\r\n // console.log(`toggleVideo: ${this.classHash}`)\r\n if (this.showVideo) {\r\n this.showVideo = false\r\n }\r\n else {\r\n this.logging = true\r\n service\r\n .classView(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.studentData.status = res.status\r\n this.studentData.gradebookId = res.gradebookId\r\n this.showVideo = true\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.logging = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n })\r\n }\r\n },\r\n viewPDF() {\r\n // console.log(`toggleVideo: ${this.classHash}`)\r\n this.logging = true\r\n let win = window.open(this.classObj.pdfClassFile, '_blank')\r\n if (win) win.focus()\r\n this.logging = false\r\n\r\n service\r\n .classView(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.studentData.status = res.status\r\n this.studentData.gradebookId = res.gradebookId\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n// Moved this to the top of the method to fix in Safari\r\n// https://stackoverflow.com/questions/20696041/window-openurl-blank-not-working-on-imac-safari\r\n//\r\n// this.logging = false\r\n // this.$router.push(this.classObj.pdfClassUrl)\r\n// let win = window.open(this.classObj.pdfClassFile, '_blank')\r\n// if (win) win.focus()\r\n\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n })\r\n }\r\n },\r\n created() {\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || \"\";\r\n this.studentHash = this.$root.getToken();\r\n if (this.classHash) {\r\n service\r\n .getClass(this.classHash, this.studentHash)\r\n .then(\r\n (data => {\r\n if (this.debug) console.log(data);\r\n if (data.status) {\r\n this.classObj = data.classObj\r\n\r\n // Build Video and Course schema\r\n var canonical = constants.CANONICAL_BASE + constants.PATHS.ON_DEMAND_BASE\r\n + \"/\" + data.classObj.slug;\r\n var caption = \"Dental CE class\";\r\n var pres = '';\r\n if (data.classObj.name != null) {\r\n caption += \" presented by \" + data.classObj.name;\r\n pres = data.classObj.name;\r\n }\r\n else {\r\n caption += \" sponsored by \" + data.classObj.companyName;\r\n pres = data.classObj.companyName;\r\n }\r\n\r\n var thumb = null\r\n if ( data.classObj.youtubeUrl != null ) {\r\n thumb = \"https://img.youtube.com/vi/\"\r\n + data.classObj.youtubeUrl.substring(data.classObj.youtubeUrl.indexOf('?')+3)\r\n + \"/hqdefault.jpg\"\r\n }\r\n\r\n this.classObj.videoSchema = {\r\n \"@context\" : \"https://schema.org\",\r\n \"@type\" : \"VideoObject\",\r\n \"name\" : data.classObj.className,\r\n \"caption\" : caption,\r\n \"description\" : data.classObj.description,\r\n \"thumbnailUrl\" : thumb,\r\n \"url\" : canonical,\r\n \"contentUrl\" : data.classObj.youtubeUrl,\r\n \"uploadDate\" : utils.prettyDate(data.classObj.releaseDateUTC)\r\n };\r\n\r\n this.classObj.courseSchema = {\r\n \"@context\" : \"https://schema.org\",\r\n \"@type\" : \"Course\",\r\n \"name\" : data.classObj.className,\r\n \"description\" : data.classObj.description,\r\n \"thumbnailUrl\" : data.classObj.photo,\r\n \"url\" : canonical,\r\n \"numberOfCredits\" : data.classObj.credits\r\n };\r\n\r\n // update the title tag\r\n document.title = \"Free Dental CE - \" + data.classObj.className\r\n + \" - \" + utils.prettyDate(data.classObj.releaseDateUTC);\r\n\r\n // set the meta description\r\n var desc = utils.leadingWords(pres + \" presents: \" + data.classObj.description, 150)\r\n var headTag = document.getElementsByTagName('HEAD')[0];\r\n var tag = document.createElement('meta');\r\n tag.setAttribute(\"name\", \"description\");\r\n tag.setAttribute(\"content\", desc);\r\n headTag.appendChild(tag);\r\n\r\n // set the canonical tag\r\n var tag2 = document.createElement('link');\r\n tag2.setAttribute(\"rel\", \"canonical\");\r\n tag2.setAttribute(\"href\", canonical);\r\n headTag.appendChild(tag2);\r\n\r\n if (data.studentData.status) {\r\n this.studentData = data.studentData\r\n if (this.debug) console.log(`Exams Left Today: ${this.studentData.examsLeftToday}`)\r\n }\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n // console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n } else {\r\n this.$router.push(\"exams\");\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n\r\n },\r\n mounted () { },\r\n beforeDestroy() {\r\n // console.log('beforeDestroy')\r\n this.classObj = {status: false}\r\n this.studentData = {status: false, ceTypeId: 1, examTaken: false, examsLeftToday: 10}\r\n this.showVideo = false\r\n this.loading = true\r\n this.logging = false\r\n }\r\n}\r\n\r\n\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Classroom.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(!_vm.error && !_vm.loading)?_c('div',[(_vm.showVideo)?_c('div',[(_vm.showVideo)?_c('b-embed',{ref:\"plyr\",attrs:{\"type\":\"iframe\",\"aspect\":\"16by9\",\"src\":_vm.getVideoUrl,\"allowfullscreen\":\"\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',[(_vm.classObj.isTutorial)?_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-3 text-center\"},[_c('b-overlay',{attrs:{\"show\":_vm.logging,\"rounded\":\"sm\"}},[(_vm.isVideo)?_c('b-button',{on:{\"click\":_vm.toggleVideo}},[_vm._v(_vm._s(_vm.btnViewLabel))]):_vm._e(),_vm._v(\" \"),(_vm.isPDF)?_c('b-button',{on:{\"click\":_vm.viewPDF}},[_vm._v(_vm._s(_vm.btnViewLabel))]):_vm._e()],1)],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.classObj.isTutorial)?_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-3 text-center\"},[_c('div',{staticClass:\"mb-2\"},[_c('b-overlay',{attrs:{\"show\":_vm.logging,\"rounded\":\"sm\"}},[(_vm.isVideo)?_c('b-button',{staticClass:\"mr-2\",on:{\"click\":_vm.toggleVideo}},[_vm._v(_vm._s(_vm.btnViewLabel))]):_vm._e(),_vm._v(\" \"),(_vm.isPDF)?_c('b-button',{staticClass:\"mr-2\",on:{\"click\":_vm.viewPDF}},[_vm._v(\"View PDF\")]):_vm._e(),_vm._v(\" \"),(_vm.isArchive)?_c('b-button',{staticClass:\"mr-2\",attrs:{\"disabled\":true},on:{\"click\":_vm.toggleVideo}},[_vm._v(_vm._s(_vm.btnViewLabel))]):_vm._e(),_vm._v(\" \"),(!_vm.studentData.examTaken)?_c('b-button',{staticClass:\"ml-2\",attrs:{\"disabled\":_vm.btnTakeExamDisabled},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoExam($event)}}},[_vm._v(\"Take Exam\")]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.debug)?_c('b-button-group',[_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"success\",\"to\":{ path: (\"/eval/\" + _vm.classHash)}}},[_vm._v(\"Eval\")]),_vm._v(\" \"),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"info\",\"to\":{ path: (\"/sva/\" + _vm.classHash) }}},[_vm._v(\"SVA\")]),_vm._v(\" \"),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"secondary\",\"to\":{ path: (\"/survey/\" + _vm.classHash) }}},[_vm._v(\"Survey\")]),_vm._v(\" \"),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"warning\",\"to\":{ path: (\"/exam/\" + _vm.classHash) }}},[_vm._v(\"Exam\")])],1):_vm._e()],1)],1):_vm._e()],1),_vm._v(\" \"),(!_vm.classObj.isTutorial)?_c('div',[_c('b-alert',{attrs:{\"show\":_vm.isArchive,\"variant\":\"warning\"}},[_c('b',[_vm._v(\"Video Upcoming\")]),_vm._v(\" The on-demand video of this live webinar is being produced.\"),_c('br'),_vm._v(\"Please check back.\")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":_vm.isFlash,\"variant\":\"danger\"}},[_c('b',[_vm._v(\"Video Unavailable\")]),_vm._v(\" The video for this class is not available on this device.\")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":!_vm.classObj.canShowExam,\"variant\":\"warning\"}},[_c('b',[_vm._v(\"Exam Upcoming\")]),_vm._v(\" After the webinar, you will be emailed a link to your CE exam.\"),_c('br'),_vm._v(\"Please allow up to two hours to receive your email.\")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":_vm.studentData.status && !_vm.studentData.examTaken && !_vm.hasExamsLeftToday,\"variant\":\"danger\"}},[_c('b',[_vm._v(\"Exam Limit Reached:\")]),_vm._v(\" You’ve reached the limit of 10 exams per day. Please resume your self-study activity another day.\")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":_vm.studentData.examTaken,\"variant\":\"info\"}},[_c('b',[_vm._v(\"Exam Completed\")]),_vm._v(\" on \"+_vm._s(_vm.studentData.examDateLocal)+\" with a score of \"+_vm._s(_vm.studentData.examScore)+\".\\n Credits: \"+_vm._s(_vm.studentData.credits)+\" \"+_vm._s(_vm._f(\"prettyCEType\")(_vm.studentData.ceTypeId))+\"\\n \"),_c('certbutton',{attrs:{\"c\":_vm.buildClass(),\"s\":_vm.buildStudentData()}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\",staticStyle:{\"padding\":\"0 2px 0 3px\"}},[_c('div',{staticStyle:{\"padding\":\"5px 5px 10px 3px\"}},[_c('b-row',{staticStyle:{\"padding\":\"5px 5px 10px 3px\"}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.classObj.photo}}),_vm._v(\" \"),(_vm.studentData.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e(),_vm._v(\" \"),_c('queuebutton',{attrs:{\"c\":_vm.classObj.hash,\"s\":_vm.studentHash,\"q\":_vm.studentData.inqueue}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.classObj.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[(!_vm.classObj.isTutorial && _vm.classObj.name)?_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.classObj.name)+\"\\n \"),_c('br')]):_vm._e(),_vm._v(\" \"),_c('span',{domProps:{\"textContent\":_vm._s((_vm.classObj.isTutorial) ? 'Company' : 'Sponsor')}}),_vm._v(\": \"+_vm._s(_vm.classObj.companyName)+\"\\n \"),_c('br'),_vm._v(\"\\n \"+_vm._s(_vm._f(\"prettyDate\")(_vm.classObj.releaseDate))),(!_vm.classObj.isTutorial)?_c('span',[_vm._v(\" - \"+_vm._s(_vm.classObj.credits)+\" CEU (Self Study)\")]):_vm._e()]),_vm._v(\" \"),_c('script',{attrs:{\"type\":\"application/ld+json\"}},[_vm._v(\"\\n \"+_vm._s(JSON.stringify(_vm.classObj.videoSchema))+\"\\n \")]),_vm._v(\" \"),_c('script',{attrs:{\"type\":\"application/ld+json\"}},[_vm._v(\"\\n \"+_vm._s(JSON.stringify(_vm.classObj.courseSchema))+\"\\n \")])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"mt-2 txt-class-blurb\",domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.classObj.description)}})],1)],1)])]):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6d35ca56\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Classroom.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6d35ca56\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Classroom.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Classroom.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Classroom.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6d35ca56\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Classroom.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6d35ca56\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Classroom.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <div v-if=\"delta > 0\" class=\"txt-webinar-begins\">{{headline}}</div>\r\n <div class=\"txt-webinar-countdown\">\r\n <!-- 20 Days, 23 Hours and 58 Minutes -->\r\n {{prettyCountdown}}\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport utils from \"@/utils/utils\"\r\n\r\nvar data = {\r\n loaded: false,\r\n debug: false,\r\n refDate: null,\r\n endDate: null,\r\n delta: 0,\r\n timer: null,\r\n alarmSent: false, // set True when the Enter Webinar button is activated\r\n countdownStarted: false // set True after first test of countdown in interval func\r\n }\r\n\r\nexport default {\r\n name: \"Countdown\",\r\n data() {\r\n return data\r\n },\r\n props: {\r\n serverTime: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n },\r\n endTime: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n },\r\n headline: {\r\n type: String,\r\n required: false,\r\n default: \"Live Webinar Begins In:\"\r\n },\r\n alarmSeconds: {\r\n type: Number,\r\n required: false,\r\n default: 3600 // 1800 = 30 minutes\r\n }\r\n },\r\n computed: {\r\n prettyCountdown() {\r\n return (this.loaded) ? utils.prettyCountdown(this.delta) : ''\r\n }\r\n },\r\n methods: {\r\n setDelta() {\r\n this.delta = Math.floor( (this.endDate.getTime() - this.refDate.getTime())/1000 )\r\n if (this.debug) console.log(`new delta: ${this.delta}`)\r\n }\r\n },\r\n watch: {\r\n // serverTime: function(newVal, oldVal) {\r\n // console.log(`serverTime changed: ${newVal} old: ${oldVal}`)\r\n // this.refDate = new Date(this.serverTime)\r\n // },\r\n endTime: function(newVal, oldVal) {\r\n if (this.debug) console.log(`endTime changed: ${newVal} old: ${oldVal} endTime: ${this.endTime}`)\r\n this.endDate = new Date(this.endTime)\r\n this.setDelta()\r\n }\r\n },\r\n created() {\r\n this.alarmSent = false\r\n },\r\n mounted() {\r\n if (this.debug) console.log(`Countdown ${this.serverTime} ${this.endTime} alarmSeconds: ${this.alarmSeconds}`)\r\n this.refDate = new Date(this.serverTime)\r\n this.endDate = new Date(this.endTime)\r\n // console.log(`Countdown Dates ${this.serverTime.toString()} ${this.endTime.toString()}`)\r\n // convert to seconds from milliseconds\r\n this.setDelta()\r\n // refresh every second\r\n this.timer = setInterval( ( function() {\r\n --this.delta // subtract 1 second\r\n // adjust delta downward to nearest minute for comparison\r\n if (!this.alarmSent && (this.alarmSeconds > 0) && ((this.delta-(this.delta % 60)) <= this.alarmSeconds)) {\r\n this.alarmSent = true\r\n if (this.debug) console.log(`Event: countdown-alarm: ${this.alarmSeconds} ${this.delta}`)\r\n this.$emit('countdown-alarm')\r\n }\r\n if (this.delta <= 0) {\r\n // console.log(`countdown timer stopped`)\r\n clearInterval(this.timer)\r\n this.timer = null\r\n }\r\n if (!this.countdownStarted) this.$emit('countdown-started')\r\n this.countdownStarted = true\r\n }).bind(this), 1000) // decrease seconds\r\n this.loaded = true\r\n },\r\n beforeDestroy() {\r\n clearInterval(this.timer)\r\n this.alarmSent = false\r\n this.countdownStarted = false\r\n this.loaded = false\r\n this.timer = null\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n .txt-webinar-begins {\r\n color: black;\r\n font-weight: bold;\r\n font-size: 1.2rem;\r\n }\r\n .txt-webinar-countdown {\r\n color: red;\r\n font-weight: bold;\r\n font-size: 1.2rem;\r\n }\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/Countdown.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.delta > 0)?_c('div',{staticClass:\"txt-webinar-begins\"},[_vm._v(_vm._s(_vm.headline))]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"txt-webinar-countdown\"},[_vm._v(\"\\n \"+_vm._s(_vm.prettyCountdown)+\"\\n \")])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-387ee4e8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Countdown.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-387ee4e8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Countdown.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Countdown.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Countdown.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-387ee4e8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Countdown.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-387ee4e8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Countdown.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <div v-if=\"!error\">\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\" class=\"text-center\">\r\n <countdown v-if=\"!loading\" :serverTime=\"classObj.serverTime\" :endTime=\"classObj.releaseDateUTC\" :alarmSeconds=\"alarmSeconds\" @countdown-alarm=\"countdownAlarm\"></countdown>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row>\r\n <b-col class=\"mt-3 mb-3 text-center\">\r\n <b-overlay :show=\"reserving\" rounded=\"sm\">\r\n <b-button variant=\"danger\" @click.prevent=\"reserveSeat\">Reserve Seat</b-button>\r\n </b-overlay>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body div-padding\">\r\n <b-row>\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"classObj.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{classObj.className}}</div>\r\n <div class=\"class-details\">\r\n {{classObj.name}}\r\n <br>Sponsor: {{classObj.companyName}}\r\n <br>{{classObj.credits}} CEU (Live, Interactive)\r\n <br><span class=\"red\">{{classObj.releaseDate | prettyDateTime}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <!-- :inner-html.prop instead of v-html -->\r\n <b-col class=\"txt-class-blurb mt-2\" :inner-html.prop=\"this.classObj.description | nl2br\"></b-col>\r\n </b-row>\r\n </div>\r\n\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\nimport Countdown from \"@/components/Countdown\"\r\n\r\nconst SECONDS_TO_ACTIVATE_WEBINAR = 60*30 // 60 seconds * 30 minutes\r\n\r\nexport default {\r\n name: \"Classroom\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n loading: false,\r\n alarmSeconds: SECONDS_TO_ACTIVATE_WEBINAR,\r\n msg: \"Classroom\",\r\n blurb: \"Classroom blurb.\",\r\n classObj: { status: false, zoomCode: null},\r\n studentData: {status: false, isReserved: false},\r\n studentHash: this.$root.getToken(),\r\n classHash: \"\",\r\n reserving: false,\r\n started: false\r\n }\r\n },\r\n components: {\r\n Countdown\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n computed: {},\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1)\r\n },\r\n countdownAlarm() {\r\n this.started = true\r\n console.log(`Countdown alarm sounded`)\r\n },\r\n reloadPage() {\r\n this.getClass()\r\n },\r\n reserveSeat() {\r\n if (this.debug) console.log(`Redirecting to classroomLive: ${this.classHash}`)\r\n this.reserving = true\r\n\r\n // Suppress the console navigation guard errors when forward then forwards to login.\r\n // https://stackoverflow.com/questions/62223195/vue-router-uncaught-in-promise-error-redirected-from-login-to-via-a\r\n this.$router.push(`/live/${this.classHash}`).catch(() => {})\r\n },\r\n getClass() {\r\n this.loading = true\r\n service\r\n .getClass(this.classHash, this.studentHash)\r\n .then(\r\n (data => {\r\n if (this.debug) console.log(data)\r\n if (data.status) {\r\n this.classObj = data.classObj\r\n if (this.classObj.typeId !== constants.CLASS_TYPE.LIVE) {\r\n // Class is not live\r\n this.$router.push(`/classroom/${this.classObj.hash}`).catch(() => {})\r\n }\r\n if (this.classObj.zoomCode === null) { console.log(`ALERT: null zoom code!`)}\r\n if (data.studentData.status) {\r\n this.studentData = data.studentData\r\n if (this.studentData.isReserved) {\r\n // student already reserved\r\n this.$router.push(`/live/${this.classObj.hash}`).catch(() => {})\r\n }\r\n }\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n // console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n })\r\n }\r\n },\r\n created() {\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || ''\r\n if (this.classHash) {\r\n this.getClass()\r\n }\r\n else {\r\n this.$router.push(\"/exams\").catch(() => {})\r\n }\r\n },\r\n mounted () {\r\n // console.log('mounted')\r\n },\r\n beforeDestroy() {\r\n this.classObj = {status: false}\r\n this.studentData = {status: false, isReserved: false}\r\n this.error = false\r\n this.loading = true\r\n this.reserving = false\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/ClassroomReserve.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[(!_vm.loading)?_c('countdown',{attrs:{\"serverTime\":_vm.classObj.serverTime,\"endTime\":_vm.classObj.releaseDateUTC,\"alarmSeconds\":_vm.alarmSeconds},on:{\"countdown-alarm\":_vm.countdownAlarm}}):_vm._e()],1)],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-3 text-center\"},[_c('b-overlay',{attrs:{\"show\":_vm.reserving,\"rounded\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":function($event){$event.preventDefault();return _vm.reserveSeat($event)}}},[_vm._v(\"Reserve Seat\")])],1)],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body div-padding\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.classObj.photo}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.classObj.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.classObj.name)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(_vm.classObj.companyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm.classObj.credits)+\" CEU (Live, Interactive)\\n \"),_c('br'),_c('span',{staticClass:\"red\"},[_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(_vm.classObj.releaseDate)))])])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"txt-class-blurb mt-2\",domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.classObj.description)}})],1)],1)]):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-9f20adfa\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ClassroomReserve.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-9f20adfa\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ClassroomReserve.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomReserve.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomReserve.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f20adfa\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ClassroomReserve.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-9f20adfa\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ClassroomReserve.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading || reserving\">\r\n <div class=\"ml-2 font-weight-bold\">\r\n <b-link v-if=\"!inLobby\" to=\"/webinars\"><b-icon icon=\"chevron-left\"></b-icon> All Upcoming Live Webinars</b-link>\r\n <b-link v-if=\"inLobby\" @click=\"inLobby = false\"><b-icon icon=\"chevron-left\"></b-icon> Return to Classroom</b-link>\r\n </div>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">{{errorMsg}}</b-alert>\r\n\r\n <div v-if=\"!error\">\r\n\r\n <template v-if=\"!privacyOptinShow\">\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\" class=\"text-center\">\r\n <countdown v-if=\"!loading\" :serverTime=\"getServerTime\" :endTime=\"getReleaseDate\" :alarmSeconds=\"alarmSeconds\" @countdown-started=\"countdownStarted\" @countdown-alarm=\"countdownAlarm\"></countdown>\r\n </b-col>\r\n </b-row>\r\n\r\n <div v-if=\"!loading && !reserving\">\r\n <b-row v-if=\"!studentData.isWaiting\">\r\n <b-col class=\"mt-3 mb-1 text-center\">\r\n\r\n <b-overlay :show=\"starting || !isCountdownStarted\" rounded=\"sm\">\r\n <b-button v-if=\"started\" :disabled=\"btnWebinarDisabled\" :variant=\"btnWebinarVariant\" class=\"mt-2\" @click.prevent=\"classStart\">Enter Webinar</b-button>\r\n <b-button v-if=\"!started && !inLobby && isCountdownStarted\" variant=\"success\" class=\"mt-2\" @click.prevent=\"inLobby=true\">Enter Lobby</b-button>\r\n </b-overlay>\r\n\r\n <div class=\"mt-2\" v-if=\"!inLobby\">\r\n <ul class=\"text-left\" style=\"font-size: .75rem;\">\r\n <li>The Enter Webinar button will become visible within 5 minutes of the scheduled starting time.</li>\r\n <li>This webinar requires the Zoom application. If you don't have Zoom installed, you will be prompted to download it after clicking Enter Webinar.</li>\r\n <li>Download and installation takes less than 30 seconds. You will only need to do this one time</li>\r\n </ul>\r\n </div>\r\n\r\n <b-button class=\"mt-2\" :href=\"icalCalendar\" variant=\"outline-primary\" size=\"sm\" v-if=\"!inLobby\">\r\n <b-icon icon=\"calendar-plus\" aria-hidden=\"true\"></b-icon> \r\n Add Event to Calendar\r\n </b-button>\r\n <!-- <div class=\"calendar-webinar\" style=\"text-align: center;\">Add To Calendar</div>\r\n <div style=\"text-align: center; margin-bottom: 15px;\">\r\n <a :href=\"googleCalendarUrl()\" class=\"cal-google\" title=\"Add to Google Calendar\" target=\"_blank\"><img style=\"height:22px;padding-left: 4px;\" src=\"@/art/icon-google-t5.svg\"></a>\r\n <a :href=\"icalCalendar\" class=\"cal-apple\" title=\"Add to Apple iCal\"><img style=\"height:25px;padding-left: 4px;\" src=\"@/art/icon-apple-t5.svg\"></a>\r\n <a :href=\"icalCalendar\" class=\"cal-outlook\" title=\"Add to Outlook Calendar\"><img style=\"height:22px;\" src=\"@/art/icon-outlookcom-t5.svg\"></a>\r\n </div> -->\r\n\r\n </b-col>\r\n </b-row>\r\n <b-card v-if=\"studentData.isWaiting\" class=\"text-center mt-3 mb-1\" style=\"background-color: #FFD;\">\r\n <b-button variant=\"info\" @click=\"reloadPage\">On Waitlist</b-button>\r\n <div class=\"mt-2 text-left\">\r\n This class is full and you are on the waitlist. If you received an email that you've been added to the class, click the button to update your status.\r\n </div>\r\n </b-card>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div-section-body div-padding\" v-if=\"!inLobby\">\r\n <b-row>\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"classObj.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{classObj.className}}</div>\r\n <div class=\"class-details\">\r\n {{classObj.name}}\r\n <br />\r\n Sponsor: {{classObj.companyName}}\r\n <br>\r\n {{classObj.credits}} CEU (Live, Interactive)\r\n <br />\r\n <span class=\"red\">{{classObj.releaseDate | prettyDateTime}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <!-- :inner-html.prop instead of v-html -->\r\n <b-col class=\"txt-class-blurb mt-2\" :inner-html.prop=\"this.classObj.description | nl2br\"></b-col>\r\n </b-row>\r\n </div>\r\n\r\n <template v-if=\"inLobby\">\r\n <lobby-webinar :c=\"classObj\" :s=\"studentData\"></lobby-webinar>\r\n </template>\r\n </template>\r\n\r\n <template v-if=\"privacyOptinShow\">\r\n\r\n <b-card\r\n :title=\"privacyBlock.title\"\r\n class=\"mt-2\"\r\n style=\"border: 1px solid silver;\"\r\n >\r\n <b-card-text>\r\n <div v-html=\"privacyBlock.blurb\"></div>\r\n </b-card-text>\r\n\r\n <b-button id=\"popover-learnmore\" variant=\"link\">What does this mean?</b-button>\r\n <b-popover\r\n target=\"popover-learnmore\"\r\n placement=\"left\"\r\n triggers=\"hover focus\"\r\n style=\"min-width: 600px;\"\r\n >\r\n <template #title>What does this mean?</template>\r\n <div :inner-html.prop=\"privacyBlock.learnmore | nl2br\"></div>\r\n </b-popover>\r\n\r\n <div class=\"text-center mt-2\">\r\n <b-button @click=\"setOptin\" size=\"lg\" variant=\"primary\" class=\"mr-2\">Yes</b-button>\r\n <b-button @click=\"cancelOptin\" size=\"lg\" variant=\"outline-primary\" class=\"ml-2\">No</b-button>\r\n </div>\r\n\r\n </b-card>\r\n\r\n </template>\r\n\r\n </div> <!-- !error -->\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport Countdown from \"@/components/Countdown\"\r\nimport constants from \"@/config/constants\"\r\n\r\nconst SECONDS_TO_ACTIVATE_WEBINAR = 60*5 // 60 seconds * 5 minutes (formerly 30)\r\n\r\nexport default {\r\n name: \"ClassroomLive\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: 'No class selected.',\r\n loading: true,\r\n reserving: false,\r\n busy: false,\r\n alarmSeconds: SECONDS_TO_ACTIVATE_WEBINAR,\r\n msg: \"Classroom\",\r\n blurb: \"Classroom blurb.\",\r\n classObj: { status: false, zoomCode: null},\r\n studentData: {status: false, isWaiting: false, attendeeId: 0, gradebookId: 0},\r\n studentHash: this.$root.getToken(),\r\n classHash: \"\",\r\n starting: false, // set to true when student is entering webinar\r\n started: false, // set true when Enter Webinar button is active\r\n inLobby: false, // set true when student is in Webinar Lobbby\r\n isCountdownStarted: false, // set true when countdown object is tracking webinar start\r\n timer: null, // polls class status\r\n privacyBlockTest: { status: true\r\n , title: 'Philips Oral Healthcare Contact Permission'\r\n , blurb: 'I would like to receive marketing related electronic communications about Philips products services, events and promotions that may be relevant to me based on my user preferences and behavior. I can revoke my consent at any time.'\r\n , learnmore: 'At Philips we have a longstanding commitment to respect the privacy of our consumers, customers and other individuals we deal with, such as patients. To live up to this commitment, we have adopted and implemented a set of Binding Corporate Rules (known as Philips Privacy Rules) which define how we adequately process personal data throughout the Philips group, both in our capacity as Controller and as Processor. We also rely on our Binding Corporate Rules when transferring personal data between Philips group companies worldwide. In fact, we were one of the first companies in Europe to have received the approval of the competent data protection authorities of the European Union for our Binding Corporate Rules. The Philips Privacy Rules (Controller) define, for example, under which legal basis we legitimately process personal data, what are the envisaged criteria to retain personal data (before erasure) or when to provide privacy notices to the relevant individuals.'\r\n },\r\n privacyBlock: { status: true\r\n , title: null\r\n , blurb: null\r\n , learnmore: null\r\n },\r\n privacyOptinShow: false\r\n }\r\n },\r\n components: {\r\n 'countdown': Countdown\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n getServerTime() {\r\n return this.classObj.serverTime\r\n },\r\n getReleaseDate() {\r\n return this.classObj.releaseDateUTC\r\n },\r\n btnWebinarDisabled() {\r\n let aout = this.classObj.zoomCode === null || !this.started\r\n if (this.debug) console.log(`btnWebinarDisabled: ${aout} zoom: ${this.classObj.zoomCode} started: ${this.started}`)\r\n return aout\r\n },\r\n btnWebinarVariant() {\r\n let aout = (this.classObj.zoomCode !== null && this.started) ? 'success' : 'secondary'\r\n if (this.debug) console.log(`btnWebinarVariant: ${aout} zoom: ${this.classObj.zoomCode} started: ${this.started}`)\r\n return aout\r\n },\r\n zoomUrl() {\r\n let url = `https://zoom.us/j/${this.classObj.zoomCode}`\r\n return url\r\n },\r\n icalCalendar() {\r\n let url = `${this.getDesktopUrl}/member/calendarAdd.asp?type=ical&h=${this.classObj.hash}`\r\n return url\r\n },\r\n getDesktopUrl() {\r\n // Defined in main.js\r\n return this.$desktopUrl\r\n },\r\n canShowLobby() {\r\n // Returns true when Enter Lobby button can be visible.\r\n return !this.started && !this.inLobby\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1)\r\n },\r\n countdownAlarm() {\r\n if (this.debug) console.log(`Event: countdown-alarm`)\r\n this.scrollToTop()\r\n this.started = true // turn on Enter Webinar button\r\n this.inLobby = false // turn off lobby\r\n },\r\n countdownStarted() {\r\n if (this.debug) console.log(`Event: countdown-started`)\r\n this.isCountdownStarted = true // turn on button section; either Enter Webinar or Enter Lobby\r\n },\r\n scrollToTop() {\r\n window.scrollTo(0,0)\r\n },\r\n googleCalendarUrl() {\r\n var aout, url, subject, msg\r\n var startDateZ, endDateZ, startDate, endDate\r\n\r\n url = `${this.getDesktopUrl}/member/classroom.asp?x_classId=${this.classObj.classId}`\r\n subject = \"Live CE Webinar: Viva Learning\"\r\n msg = `${this.classObj.className} by ${this.classObj.name}\\n${url}`\r\n\r\n startDate = new Date(this.classObj.releaseDate)\r\n\r\n // Add the durationMin to get class end time. Keep on 2 lines\r\n endDate = new Date(startDate.getTime())\r\n endDate.setMinutes(startDate.getMinutes() + this.classObj.durationMin)\r\n\r\n // YYYYMMNN T HHMMSS Z <-- T and Z are literals\r\n startDateZ = utils.getDateTimeZ(startDate) // \"20210205T2300Z\"\r\n endDateZ = utils.getDateTimeZ(endDate)\t// \"20210205T2330Z\"\r\n\r\n aout = \"https://calendar.google.com/calendar/r/eventedit\"\r\n + \"?text=\" + subject\r\n + \"&dates=\" + startDateZ +\"/\" + endDateZ\r\n + \"&details=\" + encodeURI(msg)\r\n + \"&location=\" + encodeURI(url)\r\n\r\n // console.log(`aout: ${aout}`)\r\n return aout\r\n },\r\n reloadPage() {\r\n this.getClass()\r\n },\r\n reserveSeat() {\r\n if (this.debug) console.log(`Reserving seat: ${this.classHash}`)\r\n this.reserving = true\r\n service\r\n .reserveSeat(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // this.$router.push(`/live/${this.classHash}`)\r\n this.studentData.status = res.status\r\n this.studentData.attendeeId = res.attendeeId\r\n this.studentData.isWaiting = res.isWaiting\r\n if ( res.hasOwnProperty('privacyBlock') && res.privacyBlock.status) {\r\n // Display privacy block.\r\n this.privacyBlock = res.privacyBlock\r\n this.privacyOptinShow = true\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Unable to reserve seat.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.reserving = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error trapped while reserving seat.\"\r\n console.log(e);\r\n })\r\n },\r\n setOptin() {\r\n let optinFlag = true\r\n if (this.debug) console.log(`setOptin: ${this.classHash} ${optinFlag}`)\r\n this.reserving = true\r\n service\r\n .setOptin(this.classHash, this.studentHash, optinFlag)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.privacyOptinShow = false\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Unable to record optin.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.reserving = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error trapped while recording optin.\"\r\n console.log(e);\r\n })\r\n },\r\n cancelOptin() {\r\n this.privacyOptinShow = false\r\n },\r\n classStart() {\r\n if (this.debug) console.log(`Class start: ${this.classHash}`)\r\n this.starting = true\r\n service\r\n .classStart(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.studentData.status = res.status\r\n this.studentData.attendeeId = res.attendeeId\r\n this.studentData.gradebookId = res.gradebookId\r\n // let zoom = window.open(this.zoomUrl, '_blank')\r\n // if (zoom) zoom.focus()\r\n window.location.assign(this.zoomUrl)\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Error classStart service.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.starting = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Trapped error: classStart\"\r\n console.log(e)\r\n })\r\n },\r\n getClass() { // recalled via setInterval() - forwards to /classroom on class end.\r\n if (this.busy) return // still servicing call.\r\n this.busy = true\r\n service\r\n .getClass(this.classHash, this.studentHash)\r\n .then(\r\n (data => {\r\n if (this.debug) console.log(data)\r\n if (data.status) {\r\n this.classObj = data.classObj\r\n if (this.classObj.typeId != constants.CLASS_TYPE.LIVE) {\r\n // Class not live head over to archive classroom.\r\n this.$router.push(`/classroom/${this.classObj.hash}`)\r\n }\r\n if (this.classObj.zoomCode === null) { console.log(`ALERT: null zoom code!`)}\r\n\r\n this.studentData = data.studentData\r\n this.studentData.status = data.status\r\n if (this.debug) console.log(`Back from getClass attendeeId: ${this.studentData.attendeeId}`)\r\n if (this.studentData.attendeeId === 0) {\r\n // Reserve seat for student.\r\n this.reserveSeat()\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Service error: getClass.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n this.loading = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Trapped error: getClass service.\"\r\n // ?? Cancel timer? Ask to refresh page. What if lost internet access?\r\n console.log(e)\r\n })\r\n }\r\n },\r\n created() {\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || null\r\n if (this.classHash) {\r\n this.loading = true\r\n this.getClass()\r\n if (!this.error) {\r\n // Page polls service to detect class start.\r\n this.timer = window.setInterval(this.reloadPage.bind(this), 15000) // 15 seconds\r\n }\r\n }\r\n else {\r\n this.$router.push(\"/exams\") // CE in progress\r\n }\r\n },\r\n mounted () {\r\n if (this.debug) console.log('ClassroomLive mounted')\r\n },\r\n beforeDestroy() {\r\n this.classObj = {status: false, zoomCode: null}\r\n this.studentData = {status: false, isWaiting: false, attendeeId: 0, gradebookId: 0}\r\n this.error = false\r\n this.privacyOptinShow = false\r\n if (this.timer) window.clearInterval(this.timer)\r\n this.timer = null\r\n // this.loading = true\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n\t\t.calendar-webinar{\r\n\t\t\ttext-align: center;\r\n\t\t\tmargin: 15px;\r\n\t\t\tfont-weight: 600;\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t\t.cal-google {\r\n\t\t\tcursor: pointer !important;\r\n\t\t}\r\n\t\t.cal-apple {\r\n\t\t\tpadding-left: 8px;\r\n\t\t\tcursor: pointer !important;\r\n\t\t}\r\n\r\n\t\t.cal-outlook {\r\n\t\t\tcolor: #3b5998 !important;\r\n\t\t\tcursor: pointer !important;\r\n\t\t\tpadding-left: 12px;\r\n\t\t}\r\n\r\n\t\t.cal-icon-apple {\r\n \t\tbackground: url(/art/icon-apple-t5.svg) 18px 40% no-repeat;\r\n \t\tbackground-size: 22px 100%;\r\n\t\t\tpadding-left: 8px;\r\n\t\t}\r\n\t\t.cal-icon-google {\r\n\t\t\tbackground: url(/art/icon-google-t5.svg) 18px 50% no-repeat;\r\n\t\t\tbackground-size: 22px 100%;\r\n\t\t\tpadding-left: 8px;\r\n\t\t}\r\n\t\t.cal-icon-outlook {\r\n\t\t\tbackground: url(/art/icon-office365-t5.svg) 19px 50% no-repeat;\r\n\t\t\tbackground-size: 18px 100%;\r\n\t\t}\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/ClassroomLive.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading || _vm.reserving}},[_c('div',{staticClass:\"ml-2 font-weight-bold\"},[(!_vm.inLobby)?_c('b-link',{attrs:{\"to\":\"/webinars\"}},[_c('b-icon',{attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\" All Upcoming Live Webinars\")],1):_vm._e(),_vm._v(\" \"),(_vm.inLobby)?_c('b-link',{on:{\"click\":function($event){_vm.inLobby = false}}},[_c('b-icon',{attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\" Return to Classroom\")],1):_vm._e()],1),_vm._v(\" \"),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(_vm._s(_vm.errorMsg))]):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('div',[(!_vm.privacyOptinShow)?[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[(!_vm.loading)?_c('countdown',{attrs:{\"serverTime\":_vm.getServerTime,\"endTime\":_vm.getReleaseDate,\"alarmSeconds\":_vm.alarmSeconds},on:{\"countdown-started\":_vm.countdownStarted,\"countdown-alarm\":_vm.countdownAlarm}}):_vm._e()],1)],1),_vm._v(\" \"),(!_vm.loading && !_vm.reserving)?_c('div',[(!_vm.studentData.isWaiting)?_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-1 text-center\"},[_c('b-overlay',{attrs:{\"show\":_vm.starting || !_vm.isCountdownStarted,\"rounded\":\"sm\"}},[(_vm.started)?_c('b-button',{staticClass:\"mt-2\",attrs:{\"disabled\":_vm.btnWebinarDisabled,\"variant\":_vm.btnWebinarVariant},on:{\"click\":function($event){$event.preventDefault();return _vm.classStart($event)}}},[_vm._v(\"Enter Webinar\")]):_vm._e(),_vm._v(\" \"),(!_vm.started && !_vm.inLobby && _vm.isCountdownStarted)?_c('b-button',{staticClass:\"mt-2\",attrs:{\"variant\":\"success\"},on:{\"click\":function($event){$event.preventDefault();_vm.inLobby=true}}},[_vm._v(\"Enter Lobby\")]):_vm._e()],1),_vm._v(\" \"),(!_vm.inLobby)?_c('div',{staticClass:\"mt-2\"},[_c('ul',{staticClass:\"text-left\",staticStyle:{\"font-size\":\".75rem\"}},[_c('li',[_vm._v(\"The Enter Webinar button will become visible within 5 minutes of the scheduled starting time.\")]),_vm._v(\" \"),_c('li',[_vm._v(\"This webinar requires the Zoom application. If you don't have Zoom installed, you will be prompted to download it after clicking Enter Webinar.\")]),_vm._v(\" \"),_c('li',[_vm._v(\"Download and installation takes less than 30 seconds. You will only need to do this one time\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.inLobby)?_c('b-button',{staticClass:\"mt-2\",attrs:{\"href\":_vm.icalCalendar,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon',{attrs:{\"icon\":\"calendar-plus\",\"aria-hidden\":\"true\"}}),_vm._v(\" \\n Add Event to Calendar\\n \")],1):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.studentData.isWaiting)?_c('b-card',{staticClass:\"text-center mt-3 mb-1\",staticStyle:{\"background-color\":\"#FFD\"}},[_c('b-button',{attrs:{\"variant\":\"info\"},on:{\"click\":_vm.reloadPage}},[_vm._v(\"On Waitlist\")]),_vm._v(\" \"),_c('div',{staticClass:\"mt-2 text-left\"},[_vm._v(\"\\n This class is full and you are on the waitlist. If you received an email that you've been added to the class, click the button to update your status.\\n \")])],1):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(!_vm.inLobby)?_c('div',{staticClass:\"div-section-body div-padding\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.classObj.photo}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.classObj.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.classObj.name)+\"\\n \"),_c('br'),_vm._v(\"\\n Sponsor: \"+_vm._s(_vm.classObj.companyName)+\"\\n \"),_c('br'),_vm._v(\"\\n \"+_vm._s(_vm.classObj.credits)+\" CEU (Live, Interactive)\\n \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"red\"},[_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(_vm.classObj.releaseDate)))])])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"txt-class-blurb mt-2\",domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.classObj.description)}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.inLobby)?[_c('lobby-webinar',{attrs:{\"c\":_vm.classObj,\"s\":_vm.studentData}})]:_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.privacyOptinShow)?[_c('b-card',{staticClass:\"mt-2\",staticStyle:{\"border\":\"1px solid silver\"},attrs:{\"title\":_vm.privacyBlock.title}},[_c('b-card-text',[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.privacyBlock.blurb)}})]),_vm._v(\" \"),_c('b-button',{attrs:{\"id\":\"popover-learnmore\",\"variant\":\"link\"}},[_vm._v(\"What does this mean?\")]),_vm._v(\" \"),_c('b-popover',{staticStyle:{\"min-width\":\"600px\"},attrs:{\"target\":\"popover-learnmore\",\"placement\":\"left\",\"triggers\":\"hover focus\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\"What does this mean?\")]},proxy:true}],null,false,4257625172)},[_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._f(\"nl2br\")(_vm.privacyBlock.learnmore)}})]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-2\"},[_c('b-button',{staticClass:\"mr-2\",attrs:{\"size\":\"lg\",\"variant\":\"primary\"},on:{\"click\":_vm.setOptin}},[_vm._v(\"Yes\")]),_vm._v(\" \"),_c('b-button',{staticClass:\"ml-2\",attrs:{\"size\":\"lg\",\"variant\":\"outline-primary\"},on:{\"click\":_vm.cancelOptin}},[_vm._v(\"No\")])],1)],1)]:_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2651b0dc\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ClassroomLive.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2651b0dc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ClassroomLive.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomLive.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomLive.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2651b0dc\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ClassroomLive.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2651b0dc\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ClassroomLive.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- LIVE WEBINARS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Cancel Seat</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-card v-if=\"classObj.classId !== 0\" class=\"text-center mt-3 mb-3\" style=\"background-color: #FFD;\">\r\n <b-overlay :show=\"busy\" rounded=\"sm\">\r\n <b-button variant=\"danger\" @click=\"cancelSeat\">I Cannot Attend</b-button>\r\n </b-overlay>\r\n <div class=\"mt-2 text-left\">\r\n If you are unable to attend this live online presentation please click the red button.\r\n Doing so will allow your seat to be assigned to someone on the waiting list for this class.\r\n </div>\r\n </b-card>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row class=\"pt-2\">\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"classObj.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{classObj.className}}</div>\r\n <div class=\"class-details\">\r\n {{classObj.name}}\r\n <br />\r\n Sponsor: {{classObj.companyName}}\r\n <br>\r\n {{classObj.credits}} CEU (Live, Interactive)\r\n <br />\r\n <span class=\"red\">{{classObj.releaseDate | prettyDateTime}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"pb-3\" style=\"padding: 0px 3px 10px 3px;\">\r\n <!-- :inner-html.prop instead of v-html -->\r\n <b-col class=\"mt-2\" :inner-html.prop=\"this.classObj.description | nl2br\"></b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n loading: true,\r\n busy: false,\r\n msg: \"Cancel Seat\",\r\n blurb: \"Cancel Seat.\",\r\n classObj: { status: false},\r\n studentHash: \"\",\r\n classHash: \"\",\r\n cancelCode: \"\"\r\n}\r\n\r\nexport default {\r\n name: \"CancelSeat\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n code: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n btnWebinarDisabled() {\r\n return (this.classObj.zoomCode === null)\r\n },\r\n btnWebinarVariant() {\r\n return (this.classObj.zoomCode !== null) ? 'success' : 'secondary'\r\n },\r\n btnExamDisabled() {\r\n return (this.classObj.zoomCode === null)\r\n },\r\n btnExamVariant() {\r\n return (this.classObj.zoomCode !== null) ? 'secondary' : 'secondary'\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n cancelSeat() {\r\n // console.log(`Cancel Seat: ${this.cancelCode}`)\r\n if (!window.confirm('Please confirm your intent to release your seat.')) return;\r\n this.busy = true\r\n service\r\n .cancelSeat(this.cancelCode, this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from cancelSeat!`)\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // proceed to webinars\r\n this.$router.push('/webinars')\r\n }\r\n else {\r\n console.log(`Error on return from cancelSeat. ${res.status}`)\r\n this.error = true\r\n this.errorMsg = res.errorMsg || 'Unable to cancel seat. Unknown reason.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n })\r\n }\r\n },\r\n created() {\r\n this.cancelCode = this.code || this.$route.query.code || ''\r\n this.studentHash = this.$root.getToken()\r\n if (this.cancelCode) {\r\n service\r\n .getCancelSeat(this.cancelCode, this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from getCancelSeat!`)\r\n if (this.debug) console.log(data)\r\n if (res.status) {\r\n this.classObj = res.data[0]\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n this.$router.push(\"/exams\")\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n },\r\n mounted () { console.log('mounted') },\r\n beforeDestroy() {\r\n this.classObj = {status: false, zoomCode: null}\r\n this.studentData = {status: false}\r\n this.error = false\r\n this.loading = true\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/CancelSeat.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Cancel Seat\")])])])],1)],1),_vm._v(\" \"),(_vm.classObj.classId !== 0)?_c('b-card',{staticClass:\"text-center mt-3 mb-3\",staticStyle:{\"background-color\":\"#FFD\"}},[_c('b-overlay',{attrs:{\"show\":_vm.busy,\"rounded\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":_vm.cancelSeat}},[_vm._v(\"I Cannot Attend\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"mt-2 text-left\"},[_vm._v(\"\\n If you are unable to attend this live online presentation please click the red button.\\n Doing so will allow your seat to be assigned to someone on the waiting list for this class.\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('b-row',{staticClass:\"pt-2\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.classObj.photo}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.classObj.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.classObj.name)+\"\\n \"),_c('br'),_vm._v(\"\\n Sponsor: \"+_vm._s(_vm.classObj.companyName)+\"\\n \"),_c('br'),_vm._v(\"\\n \"+_vm._s(_vm.classObj.credits)+\" CEU (Live, Interactive)\\n \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"red\"},[_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(_vm.classObj.releaseDate)))])])])],1),_vm._v(\" \"),_c('b-row',{staticClass:\"pb-3\",staticStyle:{\"padding\":\"0px 3px 10px 3px\"}},[_c('b-col',{staticClass:\"mt-2\",domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.classObj.description)}})],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4270d018\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CancelSeat.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4270d018\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CancelSeat.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CancelSeat.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CancelSeat.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4270d018\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CancelSeat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4270d018\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CancelSeat.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n\r\n <b-row v-if=\"!error\">\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"classObj.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{classObj.className}}</div>\r\n <div v-if=\"false\" class=\"class-details\">\r\n {{classObj.name}}\r\n <br />\r\n Sponsor: {{classObj.companyName}}\r\n <br>\r\n {{classObj.credits}} CEU ({{ studentData.ceTypeId | prettyCEType }})\r\n <br />\r\n <span class=\"red\">{{classObj.releaseDate | prettyDateTime}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!error && !loading\">\r\n\r\n <!-- == ONDEMAND AFFIDAVIT == -->\r\n <b-col cols=\"12\" class=\"text-center\" v-if=\"!isLive\">\r\n <b-card\r\n title=\"Verification of Participation Affidavit\"\r\n tag=\"article\"\r\n style=\"max-width: 100%;\"\r\n class=\"mt-2 mb-2\"\r\n >\r\n <b-card-text style=\"text-align:left;\">\r\n This self-study class is equivalent to {{classObj.credits}} self-study CEU based on the content and duration of this activity per the guidelines of AGD PACE.\r\n </b-card-text>\r\n\r\n <b-card-text style=\"border:2px solid silver;\">\r\n <div class=\"p-3\">\r\n I attest that I have completed the CE activity in its entirety and am ready to proceed to the CE exam.\r\n <b-row class=\"mt-2\">\r\n <b-col rows=\"6\">\r\n <b-button variant=\"success\" @click=\"confirmOndemandAttendance(true)\">Proceed to Exam</b-button>\r\n </b-col>\r\n <b-col rows=\"6\">\r\n <b-button variant=\"danger\" @click=\"confirmOndemandAttendance(false)\">Return to Classroom</b-button>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </b-card-text>\r\n\r\n </b-card>\r\n </b-col>\r\n\r\n <!-- == LIVE AFFIDAVIT == -->\r\n <b-col cols=\"12\" class=\"text-center\" v-if=\"isLive\">\r\n <div>\r\n <b-card\r\n title=\"Yes! I attended this live webinar.\"\r\n tag=\"article\"\r\n style=\"max-width: 100%;\"\r\n class=\"mt-2 mb-2\"\r\n >\r\n <b-card-text style=\"text-align:left;\">\r\n Earn live, interactice CEU by confirming your attendance at this live webinar.\r\n </b-card-text>\r\n\r\n <b-overlay :show=\"savingYes\" rounded=\"sm\">\r\n <b-button variant=\"success\" @click=\"confirmLiveAttendance(true)\">Yes I Attended</b-button>\r\n </b-overlay>\r\n </b-card>\r\n </div>\r\n\r\n <div>\r\n <b-card\r\n title=\"No, I was unable to attend this webinar.\"\r\n tag=\"article\"\r\n style=\"max-width: 100%;\"\r\n class=\"mb-2\"\r\n >\r\n <b-card-text style=\"text-align:left;\">\r\n If you were not able to attend this live webinar you can still earn self-study credit after watching the playback and passing the exam.\r\n </b-card-text>\r\n\r\n <b-overlay :show=\"savingNo\" rounded=\"sm\">\r\n <b-button variant=\"secondary\" @click=\"confirmLiveAttendance(false)\">No, I Did Not Attend</b-button>\r\n </b-overlay>\r\n </b-card>\r\n </div>\r\n </b-col>\r\n\r\n </b-row>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n loading: true,\r\n msg: \"Classroom\",\r\n blurb: \"Classroom blurb.\",\r\n classObj: {status: false, zoomCode: null},\r\n studentData: {status: false},\r\n studentHash: \"\",\r\n classHash: \"\",\r\n savingYes: false,\r\n savingNo: false\r\n}\r\n\r\nexport default {\r\n name: \"Classroom\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n description: function() {\r\n return utils.nl2br(this.classObj.description);\r\n },\r\n isLive: function() {\r\n // Indicates student started live webinar.\r\n return this.studentData.studentStarted\r\n }\r\n },\r\n methods: {\r\n gotoClass() {\r\n this.$router.push(`/classroom/${this.classHash}`)\r\n },\r\n gotoEval() {\r\n this.$router.push(`/eval/${this.classHash}`)\r\n },\r\n confirmOndemandAttendance(attended) {\r\n // TBD - save timestamped response in gradebook?\r\n if (attended) {\r\n this.gotoEval()\r\n }\r\n else {\r\n this.gotoClass()\r\n }\r\n },\r\n confirmLiveAttendance(attended) {\r\n // console.log(`Attendance: ${attended}`)\r\n\r\n this.savingYes = attended\r\n this.savingNo = !attended\r\n\r\n let data = {\r\n c: this.classHash,\r\n s: this.studentHash,\r\n attended: attended\r\n }\r\n service\r\n .saveAffidavit(data)\r\n .then(\r\n (res => {\r\n // console.log(`back from saveAffidavit!`)\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.gotoEval()\r\n }\r\n else {\r\n // status returns false when student did not reserve seat\r\n this.error = true\r\n this.errorMsg = 'Error recording response. Try again later.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.saving = false;\r\n console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System error recording response. Try again later.'\r\n console.log(e)\r\n })\r\n }\r\n },\r\n created() {\r\n this.loading = true\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || null\r\n this.studentHash = this.$root.getToken();\r\n if (this.classHash) {\r\n service\r\n .getClass(this.classHash, this.studentHash)\r\n .then(\r\n (data => {\r\n if (this.debug) console.log(data)\r\n if (data.status) {\r\n this.classObj = data.classObj\r\n if (data.studentData.status) { // Gradebook data available?\r\n this.studentData = data.studentData\r\n if (this.studentData.classViewCount === 0) {\r\n alert('Please view class before taking exam.')\r\n this.gotoClass()\r\n }\r\n else if (this.studentData.examTaken) {\r\n alert('Exam completed. Returning to classroom.')\r\n this.gotoClass()\r\n }\r\n else if ( this.studentData.studentEnded ) {\r\n // Live class affidavit completed (studentEnded <> 0).\r\n this.gotoEval()\r\n }\r\n }\r\n else {\r\n // Added 6/13/2023 - ask student to return to classroom to view class.\r\n // Student attending a live class will always have a gradebook record.\r\n alert('Please view class before taking exam.')\r\n this.gotoClass()\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = 'Data error. Try again later.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System Error. Try again later.'\r\n console.log(e);\r\n })\r\n }\r\n else {\r\n // route should prevent this option\r\n this.$router.push(\"/exams\") // CE in progress\r\n this.error = true\r\n this.errorMsg = 'No class selected.'\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n },\r\n mounted () {\r\n if (this.debug) console.log('mounted')\r\n },\r\n beforeDestroy() {\r\n this.classObj = {status: false, zoomCode: null}\r\n this.studentData = {status: false}\r\n this.savingYes = false\r\n this.savingNo = false\r\n this.loading = true\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n.card-title {\r\n font-size: 1.09rem;\r\n font-weight: bold;\r\n}\r\n.txt-webinar-begins {\r\n color: black;\r\n font-weight: bold;\r\n font-size: 1.25rem;\r\n}\r\n.txt-webinar-countdown {\r\n color: red;\r\n font-weight: bold;\r\n font-size: 1.25rem;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/ClassroomAffidavit.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.classObj.photo}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.classObj.className))]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.classObj.name)+\"\\n \"),_c('br'),_vm._v(\"\\n Sponsor: \"+_vm._s(_vm.classObj.companyName)+\"\\n \"),_c('br'),_vm._v(\"\\n \"+_vm._s(_vm.classObj.credits)+\" CEU (\"+_vm._s(_vm._f(\"prettyCEType\")(_vm.studentData.ceTypeId))+\")\\n \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"red\"},[_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(_vm.classObj.releaseDate)))])]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(!_vm.error && !_vm.loading)?_c('b-row',[(!_vm.isLive)?_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('b-card',{staticClass:\"mt-2 mb-2\",staticStyle:{\"max-width\":\"100%\"},attrs:{\"title\":\"Verification of Participation Affidavit\",\"tag\":\"article\"}},[_c('b-card-text',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\"\\n This self-study class is equivalent to \"+_vm._s(_vm.classObj.credits)+\" self-study CEU based on the content and duration of this activity per the guidelines of AGD PACE.\\n \")]),_vm._v(\" \"),_c('b-card-text',{staticStyle:{\"border\":\"2px solid silver\"}},[_c('div',{staticClass:\"p-3\"},[_vm._v(\"\\n I attest that I have completed the CE activity in its entirety and am ready to proceed to the CE exam.\\n \"),_c('b-row',{staticClass:\"mt-2\"},[_c('b-col',{attrs:{\"rows\":\"6\"}},[_c('b-button',{attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.confirmOndemandAttendance(true)}}},[_vm._v(\"Proceed to Exam\")])],1),_vm._v(\" \"),_c('b-col',{attrs:{\"rows\":\"6\"}},[_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":function($event){return _vm.confirmOndemandAttendance(false)}}},[_vm._v(\"Return to Classroom\")])],1)],1)],1)])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.isLive)?_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_c('div',[_c('b-card',{staticClass:\"mt-2 mb-2\",staticStyle:{\"max-width\":\"100%\"},attrs:{\"title\":\"Yes! I attended this live webinar.\",\"tag\":\"article\"}},[_c('b-card-text',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\"\\n Earn live, interactice CEU by confirming your attendance at this live webinar.\\n \")]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.savingYes,\"rounded\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"success\"},on:{\"click\":function($event){return _vm.confirmLiveAttendance(true)}}},[_vm._v(\"Yes I Attended\")])],1)],1)],1),_vm._v(\" \"),_c('div',[_c('b-card',{staticClass:\"mb-2\",staticStyle:{\"max-width\":\"100%\"},attrs:{\"title\":\"No, I was unable to attend this webinar.\",\"tag\":\"article\"}},[_c('b-card-text',{staticStyle:{\"text-align\":\"left\"}},[_vm._v(\"\\n If you were not able to attend this live webinar you can still earn self-study credit after watching the playback and passing the exam.\\n \")]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.savingNo,\"rounded\":\"sm\"}},[_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.confirmLiveAttendance(false)}}},[_vm._v(\"No, I Did Not Attend\")])],1)],1)],1)]):_vm._e()],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ca14ff6c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ClassroomAffidavit.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ca14ff6c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ClassroomAffidavit.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomAffidavit.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ClassroomAffidavit.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ca14ff6c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ClassroomAffidavit.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-ca14ff6c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ClassroomAffidavit.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <div class=\"ml-2 mb-2 font-weight-bold\">\r\n <b-link to=\"/podcasts\"><b-icon icon=\"chevron-left\"></b-icon> All Dental Podcast Episodes</b-link>\r\n </div>\r\n\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <div class=\"mt-1 mb-3\">\r\n <div class=\"d-block d-sm-none\">\r\n <img src=\"@/art/dentaltalk_sm_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-sm-block d-md-none\">\r\n <img src=\"@/art/dentaltalk_lg_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-md-block d-lg-none\">\r\n <img src=\"@/art/dentaltalk_sm_landscape.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-lg-block d-xl-none\">\r\n <img src=\"@/art/dentaltalk_lg_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-xl-block\">\r\n <img src=\"@/art/dentaltalk_lg_landscape.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n </div>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- Show selected podcast. -->\r\n <div v-if=\"haveFeaturedPodcast\" class=\"div-section-body\" style=\"padding: 0 2px 0 3px;\">\r\n <div class=\"mt-2\">\r\n <b-row class=\"pb-2\" @click.stop.prevent=\"activateFeaturedRow(podcasts[featuredPodcastIx].hash)\">\r\n <b-col cols=\"2\" lg=\"1\" class=\"text-center\">\r\n <b-link v-if=\"!activated\" @click.stop.prevent=\"play(featuredPodcastIx)\">\r\n <b-icon v-if=\"!topPlaying\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"topPlaying\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n </b-col>\r\n <b-col cols=\"10\" lg=\"11\" style=\"margin-left: -10px;\">\r\n <div class=\"class-title\">{{podcasts[featuredPodcastIx].title}}</div>\r\n <div class=\"class-details\">\r\n {{podcasts[featuredPodcastIx].speakerName}}\r\n <br>{{podcasts[featuredPodcastIx].releaseDateUTC | prettyDate}}<span v-if=\"podcasts[featuredPodcastIx].credits > 0\"> - {{podcasts[featuredPodcastIx].credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{podcasts[featuredPodcastIx].durationSec | prettySeconds }}\r\n </div>\r\n <div v-show=\"isActiveFeaturedRow(podcasts[featuredPodcastIx].hash)\">\r\n <div v-if=\"podcasts[featuredPodcastIx].credits !== 0.0 && !podcasts[featuredPodcastIx].examTaken\">\r\n <b-button :to=\"{ path: '/eval-podcast/'+podcasts[featuredPodcastIx].hash }\" size=\"sm\" class=\"mt-3\">Take Exam</b-button>\r\n </div>\r\n <div v-if=\"podcasts[featuredPodcastIx].examTaken\">\r\n <div class=\"class-details\">\r\n <span class=\"red\">Exam Completed on {{podcasts[featuredPodcastIx].examDateLocal | prettyDate}}.</span>\r\n </div>\r\n <certbutton :c=\"buildClass(podcasts[featuredPodcastIx])\" :s=\"buildStudentData(podcasts[featuredPodcastIx])\" alignment=\"text-left\"></certbutton>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div-section-header mb-2\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle\">More Podcast Episodes You Might Like</span>\r\n <!-- <span class=\"txt-section-subtitle\">Available Now: {{podcasts.length | prettyNumber}} Dental Podcast Episodes</span> -->\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- episodes -->\r\n <div class=\"div-section-body\">\r\n <div v-for=\"(row,ix) in podcasts\" v-bind:key=\"row.id\" class=\"mt-2 mb-2 pointer\">\r\n <b-row @click.stop.prevent=\"activateRow(row.hash, ix)\" class=\"pb-2\">\r\n <b-col cols=\"2\" lg=\"1\" :class=\"['text-center',{ active: isActiveRow(row.hash) }]\">\r\n <b-link @click.stop.prevent=\"play(ix)\" v-show=\"isActiveRow(row.hash)\">\r\n <b-icon v-if=\"!isRowPlaying(ix)\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"isRowPlaying(ix)\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n </b-col>\r\n <b-col cols=\"10\" lg=\"11\" style=\"margin-left: -10px;\" :class=\"{ active: isActiveRow(row.hash) }\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{row.durationSec | prettySeconds }}\r\n </div>\r\n <div v-show=\"isActiveRow(row.hash)\">\r\n <div v-if=\"row.credits !== 0.0 && !row.examTaken\">\r\n <b-button :to=\"{ path: '/eval-podcast/'+row.hash }\" size=\"sm\" class=\"mt-3\">Take Exam</b-button>\r\n </div>\r\n <div v-if=\"row.examTaken\">\r\n <div class=\"class-details\">\r\n <span class=\"red\">Exam Completed on {{row.examDateLocal | prettyDate}}.</span>\r\n </div>\r\n <certbutton :c=\"buildClass(row)\" :s=\"buildStudentData(row)\" alignment=\"text-left\"></certbutton>\r\n </div>\r\n <div class=\"txt-class-blurb mt-2\" v-html=\"row.blurb\">\r\n <!-- blurb can contain html -->\r\n </div>\r\n </div>\r\n </b-col>\r\n\r\n </b-row>\r\n <div v-if=\"ix < numPodcasts-1\" class=\"w-100\" style=\"margin-left:-5px; border-bottom: 1px solid #CCC;\"></div>\r\n </div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\nexport default {\r\n name: \"PodcastSeries\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n loading: true,\r\n activated: false, // set to true on first call to activateRow\r\n msg: \"Podcast Series\",\r\n studentData: {status: false},\r\n studentHash: this.$root.getToken(),\r\n podcastHash: null,\r\n podcastShowHash: null,\r\n podcastSlug: null,\r\n podcastShow: {status: false},\r\n podcasts: [],\r\n curPodcastIx: -1, // less than zero to init\r\n featuredPodcastIx: -1, // less than zero, top podcast\r\n playing: false\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n p: {\r\n type: String,\r\n default: null\r\n },\r\n ps: {\r\n type: String,\r\n default: \"\"\r\n },\r\n s: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n haveFeaturedPodcast() {\r\n return (this.featuredPodcastIx >= 0)\r\n },\r\n topPlaying () {\r\n // return true if top/featured podcast playing\r\n return (this.featuredPodcastIx == this.curPodcastIx) && this.playing\r\n },\r\n numPodcasts() {\r\n return this.podcasts.length\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n buildClass(podcast) {\r\n let aout = {\r\n status: true,\r\n classId: podcast.id,\r\n className: podcast.title,\r\n speakerName: null, // speaker name not used\r\n podcastHash: podcast.hash,\r\n classHash: null,\r\n description: podcast.description\r\n }\r\n return aout\r\n },\r\n buildStudentData(data) {\r\n let aout = {\r\n status: true,\r\n hash: this.studentHash,\r\n name: this.$root.getStudentName(),\r\n examDate: data.examDate,\r\n examDateLocal: data.examDateLocal,\r\n credits: data.credits,\r\n ceTypeId: data.ceTypeId\r\n }\r\n return aout\r\n },\r\n isRowPlaying(ix) {\r\n let aout = this.activated && (ix == this.curPodcastIx) && this.playing\r\n return aout\r\n },\r\n isActiveRow(hash) {\r\n return ( this.activated && this.podcastHash == hash)\r\n },\r\n isActiveFeaturedRow(hash) {\r\n return ( !this.activated && this.podcastHash == hash)\r\n },\r\n activateFeaturedRow(hash, ix) {\r\n this.activated = false\r\n this.podcastHash = hash\r\n this.curpodcastIx = ix\r\n },\r\n activateRow(hash) {\r\n this.activated = true\r\n this.podcastHash = hash\r\n },\r\n play(ix) { // this.podcasts[ix]\r\n if (this.debug) console.log(`playing ix: ${ix} cur: ${this.curPodcastIx}`)\r\n if (this.curPodcastIx == ix) {\r\n // toggle play on current ix\r\n if (!this.playing) {\r\n // play\r\n EventBus.$emit('podcast-play',null)\r\n } else {\r\n // pause\r\n this.pause()\r\n }\r\n }\r\n else { // playing new podcast\r\n if (this.curPodcastIx >= 0 && this.playing) {\r\n this.pause() // pause existing podcast\r\n }\r\n this.curPodcastIx = ix\r\n this.podcastHash = this.podcasts[ix].hash\r\n // log play of new podcast\r\n let data = {\r\n title: this.podcasts[ix].title,\r\n mp3: this.podcasts[ix].mp3\r\n }\r\n EventBus.$emit('podcast-play',data)\r\n }\r\n },\r\n pause() {\r\n EventBus.$emit('podcast-pause', null)\r\n },\r\n logPlay() {\r\n service\r\n .podcastView(this.podcastHash, this.studentHash, false, null)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // not much to do...?\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = 'Error logging podcast play.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n if (this.debug) console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System error. Logging API failure.'\r\n console.log(e)\r\n })\r\n\r\n }\r\n },\r\n created() {\r\n this.podcastShowHash = this.ps || this.$route.query.ps || null\r\n this.podcastHash = this.p || this.$route.query.p || null // featured podcast\r\n this.podcastSlug = this.s || this.$route.query.s || null\r\n\r\n this.curPodcastIx = -1\r\n this.featuredPodcastIx = -1\r\n this.activated = false\r\n\r\n EventBus.$on( 'podcast-play-event', (function () {\r\n if (this.debug) console.log(`podcast-play-event`)\r\n this.playing = true\r\n this.logPlay()\r\n }).bind(this))\r\n EventBus.$on( 'podcast-pause-event', (function () {\r\n if (this.debug) console.log(`podcast-pause-event`)\r\n this.playing = false\r\n }).bind(this))\r\n\r\n if (this.podcastSlug) {\r\n this.loading = true\r\n service\r\n .getPodcast(this.podcastSlug, this.studentHash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.podcast = res.data[0]\r\n this.podcasts = res.podcasts.data\r\n if (this.podcastHash && this.podcasts.length !== 0) {\r\n // console.log(`podcastHash ${this.podcastHash} plen: ${this.podcasts.length}`)\r\n for(let ix=0; ix < this.podcasts.length; ix++) {\r\n // console.log(`testing podcastHash ${this.podcastHash} phash: ${this.podcasts[ix].hash}`)\r\n if (this.podcastHash == this.podcasts[ix].hash) {\r\n // console.log(`this.featuredPodcastIx ${this.featuredPodcastIx}`)\r\n this.featuredPodcastIx = ix // set featured ix\r\n break\r\n }\r\n }\r\n // let arr = this.podcasts.filter( row => row.hash == this.podcastHash)\r\n // if (arr.length > 0) {\r\n // this.podcast = arr[0]\r\n // }\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Server error. Try later.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (this.debug) console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n }\r\n else if (this.podcastShowHash) {\r\n this.loading = true\r\n service\r\n .getPodcastShow(this.podcastShowHash, this.studentHash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.podcastShow = res.data[0]\r\n this.podcasts = res.podcasts.data\r\n if (this.podcastHash && this.podcasts.length !== 0) {\r\n // console.log(`podcastHash ${this.podcastHash} plen: ${this.podcasts.length}`)\r\n for(let ix=0; ix < this.podcasts.length; ix++) {\r\n // console.log(`testing podcastHash ${this.podcastHash} phash: ${this.podcasts[ix].hash}`)\r\n if (this.podcastHash == this.podcasts[ix].hash) {\r\n // console.log(`this.featuredPodcastIx ${this.featuredPodcastIx}`)\r\n this.featuredPodcastIx = ix // set featured ix\r\n break\r\n }\r\n }\r\n // let arr = this.podcasts.filter( row => row.hash == this.podcastHash)\r\n // if (arr.length > 0) {\r\n // this.podcast = arr[0]\r\n // }\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Server error. Try later.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (this.debug) console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n }\r\n else {\r\n // flag error!\r\n this.error = true\r\n this.errorMsg = \"Go back and select podcast episode.\"\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n },\r\n mounted () {\r\n if (this.debug) console.log('podcast mounted')\r\n },\r\n beforeDestroy() {\r\n if (this.debug) console.log(`podcast destroyed`)\r\n this.activated = false\r\n this.featuredPodcastIx = -1\r\n this.curPodcastIx = -1\r\n EventBus.$off( 'podcast-play-event')\r\n EventBus.$off( 'podcast-pause-event')\r\n // this.podcastShow = {status: false}\r\n // this.podcasts = []\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.active2 {\r\n border: 1px solid red;\r\n background-color: #EEE;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Podcast.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('div',{staticClass:\"ml-2 mb-2 font-weight-bold\"},[_c('b-link',{attrs:{\"to\":\"/podcasts\"}},[_c('b-icon',{attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\" All Dental Podcast Episodes\")],1)],1),_vm._v(\" \"),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('div',{staticClass:\"mt-1 mb-3\"},[_c('div',{staticClass:\"d-block d-sm-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/dentaltalk_sm_portrait.png\"),\"alt\":\"DentalTalk Podcast-Earn CE\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-sm-block d-md-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/dentaltalk_lg_portrait.png\"),\"alt\":\"DentalTalk Podcast-Earn CE\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-md-block d-lg-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/dentaltalk_sm_landscape.png\"),\"alt\":\"DentalTalk Podcast-Earn CE\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-lg-block d-xl-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/dentaltalk_lg_portrait.png\"),\"alt\":\"DentalTalk Podcast-Earn CE\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-xl-block\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/dentaltalk_lg_landscape.png\"),\"alt\":\"DentalTalk Podcast-Earn CE\"}})])]),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.haveFeaturedPodcast)?_c('div',{staticClass:\"div-section-body\",staticStyle:{\"padding\":\"0 2px 0 3px\"}},[_c('div',{staticClass:\"mt-2\"},[_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateFeaturedRow(_vm.podcasts[_vm.featuredPodcastIx].hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"2\",\"lg\":\"1\"}},[(!_vm.activated)?_c('b-link',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(_vm.featuredPodcastIx)}}},[(!_vm.topPlaying)?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.topPlaying)?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\",\"lg\":\"11\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.podcasts[_vm.featuredPodcastIx].title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(_vm.podcasts[_vm.featuredPodcastIx].releaseDateUTC))),(_vm.podcasts[_vm.featuredPodcastIx].credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(_vm.podcasts[_vm.featuredPodcastIx].durationSec))+\"\\n \")],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isActiveFeaturedRow(_vm.podcasts[_vm.featuredPodcastIx].hash)),expression:\"isActiveFeaturedRow(podcasts[featuredPodcastIx].hash)\"}]},[(_vm.podcasts[_vm.featuredPodcastIx].credits !== 0.0 && !_vm.podcasts[_vm.featuredPodcastIx].examTaken)?_c('div',[_c('b-button',{staticClass:\"mt-3\",attrs:{\"to\":{ path: '/eval-podcast/'+_vm.podcasts[_vm.featuredPodcastIx].hash },\"size\":\"sm\"}},[_vm._v(\"Take Exam\")])],1):_vm._e(),_vm._v(\" \"),(_vm.podcasts[_vm.featuredPodcastIx].examTaken)?_c('div',[_c('div',{staticClass:\"class-details\"},[_c('span',{staticClass:\"red\"},[_vm._v(\"Exam Completed on \"+_vm._s(_vm._f(\"prettyDate\")(_vm.podcasts[_vm.featuredPodcastIx].examDateLocal))+\".\")])]),_vm._v(\" \"),_c('certbutton',{attrs:{\"c\":_vm.buildClass(_vm.podcasts[_vm.featuredPodcastIx]),\"s\":_vm.buildStudentData(_vm.podcasts[_vm.featuredPodcastIx]),\"alignment\":\"text-left\"}})],1):_vm._e()])])],1)],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header mb-2\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"More Podcast Episodes You Might Like\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.podcasts),function(row,ix){return _c('div',{key:row.id,staticClass:\"mt-2 mb-2 pointer\"},[_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateRow(row.hash, ix)}}},[_c('b-col',{class:['text-center',{ active: _vm.isActiveRow(row.hash) }],attrs:{\"cols\":\"2\",\"lg\":\"1\"}},[_c('b-link',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isActiveRow(row.hash)),expression:\"isActiveRow(row.hash)\"}],on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(ix)}}},[(!_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1)],1),_vm._v(\" \"),_c('b-col',{class:{ active: _vm.isActiveRow(row.hash) },staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\",\"lg\":\"11\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isActiveRow(row.hash)),expression:\"isActiveRow(row.hash)\"}]},[(row.credits !== 0.0 && !row.examTaken)?_c('div',[_c('b-button',{staticClass:\"mt-3\",attrs:{\"to\":{ path: '/eval-podcast/'+row.hash },\"size\":\"sm\"}},[_vm._v(\"Take Exam\")])],1):_vm._e(),_vm._v(\" \"),(row.examTaken)?_c('div',[_c('div',{staticClass:\"class-details\"},[_c('span',{staticClass:\"red\"},[_vm._v(\"Exam Completed on \"+_vm._s(_vm._f(\"prettyDate\")(row.examDateLocal))+\".\")])]),_vm._v(\" \"),_c('certbutton',{attrs:{\"c\":_vm.buildClass(row),\"s\":_vm.buildStudentData(row),\"alignment\":\"text-left\"}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"txt-class-blurb mt-2\",domProps:{\"innerHTML\":_vm._s(row.blurb)}})])])],1),_vm._v(\" \"),(ix < _vm.numPodcasts-1)?_c('div',{staticClass:\"w-100\",staticStyle:{\"margin-left\":\"-5px\",\"border-bottom\":\"1px solid #CCC\"}}):_vm._e()],1)}),0)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2786dd42\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Podcast.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2786dd42\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Podcast.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Podcast.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Podcast.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2786dd42\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Podcast.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2786dd42\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Podcast.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <div class=\"ml-2 mb-2 font-weight-bold\">\r\n <b-link to=\"/blog\"><b-icon icon=\"chevron-left\"></b-icon>Dental Blog Posts</b-link>\r\n </div>\r\n\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <div class=\"mt-1 mb-3\">\r\n <div class=\"d-block d-sm-none\">\r\n <img src=\"@/art/blog_sm_portrait.png\" alt=\"Viva Insider\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-sm-block d-md-none\">\r\n <img src=\"@/art/blog_lg_portrait.png\" alt=\"Viva Insider\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-md-block d-lg-none\">\r\n <img src=\"@/art/blog_sm_landscape.png\" alt=\"Viva Insider\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-lg-block d-xl-none\">\r\n <img src=\"@/art/blog_lg_portrait.png\" alt=\"Viva Insider\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-xl-block\">\r\n <img src=\"@/art/blog_lg_landscape.png\" alt=\"Viva Insider\" class=\"img-fluid\" />\r\n </div>\r\n </div>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- Show selected blog post. -->\r\n <div class=\"div-section-body\" style=\"padding: 0 5px 5px; 5px;\">\r\n <div class=\"mt-2\">\r\n <b-row class=\"pb-2\">\r\n <b-col>\r\n <div class=\"class-title\">{{blogObj.title}}</div>\r\n <div class=\"class-author\">by {{blogObj.author}}</div>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col class=\"text-center\">\r\n <b-img fluid v-bind:src=\"blogObj.photo\" />\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"blogObj.podcastId != 0\" class=\"mt-2\">\r\n <b-col>\r\n <b-card sub-title=\"This article is based on the DentalTalk podcast below:\">\r\n <b-card-text>\r\n <b-link :to=\"`/podcast/${blogObj.podcastShowHash}/${blogObj.podcastHash}`\">\r\n <b-icon icon=\"caret-right-fill\"></b-icon>{{blogObj.podcastTitle}}\r\n </b-link>\r\n </b-card-text>\r\n </b-card>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <!-- :inner-html.prop instead of v-html -->\r\n <b-col class=\"mt-2 txt-class-blurb\" :inner-html.prop=\"stripBlogad(this.blogObj.body)\"></b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div v-if=\"posts.length !== 0\" class=\"mt-1\">\r\n <!-- <div class=\"mb-1 font-weight-bold\">Recent Dental Blog Posts</div> -->\r\n <h5>Recent Dental Blog Posts</h5>\r\n <ul>\r\n <li v-for=\"(row) in posts\" v-bind:key=\"row.id\"><b-link :to=\"`/blog-post/${row.id}`\">{{row.title}}</b-link></li>\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\nexport default {\r\n name: \"BlogPost\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n loading: true,\r\n msg: \"Blog Post\",\r\n studentData: {status: false},\r\n studentHash: this.$root.getToken(),\r\n blogObj: {title: null, author: null, photo: null, body: null, podcastId: 0},\r\n posts: []\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n blogId: {\r\n type: String,\r\n default: '0'\r\n },\r\n nolog: {\r\n type: String,\r\n default: null\r\n },\r\n },\r\n computed: { },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n stripBlogad(body) {\r\n try {\r\n let aout = body.replace('[blogad]', '')\r\n aout = aout.replace('\\n\\n', '\\n')\r\n return aout\r\n }\r\n catch(e) {\r\n return body\r\n }\r\n }\r\n },\r\n created() {\r\n if (this.debug) console.log(`blogId: ${this.blogId}`)\r\n if (this.debug) console.log(`studentHash: ${this.studentHash}`)\r\n if (this.blogId) {\r\n this.loading = true\r\n\r\n //\r\n let blockLog = (this.nolog === 'nolog') ? 1 : 0; // 1(true) block logging\r\n\r\n service\r\n .getBlogPost(this.blogId, this.studentHash, blockLog )\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.blogObj = res.blogObj\r\n if (this.debug) console.log(`title: ${this.blogObj.title}`)\r\n if (this.debug) console.log(`podcastId: ${this.blogObj.podcastId}`)\r\n\r\n if (res.data && res.data.length !== 0) {\r\n this.posts = res.data // array of {id,title objects}\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Server error. Try later.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (this.debug) console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n }\r\n else {\r\n // flag error!\r\n this.error = true\r\n this.errorMsg = \"Go back and select blog post.\"\r\n }\r\n },\r\n mounted () {\r\n if (this.debug) console.log('blogpost mounted')\r\n },\r\n beforeDestroy() {\r\n if (this.debug) console.log(`blogpost destroyed`)\r\n this.activated = false\r\n this.posts = []\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/BlogPost.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('div',{staticClass:\"ml-2 mb-2 font-weight-bold\"},[_c('b-link',{attrs:{\"to\":\"/blog\"}},[_c('b-icon',{attrs:{\"icon\":\"chevron-left\"}}),_vm._v(\"Dental Blog Posts\")],1)],1),_vm._v(\" \"),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('div',{staticClass:\"mt-1 mb-3\"},[_c('div',{staticClass:\"d-block d-sm-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/blog_sm_portrait.png\"),\"alt\":\"Viva Insider\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-sm-block d-md-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/blog_lg_portrait.png\"),\"alt\":\"Viva Insider\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-md-block d-lg-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/blog_sm_landscape.png\"),\"alt\":\"Viva Insider\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-lg-block d-xl-none\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/blog_lg_portrait.png\"),\"alt\":\"Viva Insider\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-xl-block\"},[_c('img',{staticClass:\"img-fluid\",attrs:{\"src\":require(\"@/art/blog_lg_landscape.png\"),\"alt\":\"Viva Insider\"}})])]),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\",staticStyle:{\"padding\":\"0 5px 5px\"}},[_c('div',{staticClass:\"mt-2\"},[_c('b-row',{staticClass:\"pb-2\"},[_c('b-col',[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.blogObj.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-author\"},[_vm._v(\"by \"+_vm._s(_vm.blogObj.author))])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.blogObj.photo}})],1)],1),_vm._v(\" \"),(_vm.blogObj.podcastId != 0)?_c('b-row',{staticClass:\"mt-2\"},[_c('b-col',[_c('b-card',{attrs:{\"sub-title\":\"This article is based on the DentalTalk podcast below:\"}},[_c('b-card-text',[_c('b-link',{attrs:{\"to\":(\"/podcast/\" + (_vm.blogObj.podcastShowHash) + \"/\" + (_vm.blogObj.podcastHash))}},[_c('b-icon',{attrs:{\"icon\":\"caret-right-fill\"}}),_vm._v(_vm._s(_vm.blogObj.podcastTitle)+\"\\n \")],1)],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"mt-2 txt-class-blurb\",domProps:{\"innerHTML\":_vm.stripBlogad(this.blogObj.body)}})],1)],1),_vm._v(\" \"),(_vm.posts.length !== 0)?_c('div',{staticClass:\"mt-1\"},[_c('h5',[_vm._v(\"Recent Dental Blog Posts\")]),_vm._v(\" \"),_c('ul',_vm._l((_vm.posts),function(row){return _c('li',{key:row.id},[_c('b-link',{attrs:{\"to\":(\"/blog-post/\" + (row.id))}},[_vm._v(_vm._s(row.title))])],1)}),0)]):_vm._e()])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1f174196\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/BlogPost.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1f174196\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./BlogPost.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./BlogPost.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./BlogPost.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1f174196\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./BlogPost.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1f174196\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/BlogPost.vue\n// module id = null\n// module chunks = ","\r\n/* eslint-disable */\r\n'use strict'\r\n\r\n// https://blog.bitsrc.io/understanding-mixins-in-vue-js-bdcf9e02a7c1\r\n// https://codereview.stackexchange.com/questions/128587/check-if-images-are-loaded-es6-promises\r\n\r\nexport default {\r\n data() {\r\n return {\r\n hasYoutube: false,\r\n hasRun: false\r\n }\r\n },\r\n methods: {\r\n checkYoutube: async function () {\r\n // this.hasRun = true\r\n let path = location.protocol + \"//www.youtube.com/favicon.ico\";\r\n let aout = new Promise( resolve => {\r\n const img = new Image();\r\n img.onload = () => resolve({ hasYoutube: true, hasRun: true });\r\n img.onerror = () => resolve({ hasYoutube: false, hasRun: true });\r\n img.src = path;\r\n })\r\n return aout\r\n }\r\n },\r\n async created() {\r\n // console.log(`youtubeMixin created`)\r\n },\r\n mounted() {\r\n // console.log(`youtubeMixin mounted`)\r\n },\r\n};\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/youtubeMixin.js","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- VIDEO DIV ========================================= -->\r\n <div v-if=\"showDivVideo\">\r\n <b-row>\r\n <b-col cols=\"12\" lg=\"8\" offset-lg=\"1\">\r\n <div class=\"sva-header\">\r\n {{msg}}\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <!-- https://getbootstrap.com/docs/4.4/utilities/flex/ -->\r\n <div class=\"d-flex justify-content-center align-items-center pt-2 pb-2 pr-1\">\r\n <div>\r\n <b-img fluid :src=\"svaObj.companyPhoto\" />\r\n </div>\r\n <div class=\"pl-2\">\r\n {{blurb + ' ' + svaObj.companyName}}\r\n </div>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div v-if=\"videoId && showDivVideo\" class=\"mt-2\">\r\n <vue-plyr ref=\"svaplyr\">\r\n <div class=\"yt-container\">\r\n <!-- https://developers.google.com/youtube/iframe_api_reference -->\r\n <iframe\r\n :src=\"getVideoUrl()\"\r\n allowfullscreen allowtransparency>\r\n </iframe>\r\n </div>\r\n </vue-plyr>\r\n </div>\r\n\r\n <!-- POST VIDEO DIV ========================================= -->\r\n <div v-if=\"showDivPostVideo\">\r\n <b-row>\r\n <b-col>\r\n <div class=\"divOfferTitle\">{{ svaObj.headline }} </div>\r\n <!-- <div class=\"divOfferBody\">{{ svaObj.blurb | nl2br }}</div> -->\r\n <div class=\"divOfferBody\" :inner-html.prop=\"svaObj.blurb | nl2br\"></div>\r\n\r\n <div class=\"divQuestions\">\r\n <div class=\"divTitleBtns\">{{ svaObj.headlineButtons }} </div>\r\n <div class=\"divSubtitleBtns\">(After your selection, you will be directed to CE exam)</div>\r\n <div class=\"divOfferBtns\">\r\n <button @click.prevent=\"btnYes\" class=\"btnYes btnFlat btnFlatGreen\">{{ svaObj.buttonTextYes }}</button>\r\n <button @click.prevent=\"btnNo\" class=\"btnNo btnFlat btnFlatRed\">{{ svaObj.buttonTextNo }}</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"divReplay\">\r\n <button @click.prevent=\"replayVideo\" class=\"btnFlat btnFlatGray\">Replay Video</button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\n// Note use of v-show instead of v-if in the template.\r\n// This keeps the video in the DOM in case of replay.\r\n// https://vuejs.org/v2/guide/conditional.html\r\n\r\n// vue-youtube\r\n// https://www.npmjs.com/package/vue-youtube\r\n// https://github.com/anteriovieira/vue-youtube\r\n// youtube iframe api\r\n// https://developers.google.com/youtube/iframe_api_reference#Events\r\n\r\nimport service from \"@/service/service\"\r\nimport youtubeMixin from \"@/plugins/youtubeMixin\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"SVA\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n errorMsg: 'System error. Contact technical support.',\r\n showDivVideo: false,\r\n showDivPostVideo: false,\r\n msg:\r\n \"Press the play button to watch this video and proceed to your CE exam. Our video sponsors help keep Viva Learning FREE.\",\r\n blurb: \"This video is sponsored by \",\r\n classHash: null,\r\n studentHash: this.$root.getToken(),\r\n player: null,\r\n playerCounter: 0,\r\n playerTimer: null,\r\n videoId: null,\r\n svaObj: null\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: null\r\n }\r\n },\r\n mixins: [youtubeMixin],\r\n computed: {\r\n },\r\n methods: {\r\n getVideoUrl() {\r\n let url = (this.videoId)\r\n ? utils.getYoutubeUrl(this.videoId, true)\r\n : null\r\n // console.log(`Video Url: ${url}`)\r\n return url\r\n // return 'https://www.youtube.com/embed/zpOULjyy-n8?rel=0' // reo\r\n // return 'https://www.youtube.com/embed/pTvxZgiuU3Y?rel=0'\r\n // return 'https://www.youtube.com/watch?v=pTvxZgiuU3Y&rel=0' // viva\r\n },\r\n clearPlayerTimer() {\r\n // if defined clear timer to get the vue plyr.\r\n if (this.playerTimer) window.clearInterval(this.playerTimer)\r\n this.playerTimer = null\r\n },\r\n playerEvents () { // load player events\r\n if (this.debug) {\r\n console.log(`playerEvents this.$refs`)\r\n console.log(this.$refs)\r\n console.log(`playerEvents this.$refs.svaplyr`)\r\n console.log(this.$refs.svaplyr)\r\n }\r\n\r\n if (!this.$refs.svaplyr) {\r\n this.playerCounter++\r\n if (this.playerCounter > 40) {\r\n this.clearPlayerTimer()\r\n this.bail('Timed out loading video.') // TBD\r\n }\r\n if (this.debug) console.log(`${this.playerCounter}) NO PLAYER`)\r\n if (!this.playerTimer) {\r\n // Takes about 3 seconds for svaplyr to appear in $refs.\r\n this.playerTimer = window.setInterval( (function () { this.playerEvents() }).bind(this), 300 )\r\n }\r\n return\r\n }\r\n else {\r\n if (this.debug) console.log(`${this.playerCounter}) PLAYER FOUND`)\r\n this.clearPlayerTimer()\r\n }\r\n\r\n this.player = this.$refs.svaplyr.player\r\n // 'statechange','ready','canplay','error','progress','playing','play','pause','ended'\r\n this.player.on('statechange', ((e) => {\r\n // e.detail.code\r\n // -1 – unstarted\r\n // 0 – ended YT.PlayerState.ENDED\r\n // 1 – playing YT.PlayerState.PLAYING\r\n // 2 – paused YT.PlayerState.PAUSED\r\n // 3 – buffering YT.PlayerState.BUFFERING\r\n // 5 – video cued YT.PlayerState.CUED (not issued)\r\n if (this.debug) console.log(`Youtube event code: ${e.detail.code}`)\r\n if (e.detail.code == YT.PlayerState.ENDED) {\r\n this.ended()\r\n }\r\n }).bind(this))\r\n },\r\n ended() {\r\n console.log(`video ended`)\r\n this.player = null\r\n this.playerCounter = 0\r\n this.showDivVideo = false\r\n this.showDivPostVideo = true\r\n },\r\n btnYes(e) {\r\n console.log(`btnYes`)\r\n this.btnSave(2)\r\n },\r\n btnNo(e) {\r\n console.log(`btnNo`)\r\n this.btnSave(3)\r\n },\r\n async btnSave(eventId) {\r\n this.loading = true\r\n service\r\n .saveSvaResponse(\r\n this.classHash,\r\n this.studentHash,\r\n this.svaObj.id,\r\n eventId\r\n )\r\n .then(\r\n (data => {\r\n this.$router.push({ path: `/exam/${this.classHash}` })\r\n }).bind(this)\r\n )\r\n // .finally( e => {} )\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System API error saving response.'\r\n console.log(e);\r\n })\r\n },\r\n replayVideo(e) {\r\n console.log(`btnReplay`)\r\n this.showDivVideo = true\r\n this.showDivPostVideo = false\r\n this.playerEvents()\r\n },\r\n bail(msg) {\r\n this.error = true\r\n this.errorMsg = msg\r\n this.showDivVideo = false\r\n this.showDivPostVideo = false\r\n }\r\n },\r\n async created () {\r\n this.classHash = this.c || null\r\n service\r\n .getSva(this.classHash, this.studentHash)\r\n .then(\r\n ( res => {\r\n if (res.status && res.rowCount !== 0) {\r\n // if (this.debug) console.log(data)\r\n this.svaObj = res.data[0];\r\n this.videoId = this.svaObj.youtubeId\r\n console.log(`videoid: ${this.svaObj.youtubeId} ${this.videoId}`)\r\n this.showDivVideo = true\r\n }\r\n else { // no sva to show, proceed to survey\r\n this.$router.push({ path: `/survey/${this.classHash}` })\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n },\r\n async mounted() {\r\n console.log(`SVA MOUNTED ------`)\r\n console.log(`clashHash: ${this.classHash} c: ${this.c}`)\r\n\r\n // need to do in mounted to access html elements\r\n let res = await this.checkYoutube() // mixin (needs dom mounted)\r\n // console.log(resp)\r\n if (!res.hasYoutube) {\r\n // user has youtube blocked - proceed to survey\r\n // this.$router.push({ path: `/survey/${this.classHash}` });\r\n console.log('YOUTUBE BLOCKED')\r\n return\r\n }\r\n this.playerEvents()\r\n // this.player.play()\r\n },\r\n beforeDestroy() {\r\n console.log(`SVA destroy`)\r\n this.loading = true\r\n this.showDivVideo = false\r\n this.showDivPostVideo = false\r\n this.svaObj = {status: false}\r\n this.videoId = null\r\n if (this.player) this.player.destroy()\r\n this.playerCounter = 0\r\n this.clearPlayerTimer()\r\n },\r\n destroyed() {\r\n console.log(`destroyed sva`);\r\n // this.destroyYoutube();\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n/* partial success on responsive iframe on mobile */\r\n/* https://coolestguidesontheplanet.com/videodrome/youtube/ */\r\n/* https://www.avexdesigns.com/blog/responsive-youtube-embed */\r\n/* https://blog.theodo.com/2018/01/responsive-iframes-css-trick/ */\r\n\r\n.yt-container {\r\n position:relative;\r\n padding-bottom:56.25%;\r\n padding-top:30px;\r\n height:0;\r\n overflow:hidden;\r\n}\r\n.yt-container iframe, .yt-container object, .yt-container embed {\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n width:100% !important;\r\n height:100% !important;\r\n}\r\n\r\n.sva-header {\r\n /* font-family: verdana, helvetica, arial, sans-serif; */\r\n font-size: 1rem;\r\n font-weight: bold;\r\n color: black;\r\n padding: 10px 0px 15px;\r\n text-align: left;\r\n}\r\n\r\n.headline {\r\n /* font-family: verdana, helvetica, arial, sans-serif; */\r\n font-size: 18px;\r\n font-weight: bold;\r\n}\r\n\r\n.divSponsorText {\r\n margin: 10px 0px 0px 10px;\r\n font-size: 14px;\r\n}\r\n\r\nbutton {\r\n display: inline-block;\r\n margin: 0 15px 0 0;\r\n padding: 5px 25px;\r\n font-size: 18px;\r\n font-family: verdana, helvetica, arial, san-serif;\r\n line-height: 1.8;\r\n vertical-align: bottom;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n appearance: none;\r\n -webkit-box-shadow: none;\r\n -moz-box-shadow: none;\r\n box-shadow: none;\r\n -webkit-border-radius: 0;\r\n -moz-border-radius: 0;\r\n border-radius: 0;\r\n}\r\n\r\n.btnFlat {\r\n color: #fff;\r\n background-color: #6496c8;\r\n text-shadow: -1px 1px #417cb8;\r\n border: none;\r\n}\r\n\r\n.btnFlat:hover {\r\n background-color: #346392;\r\n text-shadow: -1px 1px #27496d;\r\n}\r\n\r\n.btnFlat:active {\r\n background-color: #27496d;\r\n text-shadow: -1px 1px #193047;\r\n}\r\n\r\n.btnFlatRed {\r\n color: #fff;\r\n background-color: #ec1f26;\r\n text-shadow: -1px 1px #f77;\r\n border: none;\r\n}\r\n\r\n.btnFlatRed:hover {\r\n background-color: #f77;\r\n text-shadow: -1px 1px #f55;\r\n}\r\n\r\n.btnFlatRed:active {\r\n background-color: #f33;\r\n text-shadow: -1px 1px #000;\r\n}\r\n\r\n.btnFlatGreen {\r\n color: #fff;\r\n background-color: #3bb474;\r\n text-shadow: -1px 1px #7f7;\r\n border: none;\r\n}\r\n\r\n.btnFlatGreen:hover {\r\n background-color: #7f7;\r\n text-shadow: -1px 1px #5f5;\r\n}\r\n\r\n.btnFlatGreen:active {\r\n background-color: #3f3;\r\n text-shadow: -1px 1px #000;\r\n}\r\n\r\n.btnFlatGray {\r\n color: #fff;\r\n background-color: #ccc;\r\n text-shadow: -1px 1px #777;\r\n border: none;\r\n}\r\n\r\n.btnFlatGray:hover {\r\n background-color: #777;\r\n text-shadow: -1px 1px #555;\r\n}\r\n\r\n.btnFlatGray:active {\r\n background-color: #333;\r\n text-shadow: -1px 1px #000;\r\n}\r\n\r\n.preVideo {\r\n margin: 10px 0;\r\n text-align: left;\r\n font-size: 14px;\r\n}\r\n.postVideo {\r\n margin: 10px 0;\r\n text-align: left;\r\n font-size: 14px;\r\n}\r\n\r\n.divOfferTitle {\r\n font-size: 24px;\r\n line-height: 120%;\r\n font-weight: normal;\r\n margin: 20px auto 0 10px;\r\n}\r\n.divOfferBody {\r\n font-size: 20px;\r\n font-weight: normal;\r\n line-height: 135%;\r\n margin: 20px auto 0 10px;\r\n}\r\n\r\n.divQuestions {\r\n background-color: white;\r\n margin-top: 20px;\r\n padding: 20px;\r\n}\r\n\r\n.divTitleBtns {\r\n font-size: 22px;\r\n line-height: 120%;\r\n margin: 0px;\r\n}\r\n.divSubtitleBtns {\r\n color: #888;\r\n font-size: 18px;\r\n margin-top: 20px;\r\n text-align: center;\r\n}\r\n.divOfferBtns {\r\n margin-top: 25px;\r\n text-align: center;\r\n}\r\n.divReplay {\r\n margin-top: 25px;\r\n text-align: center;\r\n}\r\n.lnkReplay {\r\n color: #777;\r\n font-size: 14px;\r\n margin-left: -22px;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/SVA.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showDivVideo)?_c('div',[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\",\"offset-lg\":\"1\"}},[_c('div',{staticClass:\"sva-header\"},[_vm._v(\"\\n \"+_vm._s(_vm.msg)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('div',{staticClass:\"d-flex justify-content-center align-items-center pt-2 pb-2 pr-1\"},[_c('div',[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.svaObj.companyPhoto}})],1),_vm._v(\" \"),_c('div',{staticClass:\"pl-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.blurb + ' ' + _vm.svaObj.companyName)+\"\\n \")])])])])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.videoId && _vm.showDivVideo)?_c('div',{staticClass:\"mt-2\"},[_c('vue-plyr',{ref:\"svaplyr\"},[_c('div',{staticClass:\"yt-container\"},[_c('iframe',{attrs:{\"src\":_vm.getVideoUrl(),\"allowfullscreen\":\"\",\"allowtransparency\":\"\"}})])])],1):_vm._e(),_vm._v(\" \"),(_vm.showDivPostVideo)?_c('div',[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"divOfferTitle\"},[_vm._v(_vm._s(_vm.svaObj.headline)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"divOfferBody\",domProps:{\"innerHTML\":_vm._f(\"nl2br\")(_vm.svaObj.blurb)}}),_vm._v(\" \"),_c('div',{staticClass:\"divQuestions\"},[_c('div',{staticClass:\"divTitleBtns\"},[_vm._v(_vm._s(_vm.svaObj.headlineButtons)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"divSubtitleBtns\"},[_vm._v(\"(After your selection, you will be directed to CE exam)\")]),_vm._v(\" \"),_c('div',{staticClass:\"divOfferBtns\"},[_c('button',{staticClass:\"btnYes btnFlat btnFlatGreen\",on:{\"click\":function($event){$event.preventDefault();return _vm.btnYes($event)}}},[_vm._v(_vm._s(_vm.svaObj.buttonTextYes))]),_vm._v(\" \"),_c('button',{staticClass:\"btnNo btnFlat btnFlatRed\",on:{\"click\":function($event){$event.preventDefault();return _vm.btnNo($event)}}},[_vm._v(_vm._s(_vm.svaObj.buttonTextNo))])])]),_vm._v(\" \"),_c('div',{staticClass:\"divReplay\"},[_c('button',{staticClass:\"btnFlat btnFlatGray\",on:{\"click\":function($event){$event.preventDefault();return _vm.replayVideo($event)}}},[_vm._v(\"Replay Video\")])])])],1)],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-66a32ddd\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SVA.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-66a32ddd\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SVA.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SVA.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SVA.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-66a32ddd\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SVA.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-66a32ddd\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SVA.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div v-if=\"!loading && !error\">\r\n <h1 class=\"headline\">\r\n To proceed to your CE exam, please complete this {{numQuestions}}-question survey.\r\n By doing so, you're helping to keep Viva Learning FREE.\r\n Thank you for your participation!\r\n </h1>\r\n\r\n <b-overlay :show=\"busy\">\r\n <div class=\"div-survey-wrapper pl-2 pr-2 pt-3 pb-4\">\r\n <div v-for=\"(row,ix) in survey.questions\" v-bind:key=\"row.hash\">\r\n <div v-if=\"ix == curQuestionIx\">\r\n <b-col cols=\"12\" class=\"div-survey-question\">\r\n {{row.question}}\r\n \r\n <span>{{getQuestionAddlText(row.type)}}</span>\r\n </b-col>\r\n <div class=\"mt-2\">\r\n <b-col cols=\"12\" v-for=\"(row2,iy) in row.buttons\" v-bind:key=\"row2.hash\">\r\n <b-button :class=\"[choiceClassArr,{'btn-survey-unchecked': !isPicked(iy)},{'btn-survey-checked': isPicked(iy)}]\" block @click.prevent=\"pick(iy)\">\r\n <b-icon v-if=\"!isPicked(iy)\" icon=\"square\"></b-icon>\r\n <b-icon v-if=\"isPicked(iy)\" icon=\"x-square\"></b-icon>\r\n \r\n {{row2.label}}\r\n </b-button>\r\n </b-col>\r\n <!-- <b-col cols=\"12\">\r\n <b-card @click.prevent=\"submit(ix)\">{{row.submit.label+' '+ix}}</b-card>\r\n </b-col> -->\r\n <b-col cols=\"12\">\r\n <b-button :disabled=\"submitDisabled\" class=\"pt-2 pb-2\" block variant=\"primary\" @click.prevent=\"submit(ix)\">\r\n {{row.submit.label}}\r\n </b-button>\r\n </b-col>\r\n </div>\r\n </div>\r\n </div> <!-- v-for -->\r\n <b-col class=\"div-survey-footer pt-2\">\r\n Question {{curQuestionIx+1}}/{{numQuestions}}\r\n </b-col>\r\n </div>\r\n </b-overlay>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: 'Survey',\r\n data () {\r\n return {\r\n debug: false,\r\n loading: true,\r\n busy: false,\r\n error: false,\r\n errorMsg: 'System error. Contact technical support.',\r\n msg: 'Survey',\r\n classHash: null,\r\n studentHash: this.$root.getToken(),\r\n survey: null,\r\n curQuestionIx: 0,\r\n choices: [],\r\n choiceClassArr: [\"text-left\",\"pl-3\",\"pt-3\",\"pb-3\"]\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n numQuestions() {\r\n return (this.survey) ? this.survey.questions.length : 0\r\n },\r\n questionType() {\r\n // returns multi, single, yesno\r\n return this.survey.questions[this.curQuestionIx].type\r\n },\r\n submitDisabled() {\r\n let aout = this.choices.every(item => !item)\r\n if (this.debug) console.log(`submitDisabled ${aout}`)\r\n return aout\r\n }\r\n },\r\n // watch: {\r\n // choices: {\r\n // // This will let Vue know to look inside the array\r\n // deep: true,\r\n\r\n // // We have to move our method to a handler field\r\n // handler() {\r\n // console.log('Choices changed!')\r\n // }\r\n // }\r\n // },\r\n methods: {\r\n getQuestionAddlText(questionType) {\r\n var aout\r\n switch (questionType.toLowerCase()) {\r\n case 'yesno':\r\n aout = ''\r\n break\r\n case 'single':\r\n aout = ' (select one)'\r\n break\r\n case 'multi':\r\n aout = ' (select all that apply)'\r\n break\r\n default:\r\n aout = ''\r\n }\r\n return aout\r\n },\r\n initChoices() {\r\n this.choices = []\r\n for (let ix = 0; ix < this.survey.questions[this.curQuestionIx].buttons.length; ix++) {\r\n // vue traps push to enforce reactivity\r\n this.choices.push(false)\r\n }\r\n },\r\n isPicked(buttonIx) {\r\n // console.log(`ixPicked: ${buttonIx}`)\r\n return this.choices[buttonIx]\r\n },\r\n pick(buttonIx) {\r\n // console.log(`buttonIx ${buttonIx}`)\r\n // https://stackoverflow.com/questions/41580617/vuejs-v-if-arrayindex-is-not-working\r\n // https://www.telerik.com/blogs/so-what-actually-is-vue-set\r\n // triggers reactivity\r\n this.$set(this.choices, buttonIx, !this.choices[buttonIx])\r\n\r\n let qtype = this.questionType // returns yesno, single and multi\r\n if (qtype == 'yesno' || qtype == 'single') {\r\n // reset all other items to be inverse of changed item\r\n for (let ix=0; ix < this.choices.length; ix++) {\r\n if (ix != buttonIx) {\r\n // use reactive $set\r\n this.$set(this.choices, ix, !this.choices[buttonIx])\r\n }\r\n }\r\n }\r\n if (this.debug) console.log(`choice(${buttonIx}) ${this.choices[buttonIx]}`)\r\n },\r\n submit(questionIx) {\r\n if (this.busy) return // bail out if still awaiting response.\r\n this.busy = true\r\n let choiceHash = [] // array of chosen option hashes\r\n for (let ix=0; ix<this.choices.length; ix++) {\r\n if (this.choices[ix]) {\r\n choiceHash.push(this.survey.questions[questionIx].buttons[ix].hash)\r\n }\r\n }\r\n\r\n // The server can send an email on laxt question.\r\n let isLast = (questionIx == (this.numQuestions-1))\r\n\r\n let data = {\r\n s: this.studentHash,\r\n sh: this.survey.hash,\r\n q: this.survey.questions[questionIx].hash,\r\n choices: choiceHash,\r\n sessionHash: this.survey.sessionHash,\r\n isLast: isLast\r\n }\r\n\r\n service\r\n .saveSurveyResponse(data)\r\n .then(\r\n (res => {\r\n // console.log(`back from saveSurveyResponse`)\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n\r\n // If last question, else proceed to exam,\r\n if ((questionIx+1) < this.numQuestions) {\r\n this.curQuestionIx = questionIx + 1\r\n this.initChoices()\r\n if (this.debug) console.log(`Button ${ix} cix ${this.curQuestionIx}`)\r\n }\r\n else {\r\n // Move on to exam.\r\n this.$router.push(`/exam/${this.classHash}`)\r\n }\r\n }\r\n else {\r\n // status returns false when student did not reserve seat\r\n this.error = true\r\n this.errorMsg = 'Error recording response. Try again later.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System error recording response. Try again later.'\r\n console.log(e);\r\n })\r\n }\r\n },\r\n created() {\r\n this.classHash = this.c || this.$route.query.c || null\r\n service\r\n .getSurvey(this.classHash, this.studentHash)\r\n .then(\r\n ( res => {\r\n if (this.debug) console.log(`back from getSurvey`)\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n if (this.debug) console.log(res)\r\n this.survey = res.data[0]\r\n this.curQuestionIx = 0\r\n this.initChoices()\r\n }\r\n else { // no survey to show, proceed to exam\r\n this.$router.push({ path: `/exam/${this.classHash}` })\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (this.debug) console.log(`finally... getSurvey`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n },\r\n mounted() {\r\n\r\n },\r\n beforeDestroy() {\r\n this.loading = true\r\n this.survey = null\r\n this.curQuestionIx = 0\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.headline {\r\n font-size: 1rem;\r\n line-height: 150%;\r\n}\r\n.div-survey-wrapper {\r\n background-color: black;\r\n color: white;\r\n}\r\n.div-survey-question {\r\n font-size: 1.1rem;\r\n line-height: 110%;\r\n}\r\n.div-survey-question > span {\r\n font-size: .8rem;\r\n color: yellow;\r\n white-space: nowrap;\r\n}\r\n.div-survey-footer {\r\n text-align: right;\r\n font-size: .8rem;\r\n}\r\n.btn-survey {\r\n color: white;\r\n cursor: pointer;\r\n font-size: 110%;\r\n border: 2px solid black;\r\n background: none;\r\n box-shadow: none;\r\n border-radius: 0px;\r\n background-color: #000;\r\n vertical-align: middle;\r\n text-align: left;\r\n padding: 20px 0 20px 15px;\r\n position: relative;\r\n}\r\n.btn-survey-unchecked {\r\n background-color: #303030;\r\n}\r\n.btn-survey-checked {\r\n background-color: #5f645e;\r\n}\r\n.btn-survey-submit {\r\n background-color: #0094d6;\r\n text-align: center;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Survey.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loading && !_vm.error)?_c('div',[_c('h1',{staticClass:\"headline\"},[_vm._v(\"\\n To proceed to your CE exam, please complete this \"+_vm._s(_vm.numQuestions)+\"-question survey.\\n By doing so, you're helping to keep Viva Learning FREE.\\n Thank you for your participation!\\n \")]),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',{staticClass:\"div-survey-wrapper pl-2 pr-2 pt-3 pb-4\"},[_vm._l((_vm.survey.questions),function(row,ix){return _c('div',{key:row.hash},[(ix == _vm.curQuestionIx)?_c('div',[_c('b-col',{staticClass:\"div-survey-question\",attrs:{\"cols\":\"12\"}},[_vm._v(\"\\n \"+_vm._s(row.question)+\"\\n  \\n \"),_c('span',[_vm._v(_vm._s(_vm.getQuestionAddlText(row.type)))])]),_vm._v(\" \"),_c('div',{staticClass:\"mt-2\"},[_vm._l((row.buttons),function(row2,iy){return _c('b-col',{key:row2.hash,attrs:{\"cols\":\"12\"}},[_c('b-button',{class:[_vm.choiceClassArr,{'btn-survey-unchecked': !_vm.isPicked(iy)},{'btn-survey-checked': _vm.isPicked(iy)}],attrs:{\"block\":\"\"},on:{\"click\":function($event){$event.preventDefault();return _vm.pick(iy)}}},[(!_vm.isPicked(iy))?_c('b-icon',{attrs:{\"icon\":\"square\"}}):_vm._e(),_vm._v(\" \"),(_vm.isPicked(iy))?_c('b-icon',{attrs:{\"icon\":\"x-square\"}}):_vm._e(),_vm._v(\"\\n  \\n \"+_vm._s(row2.label)+\"\\n \")],1)],1)}),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-button',{staticClass:\"pt-2 pb-2\",attrs:{\"disabled\":_vm.submitDisabled,\"block\":\"\",\"variant\":\"primary\"},on:{\"click\":function($event){$event.preventDefault();return _vm.submit(ix)}}},[_vm._v(\"\\n \"+_vm._s(row.submit.label)+\"\\n \")])],1)],2)],1):_vm._e()])}),_vm._v(\" \"),_c('b-col',{staticClass:\"div-survey-footer pt-2\"},[_vm._v(\"\\n Question \"+_vm._s(_vm.curQuestionIx+1)+\"/\"+_vm._s(_vm.numQuestions)+\"\\n \")])],2)])],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-73d77f7c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Survey.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-73d77f7c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Survey.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Survey.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Survey.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-73d77f7c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Survey.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-73d77f7c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Survey.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"6\">\r\n\r\n <!-- Podcast Evaluation -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Evaluation</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col class=\"mt-2 mb-3\">{{blurb}}</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <strong>Title</strong>\r\n </b-col>\r\n <b-col cols=\"9\">{{podcast.title}}</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <strong>Released</strong>\r\n </b-col>\r\n <b-col>{{podcast.releaseDate | prettyDate}}</b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body mt-3\">\r\n <div class=\"div-padding\">\r\n <b-form @submit.prevent=\"submitEval\">\r\n <div class=\"div-eval-section\">Please rate the content</div>\r\n\r\n <!-- https://bootstrap-vue.js.org/docs/components/form-radio -->\r\n <b-form-group label=\"Objectives stated in the description of this activity were met.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-1\"\r\n name=\"btn-radios-1\"\r\n v-model=\"$v.form.courseObjectives.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('courseObjectives')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseObjectives')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Practically useful.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-2\"\r\n name=\"btn-radios-2\"\r\n v-model=\"$v.form.courseUseful.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('courseUseful')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseUseful')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Appropriate, in-depth and comprehensive.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-3\"\r\n v-model=\"$v.form.courseAppropriate.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-3\"\r\n :state=\"validateState('courseAppropriate')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseAppropriate')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Logical and well organized.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-4\"\r\n v-model=\"$v.form.courseLogical.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-4\"\r\n :state=\"validateState('courseLogical')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseLogical')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <div class=\"div-eval-section\">Please rate the presenter (if applicable).</div>\r\n\r\n <b-form-group label=\"Communication skills and clarity.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-5\"\r\n name=\"btn-radios-5\"\r\n v-model=\"$v.form.instructorCommunication.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('instructorCommunication')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorCommunication')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Preparedness.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-6\"\r\n v-model=\"$v.form.instructorPreparedness.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-6\"\r\n :state=\"validateState('instructorPreparedness')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorPreparedness')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Effectiveness.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-7\"\r\n v-model=\"$v.form.instructorEffectiveness.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-7\"\r\n :state=\"validateState('instructorEffectiveness')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorEffectiveness')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <div class=\"div-eval-section\">Please rate your online experience.</div>\r\n\r\n <b-form-group label=\"Website speed.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-8\"\r\n v-model=\"$v.form.sitePresentation.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-8\"\r\n :state=\"validateState('sitePresentation')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('sitePresentation')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Ease of navigation through website.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-9\"\r\n v-model=\"$v.form.siteNavigation.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-9\"\r\n :state=\"validateState('siteNavigation')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('siteNavigation')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Overall rating of this site as compared to other CE online sites.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-10\"\r\n v-model=\"$v.form.siteComparison.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-10\"\r\n :state=\"validateState('siteComparison')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('siteComparison')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Please include any of your comments.\" label-for=\"comments\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-textarea\r\n id=\"comments\"\r\n v-model=\"$v.form.comments.$model\"\r\n placeholder=\"Enter text here...\"\r\n rows=\"2\"\r\n max-rows=\"6\"\r\n :state=\"validateState('comments')\"\r\n aria-describedby=\"support-comments-feedback\"\r\n ></b-form-textarea>\r\n <b-form-invalid-feedback v-if=\"!$v.form.comments.maxLength\">Field exceeds maximum allowed length.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"What other topics would you like included in future presentations?\" label-for=\"comments\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-textarea\r\n id=\"otherTopics\"\r\n v-model=\"$v.form.otherTopics.$model\"\r\n placeholder=\"Enter text here...\"\r\n rows=\"2\"\r\n max-rows=\"6\"\r\n :state=\"validateState('otherTopics')\"\r\n aria-describedby=\"support-otherTopics-feedback\"\r\n ></b-form-textarea>\r\n <b-form-invalid-feedback v-if=\"!$v.form.otherTopics.maxLength\">Field exceeds maximum allowed length.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <b-button type=\"submit\" variant=\"primary\" class=\"mt-2 w-100\">Submit Evaluation</b-button>\r\n </b-form>\r\n </div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, maxLength } from 'vuelidate/lib/validators'\r\n\r\nexport default {\r\n name: \"EvalPodcast\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n errorMsg: 'Technical error - contact support.',\r\n requiredMsg: 'Answer is required.',\r\n msg: \"Evaluation\",\r\n blurb:\r\n \"In order to comply with AGD PACE requirements, an evaluation form needs to be completed. After completing and submitting this form you will be directed to the CE Exam. Thank you!\",\r\n podcastHash: \"\",\r\n studentHash: this.$root.getToken(),\r\n podcast: {},\r\n studentData: { status: false },\r\n form: {\r\n courseObjectives: null,\r\n courseUseful: null,\r\n courseAppropriate: null,\r\n courseLogical: null,\r\n instructorCommunication: null,\r\n instructorPreparedness: null,\r\n instructorEffectiveness: null,\r\n sitePresentation: null,\r\n siteNavigation: null,\r\n siteComparison: null,\r\n comments: null,\r\n otherTopics: null\r\n },\r\n options: [\r\n { text: \"Excellent\", value: 4 },\r\n { text: \"Good\", value: 3 },\r\n { text: \"Fair\", value: 2 },\r\n { text: \"Poor\", value: 1 }\r\n ]\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n p: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n courseObjectives: {\r\n required\r\n },\r\n courseUseful: {\r\n required\r\n },\r\n courseAppropriate: {\r\n required\r\n },\r\n courseLogical: {\r\n required\r\n },\r\n instructorCommunication: {\r\n required\r\n },\r\n instructorPreparedness: {\r\n required\r\n },\r\n instructorEffectiveness: {\r\n required\r\n },\r\n sitePresentation: {\r\n required\r\n },\r\n siteNavigation: {\r\n required\r\n },\r\n siteComparison: {\r\n required\r\n },\r\n comments: {\r\n maxLength: maxLength(1024)\r\n },\r\n otherTopics: {\r\n maxLength: maxLength(1024)\r\n }\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n validateRadio(name) {\r\n return this.$v.form[name].$dirty && !this.$v.form[name].required\r\n },\r\n submitEval(e) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n\r\n let data = {}\r\n let evalData = {\r\n s: this.studentHash,\r\n c: null,\r\n p: this.podcastHash,\r\n a: this.form\r\n }\r\n service\r\n .saveEval(evalData)\r\n .then(data => {\r\n // console.log(`back from saveEval`);\r\n if (this.debug) console.log(data)\r\n if (data.status) {\r\n this.$router.push({ path: `/exam-podcast/${this.podcastHash}` })\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Error saving evaluation. Try again.\"\r\n }\r\n })\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n this.podcastHash = this.p || this.$route.query.p || ''\r\n if (this.podcastHash) {\r\n service\r\n .getPodcast(this.podcastHash, this.studentHash)\r\n .then( ( data => {\r\n // console.log(`back from getPodcast!`);\r\n if (this.debug) console.log(data);\r\n if (data.status && data.podcast.status) {\r\n this.podcast = data.podcast\r\n if (data.studentData.status) {\r\n this.studentData = data.studentData\r\n if (this.studentData.classViewCount === 0) {\r\n alert('Please listen to podcast before taking exam.')\r\n // this.$router.go(-1) // previous page\r\n this.$router.push({ path: `/podcast/${this.podcast.podcastShowHash}/${this.podcastHash}` })\r\n }\r\n else if (this.studentData.evalTaken) {\r\n this.$router.push({ path: `/exam-podcast/${this.podcastHash}` })\r\n }\r\n }\r\n else {\r\n // Either bad student hash, or no gradebook record for this student.\r\n // Note - no way to detect if person watched on spotify. Ignore this condition?\r\n alert('Please listen to podcast before taking exam.')\r\n this.$router.push({ path: `/podcast/${this.podcast.podcastShowHash}/${this.podcastHash}` })\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Error retrieving podcast data. Refresh and try again.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n // console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log('getPodcast', e)\r\n });\r\n } else {\r\n this.$router.push(\"podcasts\");\r\n }\r\n },\r\n mounted () {\r\n this.form = {\r\n courseObjectives: null,\r\n courseUseful: null,\r\n courseAppropriate: null,\r\n courseLogical: null,\r\n instructorCommunication: null,\r\n instructorPreparedness: null,\r\n instructorEffectiveness: null,\r\n sitePresentation: null,\r\n siteNavigation: null,\r\n siteComparison: null,\r\n comments: null,\r\n otherTopics: null\r\n }\r\n },\r\n beforeDestroy() {\r\n this.loading = true\r\n this.error = false\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.div-eval-section {\r\n color: black;\r\n border-top: solid 1px #888;\r\n border-bottom: solid 1px #888;\r\n font-weight: bold;\r\n background-color: #ccc;\r\n padding: 2px 5px;\r\n margin: 8px 0px;\r\n}\r\n.validate-radio-error {\r\n width: 100%;\r\n margin-top: 0.25rem;\r\n font-size: 80%;\r\n color: #dc3545;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/EvalPodcast.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Evaluation\")])])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"mt-2 mb-3\"},[_vm._v(_vm._s(_vm.blurb))])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('strong',[_vm._v(\"Title\")])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"9\"}},[_vm._v(_vm._s(_vm.podcast.title))])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('strong',[_vm._v(\"Released\")])]),_vm._v(\" \"),_c('b-col',[_vm._v(_vm._s(_vm._f(\"prettyDate\")(_vm.podcast.releaseDate)))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body mt-3\"},[_c('div',{staticClass:\"div-padding\"},[_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submitEval($event)}}},[_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate the content\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Objectives stated in the description of this activity were met.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-1\",\"name\":\"btn-radios-1\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('courseObjectives')},model:{value:(_vm.$v.form.courseObjectives.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseObjectives, \"$model\", $$v)},expression:\"$v.form.courseObjectives.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseObjectives'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Practically useful.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-2\",\"name\":\"btn-radios-2\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('courseUseful')},model:{value:(_vm.$v.form.courseUseful.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseUseful, \"$model\", $$v)},expression:\"$v.form.courseUseful.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseUseful'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Appropriate, in-depth and comprehensive.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-3\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-3\",\"state\":_vm.validateState('courseAppropriate')},model:{value:(_vm.$v.form.courseAppropriate.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseAppropriate, \"$model\", $$v)},expression:\"$v.form.courseAppropriate.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseAppropriate'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Logical and well organized.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-4\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-4\",\"state\":_vm.validateState('courseLogical')},model:{value:(_vm.$v.form.courseLogical.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseLogical, \"$model\", $$v)},expression:\"$v.form.courseLogical.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseLogical'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate the presenter (if applicable).\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Communication skills and clarity.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-5\",\"name\":\"btn-radios-5\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('instructorCommunication')},model:{value:(_vm.$v.form.instructorCommunication.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorCommunication, \"$model\", $$v)},expression:\"$v.form.instructorCommunication.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorCommunication'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Preparedness.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-6\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-6\",\"state\":_vm.validateState('instructorPreparedness')},model:{value:(_vm.$v.form.instructorPreparedness.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorPreparedness, \"$model\", $$v)},expression:\"$v.form.instructorPreparedness.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorPreparedness'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Effectiveness.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-7\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-7\",\"state\":_vm.validateState('instructorEffectiveness')},model:{value:(_vm.$v.form.instructorEffectiveness.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorEffectiveness, \"$model\", $$v)},expression:\"$v.form.instructorEffectiveness.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorEffectiveness'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate your online experience.\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Website speed.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-8\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-8\",\"state\":_vm.validateState('sitePresentation')},model:{value:(_vm.$v.form.sitePresentation.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.sitePresentation, \"$model\", $$v)},expression:\"$v.form.sitePresentation.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('sitePresentation'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Ease of navigation through website.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-9\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-9\",\"state\":_vm.validateState('siteNavigation')},model:{value:(_vm.$v.form.siteNavigation.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.siteNavigation, \"$model\", $$v)},expression:\"$v.form.siteNavigation.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('siteNavigation'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Overall rating of this site as compared to other CE online sites.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-10\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-10\",\"state\":_vm.validateState('siteComparison')},model:{value:(_vm.$v.form.siteComparison.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.siteComparison, \"$model\", $$v)},expression:\"$v.form.siteComparison.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('siteComparison'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Please include any of your comments.\",\"label-for\":\"comments\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-textarea',{attrs:{\"id\":\"comments\",\"placeholder\":\"Enter text here...\",\"rows\":\"2\",\"max-rows\":\"6\",\"state\":_vm.validateState('comments'),\"aria-describedby\":\"support-comments-feedback\"},model:{value:(_vm.$v.form.comments.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.comments, \"$model\", $$v)},expression:\"$v.form.comments.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.comments.maxLength)?_c('b-form-invalid-feedback',[_vm._v(\"Field exceeds maximum allowed length.\")]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"What other topics would you like included in future presentations?\",\"label-for\":\"comments\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-textarea',{attrs:{\"id\":\"otherTopics\",\"placeholder\":\"Enter text here...\",\"rows\":\"2\",\"max-rows\":\"6\",\"state\":_vm.validateState('otherTopics'),\"aria-describedby\":\"support-otherTopics-feedback\"},model:{value:(_vm.$v.form.otherTopics.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.otherTopics, \"$model\", $$v)},expression:\"$v.form.otherTopics.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.otherTopics.maxLength)?_c('b-form-invalid-feedback',[_vm._v(\"Field exceeds maximum allowed length.\")]):_vm._e()],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1)]),_vm._v(\" \"),_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Submit Evaluation\")])],1)],1)])])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2c7a43a0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/EvalPodcast.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2c7a43a0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./EvalPodcast.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./EvalPodcast.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./EvalPodcast.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2c7a43a0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./EvalPodcast.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2c7a43a0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/EvalPodcast.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" md=\"8\" lg=\"6\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div v-if=\"!error && !inLobby\">\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div v-if=\"!busy\" key=\"part1\">\r\n <b-row>\r\n <b-col>\r\n <!-- <b-col cols=\"12\" lg=\"6\" offset-lg=\"3\"> -->\r\n <div class=\"headline\">{{podcast.title}}</div>\r\n <div v-show=\"!isGraded && !passed\" class=\"blurb mb-2\">\r\n A score of {{exam.minScore}}% or greater is required to complete this course.\r\n </div>\r\n <b-alert :show=\"isGraded && !passed\" variant=\"danger\">\r\n Your score of {{examScore}}% is insufficient to pass this course.\r\n <br>A score of {{exam.minScore}}% or greater is required.\r\n <br>Review your answers and re-submit exam.\r\n </b-alert>\r\n <b-alert :show=\"passed\" class=\"mt-2\" variant=\"success\">\r\n <h3>Congratulations! You've earned CE credit. Grade: {{examScore}}%</h3>\r\n <div>For your convenience the graded exam is below.</div>\r\n <div class=\"text-center\">\r\n <b-button size=\"sm\" @click=\"gotoPodcast\">Return to Podcasts</b-button>\r\n </div>\r\n </b-alert>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n <div v-else key=\"part2\">\r\n <b-alert show variant=\"warning\">Please wait while exam is loaded.</b-alert>\r\n </div>\r\n </transition>\r\n\r\n <!-- https://bootstrap-vue.js.org/docs/components/input-group -->\r\n <b-form v-show=\"!busy\" @submit.prevent=\"submitExam\">\r\n <b-overlay :show=\"grading\">\r\n <b-row v-for=\"(row,index) in exam.questions\" v-bind:key=\"row.examQId\" class=\"mt-2\">\r\n <!-- index starts zero -->\r\n <b-col>\r\n <b-row>\r\n <b-col class=\"exam-question\">\r\n Q{{index+1}}. {{row.question}}\r\n </b-col>\r\n </b-row>\r\n\r\n <b-form-group label>\r\n <b-form-radio\r\n v-if=\"row.option1 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"1\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,1)},{'incorrect': isIncorrect(index,1)}]\"\r\n >a. {{row.option1}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option2 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"2\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,2)},{'incorrect': isIncorrect(index,2)}]\"\r\n >b. {{row.option2}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option3 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"3\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,3)},{'incorrect': isIncorrect(index,3)}]\"\r\n >c. {{row.option3}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option4 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"4\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,4)},{'incorrect': isIncorrect(index,4)}]\"\r\n >d. {{row.option4}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option5 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"5\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,5)},{'incorrect': isIncorrect(index,5)}]\"\r\n >e. {{row.option5}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option6 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"6\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,6)},{'incorrect': isIncorrect(index,6)}]\"\r\n >f. {{row.option6}}</b-form-radio>\r\n </b-form-group>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n <b-alert :show=\"!studentData.agdNumber && !studentData.hideAgdReminder\" variant=\"info\" class=\"mt-2\">\r\n <!-- We do not have your AGD number on file. -->\r\n <b>ATTENTION AGD MEMBERS:</b>\r\n If you would like us to start reporting your CE credits to the Academy of General Dentistry, go to the Account Profile page and enter your AGD member number after you pass this exam.\r\n\r\n <div class=\"mt-2\">\r\n <b-form-checkbox\r\n id=\"hide-agd-reminder\"\r\n v-model=\"hideAgdReminder\"\r\n name=\"hide-agd-reminder\"\r\n value=\"true\"\r\n unchecked-value=\"false\"\r\n @input=\"checkAgdReminder\"\r\n >\r\n Do not show this reminder again.\r\n </b-form-checkbox>\r\n </div>\r\n </b-alert>\r\n\r\n </b-overlay>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-model=\"errorGrading\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </transition>\r\n\r\n <b-row v-show=\"!grading && !passed\">\r\n <b-col>\r\n <b-button type=\"submit\" variant=\"primary\" class=\"mt-2 w-100\">Submit Exam</b-button>\r\n </b-col>\r\n </b-row>\r\n <b-row v-show=\"grading\">\r\n <b-col>\r\n <b-button disabled type=\"button\" variant=\"primary\" class=\"mt-2 w-100\">Grading...</b-button>\r\n </b-col>\r\n </b-row>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-row v-show=\"passed\">\r\n <b-col>\r\n <b-alert :show=\"passed\" variant=\"success\">\r\n <h3>Congratulations! You've earned CE credit. Grade: {{examScore}}%</h3>\r\n <div>Scroll up to see graded exam.</div>\r\n </b-alert>\r\n </b-col>\r\n </b-row>\r\n </transition>\r\n\r\n </b-form>\r\n </div>\r\n\r\n <template v-if=\"inLobby\">\r\n <b-link @click=\"inLobby = false\"><b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Back to Podcast Page</b-link>\r\n <lobby-exam :classHash=null :podcastHash=\"podcastHash\" :studentHash=\"studentHash\" :examScore=\"examScore\"></lobby-exam>\r\n </template>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nexport default {\r\n name: \"PodcastExam\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n errorGrading: false,\r\n hideAgdReminder: false,\r\n errorMsg: null,\r\n busy: false,\r\n grading: false,\r\n msg: \"Exam\",\r\n blurb: \"\",\r\n podcast: {},\r\n studentData: { status: false },\r\n exam: {},\r\n examScore: 0,\r\n passed: false,\r\n studentHash: this.$root.getToken(),\r\n podcastHash: \"\",\r\n selected: [], // model for each button group\r\n answers: [], // static set of selected choices - set at poit of grading\r\n grades: [],\r\n radioClassArr: [\"pt-1\", \"pb-1\", \"mb-1\", \"radio-exam\"],\r\n inLobby: false\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n p: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n components: {},\r\n computed: {\r\n isGraded() {\r\n return this.grades.length !== 0\r\n },\r\n haveAnswers() {\r\n // return true if exam is graded\r\n return this.answers.length !== 0\r\n }\r\n },\r\n methods: {\r\n gotoPodcast() {\r\n this.$router.push(`/podcasts`)\r\n },\r\n isCorrect(quesIndex, ansIndex) {\r\n // return true if exam is graded and item is selected and correct.\r\n // or if exam passed and answer is the correct one\r\n let aout = false\r\n if ( !this.grading\r\n && this.haveAnswers\r\n && ansIndex == this.answers[quesIndex]\r\n && this.grades[quesIndex]\r\n ) {\r\n aout = true\r\n }\r\n else if ( this.passed\r\n && ansIndex == this.exam.questions[quesIndex].correctOption\r\n ) {\r\n aout = true\r\n }\r\n // console.log(`isCorrect(${quesIndex},${ansIndex}) ${aout}`)\r\n return aout\r\n },\r\n isIncorrect(quesIndex, ansIndex) {\r\n // return true if exam is graded and item is selected and incorrect.\r\n let aout = false\r\n if ( !this.grading\r\n && this.haveAnswers\r\n && ansIndex == this.answers[quesIndex]\r\n && !this.grades[quesIndex]\r\n ) {\r\n aout = true\r\n }\r\n // console.log(`isIncorrect(${quesIndex},${ansIndex}) ${aout}`)\r\n return aout\r\n },\r\n clearAnswers() {\r\n this.answers = []\r\n },\r\n checkAgdReminder () { // tied to input event not change.\r\n // console.log(`hideAgdReminder: ${this.hideAgdReminder}`)\r\n if (!this.studentData.hideAgdReminder && this.hideAgdReminder === \"true\") {\r\n console.log(`hideAgdReminder: ${this.hideAgdReminder}`)\r\n this.studentData.hideAgdReminder = true // one time event\r\n // update student record\r\n service\r\n .hideAgdReminder(this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`Data updated.`)\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n console.log(`finally...`)\r\n }).bind(this)\r\n )\r\n .catch( e => {\r\n console.log(e)\r\n })\r\n }\r\n },\r\n submitExam(e) {\r\n // e.preventDefault(); // uses submit.prevent\r\n this.error = false\r\n this.errorGrading = false\r\n this.clearAnswers()\r\n // console.log(`json: ${this.exam.questions.length} form: ${this.selected.length} `)\r\n if (this.exam.questions.length === this.selected.length) {\r\n this.grading = true\r\n this.grades = []\r\n // All answers present\r\n let examData = {\r\n s: this.studentHash,\r\n c: null,\r\n p: this.podcastHash,\r\n a: this.selected\r\n }\r\n service\r\n .gradeExam(examData)\r\n .then(\r\n (res => {\r\n // console.log(`back from gradeExam!`)\r\n // if (this.debug) console.log(this.$refs)\r\n if (res.status) {\r\n this.exam = res.exam // get correctOption on questions\r\n this.examScore = res.examScore\r\n this.passed = res.passed\r\n this.grades = res.grades // Array T/F for each question\r\n this.answers = this.selected.slice() // clone array\r\n } else {\r\n console.log(`Error from grade-exam.`)\r\n this.errorMsg = res.msg\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n // console.log(`finally grade exam...`);\r\n this.grading = false\r\n document.getElementById('app').scrollIntoView() // scroll to top of page.\r\n if (this.passed) this.inLobby = true // Activate podcast lobby.\r\n }).bind(this)\r\n )\r\n .catch(e => {\r\n this.grading = false\r\n this.error = true\r\n this.errorMsg = \"Technical Error. Try again later.\"\r\n console.log(e)\r\n });\r\n } else {\r\n // missing answers\r\n this.errorMsg = \"Please answer all questions.\"\r\n this.errorGrading = true\r\n // alert(\"Please answer all questions!\");\r\n }\r\n }\r\n },\r\n created() {\r\n this.podcastHash = this.p || this.$route.query.p || null\r\n if (this.podcastHash) {\r\n this.busy = true\r\n service\r\n .getExam('', this.podcastHash, this.studentHash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getExam!`);\r\n if (res.status && res.exam.status) {\r\n if (res.exam) {\r\n this.exam = res.exam\r\n }\r\n // if (this.debug) console.log(this.exam)\r\n if (res.studentData && res.studentData.status) {\r\n this.studentData = res.studentData\r\n if (!this.studentData.evalTaken) {\r\n alert('Complete evaluation before completing exam.')\r\n this.$router.push({ path: `/eval-podcast/${this.podcastHash}` })\r\n }\r\n if (this.studentData.examTaken) {\r\n alert('Exam completed. Returning to podcasts.')\r\n this.gotoPodcast()\r\n }\r\n }\r\n else {\r\n alert('Unable to load student. Returning to podcast list.')\r\n this.gotoPodcast()\r\n }\r\n this.podcast = {\r\n podcastId: res.podcastId,\r\n title: res.title,\r\n credits: res.credits,\r\n releaseDate: res.releaseDate,\r\n ceTypeId: this.studentData.ceTypeId\r\n }\r\n }\r\n else {\r\n this.errorMsg = \"Exam not available. Try again later.\"\r\n this.error = true;\r\n }\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n this.busy = false\r\n this.loading = false\r\n // console.log(`finally...`)\r\n }).bind(this)\r\n )\r\n .catch( e => {\r\n this.errorMsg = \"Technical error. Contact support.\"\r\n this.error = true;\r\n console.log(e);\r\n })\r\n }\r\n else {\r\n // podcastHash not provided\r\n this.$router.push(\"/podcasts\");\r\n }\r\n },\r\n mounted() {\r\n this.passed = false\r\n this.errorGrading = false\r\n this.grades = []\r\n this.clearAnswers()\r\n\r\n for(let ix=0; ix < this.selected.length; ix++) {\r\n this.selected[ix] = 0\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n .headline {\r\n font-weight: bold;\r\n }\r\n .blurb {\r\n margin-top: 8px;\r\n }\r\n .exam-question {\r\n font-weight: bold;\r\n margin-top: 5px;\r\n }\r\n\r\n/* https://www.w3schools.com/colors/colors_names.asp */\r\n/* https://www.w3schools.com/colors/colors_mixer.asp?colorbottom=FFC0CB&colortop=FFFFFF */\r\n\r\n .test123 {\r\n margin-left: 20px;\r\n }\r\n .correct {\r\n background-color: #ccffcc; /* pale green #98FB98 */\r\n }\r\n .incorrect {\r\n background-color: #ffc0cb; /* pink */\r\n }\r\n\r\n h3 {\r\n font-size: 1.4rem;\r\n }\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/ExamPodcast.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"lg\":\"6\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.error && !_vm.inLobby)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.busy)?_c('div',{key:\"part1\"},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.podcast.title))]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isGraded && !_vm.passed),expression:\"!isGraded && !passed\"}],staticClass:\"blurb mb-2\"},[_vm._v(\"\\n A score of \"+_vm._s(_vm.exam.minScore)+\"% or greater is required to complete this course.\\n \")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":_vm.isGraded && !_vm.passed,\"variant\":\"danger\"}},[_vm._v(\"\\n Your score of \"+_vm._s(_vm.examScore)+\"% is insufficient to pass this course.\\n \"),_c('br'),_vm._v(\"A score of \"+_vm._s(_vm.exam.minScore)+\"% or greater is required.\\n \"),_c('br'),_vm._v(\"Review your answers and re-submit exam.\\n \")]),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.passed,\"variant\":\"success\"}},[_c('h3',[_vm._v(\"Congratulations! You've earned CE credit. Grade: \"+_vm._s(_vm.examScore)+\"%\")]),_vm._v(\" \"),_c('div',[_vm._v(\"For your convenience the graded exam is below.\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":_vm.gotoPodcast}},[_vm._v(\"Return to Podcasts\")])],1)])],1)],1)],1):_c('div',{key:\"part2\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"warning\"}},[_vm._v(\"Please wait while exam is loaded.\")])],1)]),_vm._v(\" \"),_c('b-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.busy),expression:\"!busy\"}],on:{\"submit\":function($event){$event.preventDefault();return _vm.submitExam($event)}}},[_c('b-overlay',{attrs:{\"show\":_vm.grading}},[_vm._l((_vm.exam.questions),function(row,index){return _c('b-row',{key:row.examQId,staticClass:\"mt-2\"},[_c('b-col',[_c('b-row',[_c('b-col',{staticClass:\"exam-question\"},[_vm._v(\"\\n Q\"+_vm._s(index+1)+\". \"+_vm._s(row.question)+\"\\n \")])],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"\"}},[(row.option1 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,1)},{'incorrect': _vm.isIncorrect(index,1)}],attrs:{\"value\":\"1\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"a. \"+_vm._s(row.option1))]):_vm._e(),_vm._v(\" \"),(row.option2 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,2)},{'incorrect': _vm.isIncorrect(index,2)}],attrs:{\"value\":\"2\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"b. \"+_vm._s(row.option2))]):_vm._e(),_vm._v(\" \"),(row.option3 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,3)},{'incorrect': _vm.isIncorrect(index,3)}],attrs:{\"value\":\"3\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"c. \"+_vm._s(row.option3))]):_vm._e(),_vm._v(\" \"),(row.option4 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,4)},{'incorrect': _vm.isIncorrect(index,4)}],attrs:{\"value\":\"4\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"d. \"+_vm._s(row.option4))]):_vm._e(),_vm._v(\" \"),(row.option5 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,5)},{'incorrect': _vm.isIncorrect(index,5)}],attrs:{\"value\":\"5\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"e. \"+_vm._s(row.option5))]):_vm._e(),_vm._v(\" \"),(row.option6 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,6)},{'incorrect': _vm.isIncorrect(index,6)}],attrs:{\"value\":\"6\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"f. \"+_vm._s(row.option6))]):_vm._e()],1)],1)],1)}),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":!_vm.studentData.agdNumber && !_vm.studentData.hideAgdReminder,\"variant\":\"info\"}},[_c('b',[_vm._v(\"ATTENTION AGD MEMBERS:\")]),_vm._v(\"\\n If you would like us to start reporting your CE credits to the Academy of General Dentistry, go to the Account Profile page and enter your AGD member number after you pass this exam.\\n\\n \"),_c('div',{staticClass:\"mt-2\"},[_c('b-form-checkbox',{attrs:{\"id\":\"hide-agd-reminder\",\"name\":\"hide-agd-reminder\",\"value\":\"true\",\"unchecked-value\":\"false\"},on:{\"input\":_vm.checkAgdReminder},model:{value:(_vm.hideAgdReminder),callback:function ($$v) {_vm.hideAgdReminder=$$v},expression:\"hideAgdReminder\"}},[_vm._v(\"\\n Do not show this reminder again.\\n \")])],1)])],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.errorGrading),callback:function ($$v) {_vm.errorGrading=$$v},expression:\"errorGrading\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1),_vm._v(\" \"),_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.grading && !_vm.passed),expression:\"!grading && !passed\"}]},[_c('b-col',[_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Submit Exam\")])],1)],1),_vm._v(\" \"),_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.grading),expression:\"grading\"}]},[_c('b-col',[_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"disabled\":\"\",\"type\":\"button\",\"variant\":\"primary\"}},[_vm._v(\"Grading...\")])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.passed),expression:\"passed\"}]},[_c('b-col',[_c('b-alert',{attrs:{\"show\":_vm.passed,\"variant\":\"success\"}},[_c('h3',[_vm._v(\"Congratulations! You've earned CE credit. Grade: \"+_vm._s(_vm.examScore)+\"%\")]),_vm._v(\" \"),_c('div',[_vm._v(\"Scroll up to see graded exam.\")])])],1)],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.inLobby)?[_c('b-link',{on:{\"click\":function($event){_vm.inLobby = false}}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left-short\",\"scale\":\"2\"}}),_vm._v(\" Back to Podcast Page\")],1),_vm._v(\" \"),_c('lobby-exam',{attrs:{\"classHash\":null,\"podcastHash\":_vm.podcastHash,\"studentHash\":_vm.studentHash,\"examScore\":_vm.examScore}})]:_vm._e()],2)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6cd1535c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ExamPodcast.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6cd1535c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ExamPodcast.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ExamPodcast.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ExamPodcast.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6cd1535c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ExamPodcast.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6cd1535c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ExamPodcast.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"6\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Evaluation</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col class=\"mt-2 mb-3\">{{blurb}}</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <strong>Title</strong>\r\n </b-col>\r\n <b-col cols=\"9\">{{classObj.className}}</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <strong>Lecturer</strong>\r\n </b-col>\r\n <b-col>{{classObj.name}}</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <strong>Released</strong>\r\n </b-col>\r\n <b-col>{{classObj.releaseDateUTC | prettyDate}}</b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body mt-3\">\r\n <div class=\"div-padding\">\r\n <b-form @submit.prevent=\"submitEval\">\r\n <div class=\"div-eval-section\">Please rate the content</div>\r\n\r\n <!-- https://bootstrap-vue.js.org/docs/components/form-radio -->\r\n <b-form-group label=\"Objectives stated in the description of this content were met.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-1\"\r\n name=\"btn-radios-1\"\r\n v-model=\"$v.form.courseObjectives.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('courseObjectives')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseObjectives')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Practically useful.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-2\"\r\n name=\"btn-radios-2\"\r\n v-model=\"$v.form.courseUseful.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('courseUseful')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseUseful')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\" Appropriate, in-depth and comprehensive.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-3\"\r\n v-model=\"$v.form.courseAppropriate.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-3\"\r\n :state=\"validateState('courseAppropriate')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseAppropriate')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Logical and well organized.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-4\"\r\n v-model=\"$v.form.courseLogical.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-4\"\r\n :state=\"validateState('courseLogical')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('courseLogical')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <div class=\"div-eval-section\">Please rate the presenter (if applicable).</div>\r\n\r\n <b-form-group label=\"Communication skills and clarity.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-5\"\r\n name=\"btn-radios-5\"\r\n v-model=\"$v.form.instructorCommunication.$model\"\r\n :options=\"options\"\r\n buttons\r\n :state=\"validateState('instructorCommunication')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorCommunication')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Preparedness.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-6\"\r\n v-model=\"$v.form.instructorPreparedness.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-6\"\r\n :state=\"validateState('instructorPreparedness')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorPreparedness')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Effectiveness.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-7\"\r\n v-model=\"$v.form.instructorEffectiveness.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-7\"\r\n :state=\"validateState('instructorEffectiveness')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('instructorEffectiveness')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <div class=\"div-eval-section\">Please rate your online experience.</div>\r\n\r\n <b-form-group label=\"Website speed.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-8\"\r\n v-model=\"$v.form.sitePresentation.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-8\"\r\n :state=\"validateState('sitePresentation')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('sitePresentation')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Ease of navigation through website.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-9\"\r\n v-model=\"$v.form.siteNavigation.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-9\"\r\n :state=\"validateState('siteNavigation')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('siteNavigation')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Overall rating of this site as compared to other CE online sites.\">\r\n <b-form-radio-group\r\n id=\"btn-radios-10\"\r\n v-model=\"$v.form.siteComparison.$model\"\r\n :options=\"options\"\r\n buttons\r\n name=\"btn-radios-10\"\r\n :state=\"validateState('siteComparison')\"\r\n ></b-form-radio-group>\r\n <div class=\"validate-radio-error\" v-if=\"validateRadio('siteComparison')\">{{requiredMsg}}</div>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Please include any of your comments.\" label-for=\"comments\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-textarea\r\n id=\"comments\"\r\n v-model=\"$v.form.comments.$model\"\r\n placeholder=\"Enter text here...\"\r\n rows=\"2\"\r\n max-rows=\"6\"\r\n :state=\"validateState('comments')\"\r\n aria-describedby=\"support-comments-feedback\"\r\n ></b-form-textarea>\r\n <b-form-invalid-feedback v-if=\"!$v.form.comments.maxLength\">Field exceeds maximum allowed length.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"What other topics would you like included in future presentations?\" label-for=\"comments\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-textarea\r\n id=\"otherTopics\"\r\n v-model=\"$v.form.otherTopics.$model\"\r\n placeholder=\"Enter text here...\"\r\n rows=\"2\"\r\n max-rows=\"6\"\r\n :state=\"validateState('otherTopics')\"\r\n aria-describedby=\"support-otherTopics-feedback\"\r\n ></b-form-textarea>\r\n <b-form-invalid-feedback v-if=\"!$v.form.otherTopics.maxLength\">Field exceeds maximum allowed length.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <b-button type=\"submit\" variant=\"primary\" class=\"mt-2 w-100\">Submit Evaluation</b-button>\r\n </b-form>\r\n </div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, maxLength } from 'vuelidate/lib/validators'\r\n\r\nexport default {\r\n name: \"Eval\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n errorMsg: 'Technical error - contact support.',\r\n requiredMsg: 'Answer is required.',\r\n msg: \"Evaluation\",\r\n blurb:\r\n \"In order to comply with AGD PACE requirements, an evaluation form needs to be completed. After completing and submitting this form you will be directed to the CE Exam. Thank you!\",\r\n classHash: \"\",\r\n studentHash: this.$root.getToken(),\r\n classObj: {},\r\n studentData: { status: false },\r\n form: {\r\n courseObjectives: null,\r\n courseUseful: null,\r\n courseAppropriate: null,\r\n courseLogical: null,\r\n instructorCommunication: null,\r\n instructorPreparedness: null,\r\n instructorEffectiveness: null,\r\n sitePresentation: null,\r\n siteNavigation: null,\r\n siteComparison: null,\r\n comments: null,\r\n otherTopics: null\r\n },\r\n options: [\r\n { text: \"Excellent\", value: 4 },\r\n { text: \"Good\", value: 3 },\r\n { text: \"Fair\", value: 2 },\r\n { text: \"Poor\", value: 1 }\r\n ]\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n courseObjectives: {\r\n required\r\n },\r\n courseUseful: {\r\n required\r\n },\r\n courseAppropriate: {\r\n required\r\n },\r\n courseLogical: {\r\n required\r\n },\r\n instructorCommunication: {\r\n required\r\n },\r\n instructorPreparedness: {\r\n required\r\n },\r\n instructorEffectiveness: {\r\n required\r\n },\r\n sitePresentation: {\r\n required\r\n },\r\n siteNavigation: {\r\n required\r\n },\r\n siteComparison: {\r\n required\r\n },\r\n comments: {\r\n maxLength: maxLength(1024)\r\n },\r\n otherTopics: {\r\n maxLength: maxLength(1024)\r\n }\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n validateRadio(name) {\r\n return this.$v.form[name].$dirty && !this.$v.form[name].required\r\n },\r\n submitEval(e) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n\r\n let data = {};\r\n let evalData = {\r\n s: this.$root.getToken(),\r\n c: this.classHash,\r\n p: null,\r\n a: this.form\r\n }\r\n service\r\n .saveEval(evalData)\r\n .then(data => {\r\n // console.log(`back from saveEval`);\r\n if (this.debug) console.log(data)\r\n if (data.status) {\r\n this.$router.push({path: `/sva/${this.classHash}`})\r\n }\r\n else {\r\n this.errorMsg = \"Error saving evaluation. Try again.\"\r\n this.error = true\r\n }\r\n })\r\n .catch(e => console.log('saveEval: ', e));\r\n }\r\n },\r\n created() {\r\n this.loading = true\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || null\r\n\r\n if (this.classHash) {\r\n service\r\n .getClass(this.classHash, this.studentHash)\r\n .then( ( data => {\r\n if (this.debug) console.log(data);\r\n if (data.status) {\r\n this.classObj = data.classObj\r\n if (data.studentData.status) {\r\n this.studentData = data.studentData\r\n if (this.studentData.classViewCount === 0) {\r\n alert('Please view class before taking exam.')\r\n this.$router.push({ path: `/classroom/${this.classHash}` })\r\n }\r\n else if (this.studentData.evalTaken) {\r\n // student has already taken eval. Move to SVA.\r\n this.$router.push({ path: `/sva/${this.classHash}` })\r\n }\r\n }\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.errorMsg = \"Error retrieving data. Try again.\"\r\n this.error = true\r\n console.log('created:', e)\r\n })\r\n } else {\r\n this.$router.push(\"pending\")\r\n }\r\n },\r\n mounted () {\r\n this.form = {\r\n courseObjectives: null,\r\n courseUseful: null,\r\n courseAppropriate: null,\r\n courseLogical: null,\r\n instructorCommunication: null,\r\n instructorPreparedness: null,\r\n instructorEffectiveness: null,\r\n sitePresentation: null,\r\n siteNavigation: null,\r\n siteComparison: null,\r\n comments: null,\r\n otherTopics: null\r\n }\r\n },\r\n beforeDestroy() {\r\n this.loading = true\r\n this.error = false\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style>\r\n.div-eval-section {\r\n color: black;\r\n border-top: solid 1px #888;\r\n border-bottom: solid 1px #888;\r\n font-weight: bold;\r\n background-color: #ccc;\r\n padding: 2px 5px;\r\n margin: 8px 0px;\r\n}\r\n\r\n.validate-radio-error {\r\n width: 100%;\r\n margin-top: 0.25rem;\r\n font-size: 80%;\r\n color: #dc3545;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Eval.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Evaluation\")])])])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{staticClass:\"mt-2 mb-3\"},[_vm._v(_vm._s(_vm.blurb))])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('strong',[_vm._v(\"Title\")])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"9\"}},[_vm._v(_vm._s(_vm.classObj.className))])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('strong',[_vm._v(\"Lecturer\")])]),_vm._v(\" \"),_c('b-col',[_vm._v(_vm._s(_vm.classObj.name))])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('strong',[_vm._v(\"Released\")])]),_vm._v(\" \"),_c('b-col',[_vm._v(_vm._s(_vm._f(\"prettyDate\")(_vm.classObj.releaseDateUTC)))])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body mt-3\"},[_c('div',{staticClass:\"div-padding\"},[_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submitEval($event)}}},[_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate the content\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Objectives stated in the description of this content were met.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-1\",\"name\":\"btn-radios-1\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('courseObjectives')},model:{value:(_vm.$v.form.courseObjectives.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseObjectives, \"$model\", $$v)},expression:\"$v.form.courseObjectives.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseObjectives'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Practically useful.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-2\",\"name\":\"btn-radios-2\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('courseUseful')},model:{value:(_vm.$v.form.courseUseful.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseUseful, \"$model\", $$v)},expression:\"$v.form.courseUseful.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseUseful'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\" Appropriate, in-depth and comprehensive.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-3\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-3\",\"state\":_vm.validateState('courseAppropriate')},model:{value:(_vm.$v.form.courseAppropriate.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseAppropriate, \"$model\", $$v)},expression:\"$v.form.courseAppropriate.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseAppropriate'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Logical and well organized.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-4\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-4\",\"state\":_vm.validateState('courseLogical')},model:{value:(_vm.$v.form.courseLogical.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.courseLogical, \"$model\", $$v)},expression:\"$v.form.courseLogical.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('courseLogical'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate the presenter (if applicable).\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Communication skills and clarity.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-5\",\"name\":\"btn-radios-5\",\"options\":_vm.options,\"buttons\":\"\",\"state\":_vm.validateState('instructorCommunication')},model:{value:(_vm.$v.form.instructorCommunication.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorCommunication, \"$model\", $$v)},expression:\"$v.form.instructorCommunication.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorCommunication'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Preparedness.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-6\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-6\",\"state\":_vm.validateState('instructorPreparedness')},model:{value:(_vm.$v.form.instructorPreparedness.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorPreparedness, \"$model\", $$v)},expression:\"$v.form.instructorPreparedness.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorPreparedness'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Effectiveness.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-7\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-7\",\"state\":_vm.validateState('instructorEffectiveness')},model:{value:(_vm.$v.form.instructorEffectiveness.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.instructorEffectiveness, \"$model\", $$v)},expression:\"$v.form.instructorEffectiveness.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('instructorEffectiveness'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"div-eval-section\"},[_vm._v(\"Please rate your online experience.\")]),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Website speed.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-8\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-8\",\"state\":_vm.validateState('sitePresentation')},model:{value:(_vm.$v.form.sitePresentation.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.sitePresentation, \"$model\", $$v)},expression:\"$v.form.sitePresentation.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('sitePresentation'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Ease of navigation through website.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-9\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-9\",\"state\":_vm.validateState('siteNavigation')},model:{value:(_vm.$v.form.siteNavigation.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.siteNavigation, \"$model\", $$v)},expression:\"$v.form.siteNavigation.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('siteNavigation'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"Overall rating of this site as compared to other CE online sites.\"}},[_c('b-form-radio-group',{attrs:{\"id\":\"btn-radios-10\",\"options\":_vm.options,\"buttons\":\"\",\"name\":\"btn-radios-10\",\"state\":_vm.validateState('siteComparison')},model:{value:(_vm.$v.form.siteComparison.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.siteComparison, \"$model\", $$v)},expression:\"$v.form.siteComparison.$model\"}}),_vm._v(\" \"),(_vm.validateRadio('siteComparison'))?_c('div',{staticClass:\"validate-radio-error\"},[_vm._v(_vm._s(_vm.requiredMsg))]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Please include any of your comments.\",\"label-for\":\"comments\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-textarea',{attrs:{\"id\":\"comments\",\"placeholder\":\"Enter text here...\",\"rows\":\"2\",\"max-rows\":\"6\",\"state\":_vm.validateState('comments'),\"aria-describedby\":\"support-comments-feedback\"},model:{value:(_vm.$v.form.comments.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.comments, \"$model\", $$v)},expression:\"$v.form.comments.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.comments.maxLength)?_c('b-form-invalid-feedback',[_vm._v(\"Field exceeds maximum allowed length.\")]):_vm._e()],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"What other topics would you like included in future presentations?\",\"label-for\":\"comments\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-textarea',{attrs:{\"id\":\"otherTopics\",\"placeholder\":\"Enter text here...\",\"rows\":\"2\",\"max-rows\":\"6\",\"state\":_vm.validateState('otherTopics'),\"aria-describedby\":\"support-otherTopics-feedback\"},model:{value:(_vm.$v.form.otherTopics.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.otherTopics, \"$model\", $$v)},expression:\"$v.form.otherTopics.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.otherTopics.maxLength)?_c('b-form-invalid-feedback',[_vm._v(\"Field exceeds maximum allowed length.\")]):_vm._e()],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1)]),_vm._v(\" \"),_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Submit Evaluation\")])],1)],1)])])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-02ab342b\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Eval.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-02ab342b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Eval.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Eval.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Eval.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-02ab342b\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Eval.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Eval.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" md=\"8\" lg=\"6\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div v-if=\"!error && !inLobby\">\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div v-if=\"!busy\" key=\"part1\">\r\n <b-row>\r\n <b-col>\r\n <!-- <b-col cols=\"12\" lg=\"6\" offset-lg=\"3\"> -->\r\n <div class=\"headline\">{{webinar.title}}</div>\r\n <div v-show=\"!isGraded && !passed\" class=\"blurb mb-2\">\r\n A score of {{exam.minScore}}% or greater is required to complete this course.\r\n </div>\r\n <b-alert :show=\"isGraded && !passed\" variant=\"danger\">\r\n Your score of {{examScore}}% is insufficient to pass this course.\r\n <br>A score of {{exam.minScore}}% or greater is required.\r\n <br>Review your answers and re-submit exam.\r\n </b-alert>\r\n <b-alert :show=\"passed\" class=\"mt-2\" variant=\"success\">\r\n <h3>Congratulations! You've earned CE credit. Grade: {{examScore}}%</h3>\r\n <div>For your convenience the graded exam is below.</div>\r\n <div class=\"text-center\">\r\n <b-button size=\"sm\" @click=\"gotoClass\">Return to Classroom</b-button>\r\n </div>\r\n </b-alert>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n <div v-else key=\"part2\">\r\n <b-alert show variant=\"warning\">\r\n Please wait while exam is loaded.\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <!-- https://bootstrap-vue.js.org/docs/components/input-group -->\r\n <b-form v-show=\"!busy\" @submit.prevent=\"submitExam\">\r\n <b-overlay :show=\"grading\">\r\n <b-row v-for=\"(row,index) in exam.questions\" v-bind:key=\"row.examQId\" class=\"mt-2\">\r\n <!-- index starts zero -->\r\n <b-col>\r\n <b-row>\r\n <b-col class=\"exam-question\">\r\n Q{{index+1}}. {{row.question}}\r\n </b-col>\r\n </b-row>\r\n\r\n <b-form-group label>\r\n <b-form-radio\r\n v-if=\"row.option1 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"1\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,1)},{'incorrect': isIncorrect(index,1)}]\"\r\n >a. {{row.option1}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option2 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"2\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,2)},{'incorrect': isIncorrect(index,2)}]\"\r\n >b. {{row.option2}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option3 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"3\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,3)},{'incorrect': isIncorrect(index,3)}]\"\r\n >c. {{row.option3}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option4 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"4\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,4)},{'incorrect': isIncorrect(index,4)}]\"\r\n >d. {{row.option4}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option5 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"5\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,5)},{'incorrect': isIncorrect(index,5)}]\"\r\n >e. {{row.option5}}</b-form-radio>\r\n <b-form-radio\r\n v-if=\"row.option6 !== null\"\r\n v-model=\"selected[index]\"\r\n value=\"6\"\r\n :class=\"[radioClassArr,{'correct': isCorrect(index,6)},{'incorrect': isIncorrect(index,6)}]\"\r\n >f. {{row.option6}}</b-form-radio>\r\n </b-form-group>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n <b-alert :show=\"!studentData.agdNumber && !studentData.hideAgdReminder\" variant=\"info\" class=\"mt-2\">\r\n <!-- We do not have your AGD number on file. -->\r\n <b>ATTENTION AGD MEMBERS:</b>\r\n If you would like us to start reporting your CE credits to the Academy of General Dentistry, go to the Account Profile page and enter your AGD member number after you pass this exam.\r\n\r\n <div class=\"mt-2\">\r\n <b-form-checkbox\r\n id=\"hide-agd-reminder\"\r\n v-model=\"hideAgdReminder\"\r\n name=\"hide-agd-reminder\"\r\n value=\"true\"\r\n unchecked-value=\"false\"\r\n @input=\"checkAgdReminder\"\r\n >\r\n Do not show this reminder again.\r\n </b-form-checkbox>\r\n </div>\r\n </b-alert>\r\n\r\n </b-overlay>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-model=\"errorGrading\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </transition>\r\n\r\n <b-row v-show=\"!grading && !passed\">\r\n <b-col>\r\n <b-button :disabled=\"isExamDisabled\" type=\"submit\" variant=\"primary\" class=\"mt-2 w-100\">Submit Exam</b-button>\r\n <div> <!-- alert banners -->\r\n <b-alert :show=\"isExamDisabled\" variant=\"danger\" class=\"mt-2\"><b>Exam Limit Reached:</b> You’ve reached the limit of 10 exams per day. Please resume your self-study activity another day.</b-alert>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-show=\"grading\">\r\n <b-col>\r\n <b-button disabled type=\"button\" variant=\"primary\" class=\"mt-2 w-100\">Grading...</b-button>\r\n </b-col>\r\n </b-row>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-row v-show=\"passed\">\r\n <b-col>\r\n <b-alert :show=\"passed\" variant=\"success\">\r\n <h3>Congratulations! You've earned CE credit. Grade: {{examScore}}%</h3>\r\n <div>Scroll up to see graded exam.</div>\r\n </b-alert>\r\n </b-col>\r\n </b-row>\r\n </transition>\r\n\r\n </b-form>\r\n </div>\r\n\r\n <template v-if=\"inLobby\">\r\n <b-link @click=\"inLobby = false\"><b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Back to Classroom Page</b-link>\r\n <lobby-exam :classHash=\"classHash\" :podcastHash=null :studentHash=\"studentHash\" :examScore=\"examScore\"></lobby-exam>\r\n </template>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nexport default {\r\n name: \"Exam\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n errorGrading: false, // true if error when grading exam\r\n examDelayMin: 0, // minute delay before taking exam after fails\r\n hideAgdReminder: false,\r\n errorMsg: null,\r\n busy: false,\r\n grading: false,\r\n msg: \"Exam\",\r\n blurb: \"\",\r\n webinar: {},\r\n studentData: { status: false, ceTypeId: 0, examsLeftToday: -1 },\r\n exam: {},\r\n examScore: 0,\r\n passed: false,\r\n studentHash: this.$root.getToken(),\r\n classHash: \"\",\r\n selected: [], // model for each button group\r\n answers: [], // static set of selected choices - set at poit of grading\r\n grades: [],\r\n radioClassArr: [\"pt-1\", \"pb-1\", \"mb-1\", \"radio-exam\"],\r\n inLobby: false // set true when student is in Exam podcast Lobbby\r\n }\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n c: {\r\n type: String,\r\n required: true,\r\n default: \"\"\r\n }\r\n },\r\n components: {},\r\n computed: {\r\n isGraded() {\r\n // return true if exam is graded\r\n return this.grades.length !== 0\r\n },\r\n haveAnswers() {\r\n // return true if exam is graded\r\n return this.answers.length !== 0\r\n },\r\n isExamDisabled() {\r\n let aout = (this.studentData.ceTypeId == constants.CE_TYPEID.HOMESTUDY && this.studentData.examsLeftToday <= 0)\r\n if (this.debug) console.log(`isExamDisabled: aout: ${aout} constants.CE_TYPEID.HOMESTUDY: ${constants.CE_TYPEID.HOME_STUDY} ceTypeId: ${this.studentData.ceTypeId} examsLeftToday: ${this.studentData.examsLeftToday}`)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n gotoClass() {\r\n this.$router.push(`/classroom/${this.classHash}`)\r\n },\r\n isCorrect(quesIndex, ansIndex) {\r\n // return true if exam is graded and item is selected and correct.\r\n // or if exam passed and answer is the correct one\r\n let aout = false\r\n if ( !this.grading\r\n && this.haveAnswers\r\n && ansIndex == this.answers[quesIndex]\r\n && this.grades[quesIndex]\r\n ) {\r\n aout = true\r\n }\r\n else if ( this.passed\r\n && ansIndex == this.exam.questions[quesIndex].correctOption\r\n ) {\r\n aout = true\r\n }\r\n // console.log(`isCorrect(${quesIndex},${ansIndex}) ${aout}`)\r\n return aout\r\n },\r\n isIncorrect(quesIndex, ansIndex) {\r\n // return true if exam is graded and item is selected and incorrect.\r\n let aout = false\r\n if ( !this.grading\r\n && this.haveAnswers\r\n && ansIndex == this.answers[quesIndex]\r\n && !this.grades[quesIndex]\r\n ) {\r\n aout = true\r\n }\r\n // console.log(`isIncorrect(${quesIndex},${ansIndex}) ${aout}`)\r\n return aout\r\n },\r\n clearAnswers() {\r\n this.answers = []\r\n },\r\n checkAgdReminder () { // tied to input event not change.\r\n // console.log(`hideAgdReminder: ${this.hideAgdReminder}`)\r\n if (!this.studentData.hideAgdReminder && this.hideAgdReminder === \"true\") {\r\n if (this.debug) console.log(`hideAgdReminder: ${this.hideAgdReminder}`)\r\n this.studentData.hideAgdReminder = true // one time event\r\n // update student record\r\n service\r\n .hideAgdReminder(this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`Data updated.`)\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n if (this.debug) console.log(`finally...`)\r\n }).bind(this)\r\n )\r\n .catch( e => {\r\n console.log(e)\r\n })\r\n }\r\n },\r\n submitExam(e) {\r\n // e.preventDefault(); // uses submit.prevent\r\n this.error = false\r\n this.errorGrading = false\r\n this.clearAnswers()\r\n // console.log(`json: ${this.exam.questions.length} form: ${this.selected.length} `)\r\n if (this.exam.questions.length === this.selected.length) {\r\n this.grading = true\r\n this.grades = []\r\n // All answers present\r\n let examData = {\r\n s: this.studentHash,\r\n c: this.classHash,\r\n p: null,\r\n a: this.selected\r\n }\r\n service\r\n .gradeExam(examData)\r\n .then(\r\n (res => {\r\n // console.log(`back from gradeExam!`)\r\n // if (this.debug) console.log(this.$refs)\r\n if (res.status) {\r\n this.exam = res.exam // get correctOption on questions\r\n this.examScore = res.examScore\r\n this.passed = res.passed\r\n this.grades = res.grades // Array T/F for each question\r\n this.answers = this.selected.slice() // clone array\r\n this.examDelayMin = res.examDelayMin\r\n if (this.debug) console.log(`GradeExam ExamDelayMin: ${this.examDelayMin}`)\r\n } else {\r\n console.log(`Error from grade-exam.`)\r\n this.errorMsg = res.msg\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n // console.log(`finally grade exam...`)\r\n this.grading = false\r\n document.getElementById('app').scrollIntoView() // scroll to top of page.\r\n if (this.passed) this.inLobby = true // Activate podcast lobby.\r\n }).bind(this)\r\n )\r\n .catch(e => {\r\n this.grading = false\r\n this.error = true\r\n this.errorMsg = \"Technical Error. Try again later.\"\r\n console.log(e)\r\n });\r\n } else {\r\n // missing answers\r\n this.errorMsg = \"Please answer all questions.\"\r\n this.errorGrading = true\r\n }\r\n },\r\n },\r\n created() {\r\n // can be classHadh or slug\r\n this.classHash = this.c || this.$route.query.c || this.$root.getClassHash() || null\r\n\r\n if (this.classHash) {\r\n this.busy = true\r\n service\r\n .getExam(this.classHash, null, this.studentHash)\r\n .then(\r\n (res => {\r\n // console.log(`back from getExam!`);\r\n if (res.status && res.exam.status) {\r\n if (res.exam) {\r\n this.exam = res.exam\r\n this.examDelayMin = res.examDelayMin\r\n if (this.debug) console.log(`Created ExamDelayMin: ${this.examDelayMin}`)\r\n }\r\n if (res.studentData && res.studentData.status) {\r\n this.studentData = res.studentData\r\n if (this.debug) console.log(`Created examsLeftToday: ${this.studentData.examsLeftToday}`)\r\n if (!this.studentData.evalTaken) {\r\n alert('Complete evaluation before completing exam.')\r\n this.$router.push({ path: `/eval/${this.classHash}` })\r\n }\r\n // if (this.studentData.examTaken) {\r\n // alert('Exam completed. Returning to classroom.')\r\n // this.gotoClass()\r\n // }\r\n }\r\n else {\r\n alert('Unable to load student. Returning to classroom.')\r\n this.gotoClass()\r\n }\r\n this.webinar = {\r\n classId: res.classId,\r\n title: res.title,\r\n credits: res.credits,\r\n releaseDate: res.releaseDate,\r\n ceTypeId: this.studentData.ceTypeId\r\n }\r\n }\r\n else {\r\n this.errorMsg = \"Exam not available. Try again later.\"\r\n this.error = true;\r\n }\r\n }).bind(this)\r\n )\r\n .finally(\r\n (() => {\r\n this.busy = false\r\n this.loading = false\r\n if (this.debug) console.log(`CREATED finally...`)\r\n }).bind(this)\r\n )\r\n .catch( e => {\r\n this.errorMsg = \"Technical error. Contact support.\"\r\n this.error = true\r\n console.log(e)\r\n })\r\n }\r\n else {\r\n // classhash not provided\r\n this.$router.push(\"/pending\");\r\n }\r\n },\r\n mounted() {\r\n this.passed = false\r\n this.errorGrading = false\r\n this.grades = []\r\n this.clearAnswers()\r\n this.examDelayMin = 0\r\n\r\n for(let ix=0; ix < this.selected.length; ix++) {\r\n this.selected[ix] = 0\r\n }\r\n if (this.debug) console.log(`MOUNTED...`)\r\n },\r\n beforeDestroy() {\r\n this.examDelayMin = 0\r\n this.loading = true\r\n this.busy = false\r\n }\r\n\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n .headline {\r\n font-weight: bold;\r\n }\r\n .blurb {\r\n margin-top: 8px;\r\n }\r\n .exam-question {\r\n font-weight: bold;\r\n margin-top: 5px;\r\n }\r\n\r\n/* https://www.w3schools.com/colors/colors_names.asp */\r\n/* https://www.w3schools.com/colors/colors_mixer.asp?colorbottom=FFC0CB&colortop=FFFFFF */\r\n\r\n .test123 {\r\n margin-left: 20px;\r\n }\r\n .correct {\r\n background-color: #ccffcc; /* pale green #98FB98 */\r\n }\r\n .incorrect {\r\n background-color: #ffc0cb; /* pink */\r\n }\r\n\r\n h3 {\r\n font-size: 1.4rem;\r\n }\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Exam.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"lg\":\"6\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.error && !_vm.inLobby)?_c('div',[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.busy)?_c('div',{key:\"part1\"},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"headline\"},[_vm._v(_vm._s(_vm.webinar.title))]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isGraded && !_vm.passed),expression:\"!isGraded && !passed\"}],staticClass:\"blurb mb-2\"},[_vm._v(\"\\n A score of \"+_vm._s(_vm.exam.minScore)+\"% or greater is required to complete this course.\\n \")]),_vm._v(\" \"),_c('b-alert',{attrs:{\"show\":_vm.isGraded && !_vm.passed,\"variant\":\"danger\"}},[_vm._v(\"\\n Your score of \"+_vm._s(_vm.examScore)+\"% is insufficient to pass this course.\\n \"),_c('br'),_vm._v(\"A score of \"+_vm._s(_vm.exam.minScore)+\"% or greater is required.\\n \"),_c('br'),_vm._v(\"Review your answers and re-submit exam.\\n \")]),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.passed,\"variant\":\"success\"}},[_c('h3',[_vm._v(\"Congratulations! You've earned CE credit. Grade: \"+_vm._s(_vm.examScore)+\"%\")]),_vm._v(\" \"),_c('div',[_vm._v(\"For your convenience the graded exam is below.\")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":_vm.gotoClass}},[_vm._v(\"Return to Classroom\")])],1)])],1)],1)],1):_c('div',{key:\"part2\"},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"warning\"}},[_vm._v(\"\\n Please wait while exam is loaded.\\n \")])],1)]),_vm._v(\" \"),_c('b-form',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.busy),expression:\"!busy\"}],on:{\"submit\":function($event){$event.preventDefault();return _vm.submitExam($event)}}},[_c('b-overlay',{attrs:{\"show\":_vm.grading}},[_vm._l((_vm.exam.questions),function(row,index){return _c('b-row',{key:row.examQId,staticClass:\"mt-2\"},[_c('b-col',[_c('b-row',[_c('b-col',{staticClass:\"exam-question\"},[_vm._v(\"\\n Q\"+_vm._s(index+1)+\". \"+_vm._s(row.question)+\"\\n \")])],1),_vm._v(\" \"),_c('b-form-group',{attrs:{\"label\":\"\"}},[(row.option1 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,1)},{'incorrect': _vm.isIncorrect(index,1)}],attrs:{\"value\":\"1\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"a. \"+_vm._s(row.option1))]):_vm._e(),_vm._v(\" \"),(row.option2 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,2)},{'incorrect': _vm.isIncorrect(index,2)}],attrs:{\"value\":\"2\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"b. \"+_vm._s(row.option2))]):_vm._e(),_vm._v(\" \"),(row.option3 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,3)},{'incorrect': _vm.isIncorrect(index,3)}],attrs:{\"value\":\"3\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"c. \"+_vm._s(row.option3))]):_vm._e(),_vm._v(\" \"),(row.option4 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,4)},{'incorrect': _vm.isIncorrect(index,4)}],attrs:{\"value\":\"4\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"d. \"+_vm._s(row.option4))]):_vm._e(),_vm._v(\" \"),(row.option5 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,5)},{'incorrect': _vm.isIncorrect(index,5)}],attrs:{\"value\":\"5\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"e. \"+_vm._s(row.option5))]):_vm._e(),_vm._v(\" \"),(row.option6 !== null)?_c('b-form-radio',{class:[_vm.radioClassArr,{'correct': _vm.isCorrect(index,6)},{'incorrect': _vm.isIncorrect(index,6)}],attrs:{\"value\":\"6\"},model:{value:(_vm.selected[index]),callback:function ($$v) {_vm.$set(_vm.selected, index, $$v)},expression:\"selected[index]\"}},[_vm._v(\"f. \"+_vm._s(row.option6))]):_vm._e()],1)],1)],1)}),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":!_vm.studentData.agdNumber && !_vm.studentData.hideAgdReminder,\"variant\":\"info\"}},[_c('b',[_vm._v(\"ATTENTION AGD MEMBERS:\")]),_vm._v(\"\\n If you would like us to start reporting your CE credits to the Academy of General Dentistry, go to the Account Profile page and enter your AGD member number after you pass this exam.\\n\\n \"),_c('div',{staticClass:\"mt-2\"},[_c('b-form-checkbox',{attrs:{\"id\":\"hide-agd-reminder\",\"name\":\"hide-agd-reminder\",\"value\":\"true\",\"unchecked-value\":\"false\"},on:{\"input\":_vm.checkAgdReminder},model:{value:(_vm.hideAgdReminder),callback:function ($$v) {_vm.hideAgdReminder=$$v},expression:\"hideAgdReminder\"}},[_vm._v(\"\\n Do not show this reminder again.\\n \")])],1)])],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.errorGrading),callback:function ($$v) {_vm.errorGrading=$$v},expression:\"errorGrading\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1),_vm._v(\" \"),_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.grading && !_vm.passed),expression:\"!grading && !passed\"}]},[_c('b-col',[_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"disabled\":_vm.isExamDisabled,\"type\":\"submit\",\"variant\":\"primary\"}},[_vm._v(\"Submit Exam\")]),_vm._v(\" \"),_c('div',[_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.isExamDisabled,\"variant\":\"danger\"}},[_c('b',[_vm._v(\"Exam Limit Reached:\")]),_vm._v(\" You’ve reached the limit of 10 exams per day. Please resume your self-study activity another day.\")])],1)],1)],1),_vm._v(\" \"),_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.grading),expression:\"grading\"}]},[_c('b-col',[_c('b-button',{staticClass:\"mt-2 w-100\",attrs:{\"disabled\":\"\",\"type\":\"button\",\"variant\":\"primary\"}},[_vm._v(\"Grading...\")])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.passed),expression:\"passed\"}]},[_c('b-col',[_c('b-alert',{attrs:{\"show\":_vm.passed,\"variant\":\"success\"}},[_c('h3',[_vm._v(\"Congratulations! You've earned CE credit. Grade: \"+_vm._s(_vm.examScore)+\"%\")]),_vm._v(\" \"),_c('div',[_vm._v(\"Scroll up to see graded exam.\")])])],1)],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.inLobby)?[_c('b-link',{on:{\"click\":function($event){_vm.inLobby = false}}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left-short\",\"scale\":\"2\"}}),_vm._v(\" Back to Classroom Page\")],1),_vm._v(\" \"),_c('lobby-exam',{attrs:{\"classHash\":_vm.classHash,\"podcastHash\":null,\"studentHash\":_vm.studentHash,\"examScore\":_vm.examScore}})]:_vm._e()],2)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ace8570a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Exam.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ace8570a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Exam.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Exam.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Exam.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ace8570a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Exam.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-ace8570a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Exam.vue\n// module id = null\n// module chunks = ","<template>\r\n <h1>{{ msg }}</h1>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\n\r\nvar data = {\r\n msg: \"Done\"\r\n};\r\n\r\nexport default {\r\n name: \"Done\",\r\n data() {\r\n return data;\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Done.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(_vm._s(_vm.msg))])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-47b12e5c\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Done.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-47b12e5c\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Done.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Done.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Done.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-47b12e5c\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Done.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-47b12e5c\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Done.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- https://stackoverflow.com/questions/49072799/vuejs-how-to-pass-an-object-as-prop-and-have-the-component-update-sub-objects -->\r\n <!-- {{searchModel}} -->\r\n\r\n <!-- Search -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Search Results</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- Featured CE Content -->\r\n <div v-if=\"featuredClass || featuredPodcast || featuredBlog\">\r\n <div class=\"div-section-header\">\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Featured Content</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- Featured Class/Podcast/Blog -->\r\n <div class=\"div-section-body\">\r\n <!-- Featured Cat Content -->\r\n <vpfeaturedcontent :fc=featuredClass :fp=featuredPodcast :fb=featuredBlog :fh=featuredHash></vpfeaturedcontent>\r\n </div>\r\n </div>\r\n\r\n <!-- LIVE WEBINARS -->\r\n <div v-if=\"webinars.length !== 0\">\r\n <div class=\"div-section-header\">\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Free Live Dental CE Webinars</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing Next {{webinars.length}} Upcoming</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link v-if=\"webinars.length > 1\" :to=\"{ path: '/upcoming', query: {cid: searchModel.catId, coid: searchModel.compId, q: searchModel.query}}\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"(row,ix) in webinars\" ref=\"rows\" v-bind:key=\"row.classId\" class=\"mt-2 mb-2 pointer\" @click=\"gotoWebinar(ix,row)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <!-- {{row.classId}} -->\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.isReserved\" class=\"text-center reserved\">RESERVED</div>\r\n <div v-if=\"row.isWaiting\" class=\"text-center waitlist\">WAITLIST</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <span class=\"red\">\r\n <br>{{row.releaseDateUTC | prettyDateTime}}\r\n <br>{{row.credits}} CEU ({{row.creditName}})\r\n </span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <!-- ONDEMAND WEBINARS -->\r\n <div v-if=\"classes.length !== 0\">\r\n <div class=\"div-section-header\">\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">On-Demand CE Webinars</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing {{classes.length}} Newest</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link v-if=\"classes.length > 1\" :to=\"{ path: '/ondemand', query: {cid: searchModel.catId, coid: searchModel.compId, q: searchModel.query}}\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"row in classes\" v-bind:key=\"row.classId\" class=\"mt-2 mb-2 pointer\" @click=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}} - {{row.credits}} CEU ({{row.creditName}})\r\n </div>\r\n <div class=\"mt-2\" v-if=\"false\">\r\n <b-button :to=\"{ path: '/classroom/'+row.hash }\">Enter Classroom</b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <!-- PODCASTS -->\r\n <div v-if=\"podcasts.length !== 0\">\r\n <div class=\"div-section-header\">\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental Podcasts</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing {{podcasts.length}} Newest</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link v-if=\"podcasts.length > 1\" :to=\"{ path: '/podcasts', query: {cid: searchModel.catId, coid: searchModel.compId, q: searchModel.query}}\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"row in podcasts\" v-bind:key=\"row.id\" class=\"mt-2 mb-2 pointer\" @click=\"gotoPodcast(row.podcastShowHash,row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.companyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{row.durationSec | prettySeconds}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div> <!-- podcasts -->\r\n\r\n <!-- BLOGPOSTS -->\r\n <div v-if=\"blogPosts.length !== 0\">\r\n <div class=\"div-section-header\">\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental Blog</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\">\r\n <span class=\"txt-section-subtitle\">Showing {{blogPosts.length}} Newest</span>\r\n </b-col>\r\n <b-col cols=\"4\" class=\"text-right\">\r\n <b-link v-if=\"blogPosts.length > 1\" :to=\"{ path: '/blog', query: {cid: searchModel.catId, coid: searchModel.compId, q: searchModel.query}}\">Show All</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <b-row v-for=\"row in blogPosts\" v-bind:key=\"row.id\" class=\"pointer mt-2 pointer\" @click.prevent=\"gotoBlogPost(row.id)\">\r\n <b-col cols=\"12\">\r\n <div class=\"class-title\">\r\n <b-icon icon=\"caret-right-fill\"></b-icon> <span v-if=\"row.featured\" class=\"txt-blog-featured\">Featured</span>{{ row.title }}\r\n <!-- {{row.id}} -->\r\n </div>\r\n <div class=\"class-details\">\r\n {{ row.blurb }}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </div>\r\n </div> <!-- blogPosts -->\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nexport default {\r\n name: \"Search\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n busy: false,\r\n msg: 'Search',\r\n blurb: '',\r\n webinars: [],\r\n classes: [],\r\n podcasts: [],\r\n featuredClass: null,\r\n featuredHash: null, // VpAdFeaturedContent.hash - to log click of featured content\r\n featuredPodcast: null,\r\n featuredBlog: null,\r\n studentData: {status: false},\r\n studentHash: this.$root.getToken() || '',\r\n seats: [], // reserved seats\r\n bannerAds: [],\r\n searchModel: {\r\n path: '/search',\r\n label: 'Search All Content',\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null\r\n }\r\n }\r\n },\r\n props: { },\r\n computed: {\r\n noResults() {\r\n let aout = (this.webinars.length == 0)\r\n && (this.classes.length == 0)\r\n && (this.podcasts.length == 0)\r\n && (this.blogPosts.length == 0)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n gotoWebinar(ix, row) {\r\n if (row.isReserved || row.isWaiting) {\r\n this.$router.push(`/live/${row.hash}`)\r\n }\r\n else {\r\n this.$router.push(`/reserve/${row.hash}`)\r\n }\r\n },\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n gotoPodcast(ps,p) { // podcastShowHash, podcastHash\r\n this.$router.push(`/podcast/${ps}/${p}`)\r\n },\r\n gotoBlogPost(blogId) {\r\n this.$router.push(`/blog-post/${blogId}`)\r\n },\r\n gotoFeaturedClass(hash) {\r\n this.gotoClass(this.featuredClass.hash)\r\n },\r\n gotoFeaturedPodcast(ps,p) { // podcastShowHash, podcastHash\r\n this.gotoPodcast(this.featuredPodcast.podcastShowHash, podcast.hash)\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n this.doSearch()\r\n },\r\n doSearch() {\r\n this.loading = true\r\n // clearing these here puts busy spinner at top of page\r\n this.webinars = []\r\n this.seats = []\r\n this.classes = []\r\n this.podcasts = []\r\n this.blogPosts = []\r\n\r\n this.featuredClass = null\r\n this.featuredPodcast = null\r\n this.featuredBlog = null\r\n this.featuredHash = null\r\n\r\n service\r\n .getSearch(this.studentHash, this.searchModel.catId, this.searchModel.compId, this.searchModel.query)\r\n .then(\r\n (res => {\r\n // console.log(`back from getSearch`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n if (res.webinars.status) {\r\n this.webinars = res.webinars.data\r\n this.seats = res.webinars.seats\r\n // console.log('seats'); console.log(this.seats)\r\n this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = row.hasSeat && !row.isWaiting )\r\n // below works too, but doesn't need seats[]\r\n // this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = this.seats.includes(row.classId) && !row.isWaiting )\r\n }\r\n else {\r\n this.webinars = []\r\n this.seats = []\r\n }\r\n this.classes = (res.classes.status) ? res.classes.data : []\r\n this.podcasts = (res.podcasts.status) ? res.podcasts.data : []\r\n this.blogPosts = (res.blogPosts.status) ? res.blogPosts.data : []\r\n\r\n if (res.featuredContent.status) {\r\n this.featuredClass = (res.featuredContent.featuredClass) ? res.featuredContent.featuredClass.data[0] : null\r\n this.featuredPodcast = (res.featuredContent.featuredPodcast) ? res.featuredContent.featuredPodcast.data[0] : null\r\n this.featuredBlog = (res.featuredContent.featuredBlog) ? res.featuredContent.featuredBlog.data[0] : null\r\n this.featuredHash = res.featuredContent.featuredHash\r\n }\r\n\r\n // TBD this.bannerAds = res.bannerAds.bannerAds\r\n // this.blurb = `All episodes from this series (${this.podcasts.length})`\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n })\r\n }\r\n },\r\n created() {\r\n // this.loading = false; return;\r\n // this.error = this.$root.getClassId() === 0;\r\n // console.log('SEARCH created')\r\n this.doSearch()\r\n },\r\n mounted() {\r\n // console.log('SEARCH mounted')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.txt-title-part1 {\r\n font-weight: bold;\r\n color: #aaa;\r\n font-size: 2rem;\r\n}\r\n.txt-title-part2 {\r\n /* font-weight: bold; */\r\n color: #66C;\r\n font-size: 1.8rem;\r\n}\r\n.txt-subtitle {\r\n font-weight: bold;\r\n font-size: 1.1rem;\r\n line-height: 130%;\r\n}\r\n.txt-section-title {\r\n font-weight: bold;\r\n color: black;\r\n font-size: 1.2rem;\r\n}\r\n.txt-section-subtitle {\r\n font-weight: bold;\r\n color: #66C;\r\n font-size: .9rem;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Search.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Search Results\")])])])],1)],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(_vm.featuredClass || _vm.featuredPodcast || _vm.featuredBlog)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Featured Content\")])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('vpfeaturedcontent',{attrs:{\"fc\":_vm.featuredClass,\"fp\":_vm.featuredPodcast,\"fb\":_vm.featuredBlog,\"fh\":_vm.featuredHash}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.webinars.length !== 0)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Free Live Dental CE Webinars\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing Next \"+_vm._s(_vm.webinars.length)+\" Upcoming\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[(_vm.webinars.length > 1)?_c('b-link',{attrs:{\"to\":{ path: '/upcoming', query: {cid: _vm.searchModel.catId, coid: _vm.searchModel.compId, q: _vm.searchModel.query}}}},[_vm._v(\"Show All\")]):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.webinars),function(row,ix){return _c('b-row',{key:row.classId,ref:\"rows\",refInFor:true,staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoWebinar(ix,row)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.isReserved)?_c('div',{staticClass:\"text-center reserved\"},[_vm._v(\"RESERVED\")]):_vm._e(),_vm._v(\" \"),(row.isWaiting)?_c('div',{staticClass:\"text-center waitlist\"},[_vm._v(\"WAITLIST\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('span',{staticClass:\"red\"},[_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(row.releaseDateUTC))+\"\\n \"),_c('br'),_vm._v(_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")])])])],1)}),1)]):_vm._e(),_vm._v(\" \"),(_vm.classes.length !== 0)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"On-Demand CE Webinars\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing \"+_vm._s(_vm.classes.length)+\" Newest\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[(_vm.classes.length > 1)?_c('b-link',{attrs:{\"to\":{ path: '/ondemand', query: {cid: _vm.searchModel.catId, coid: _vm.searchModel.compId, q: _vm.searchModel.query}}}},[_vm._v(\"Show All\")]):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.classes),function(row){return _c('b-row',{key:row.classId,staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoClass(row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"to\":{ path: '/classroom/'+row.hash }}},[_vm._v(\"Enter Classroom\")])],1):_vm._e()])],1)}),1)]):_vm._e(),_vm._v(\" \"),(_vm.podcasts.length !== 0)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental Podcasts\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing \"+_vm._s(_vm.podcasts.length)+\" Newest\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[(_vm.podcasts.length > 1)?_c('b-link',{attrs:{\"to\":{ path: '/podcasts', query: {cid: _vm.searchModel.catId, coid: _vm.searchModel.compId, q: _vm.searchModel.query}}}},[_vm._v(\"Show All\")]):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.podcasts),function(row){return _c('b-row',{key:row.id,staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoPodcast(row.podcastShowHash,row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.companyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1)])],1)}),1)]):_vm._e(),_vm._v(\" \"),(_vm.blogPosts.length !== 0)?_c('div',[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental Blog\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"Showing \"+_vm._s(_vm.blogPosts.length)+\" Newest\")])]),_vm._v(\" \"),_c('b-col',{staticClass:\"text-right\",attrs:{\"cols\":\"4\"}},[(_vm.blogPosts.length > 1)?_c('b-link',{attrs:{\"to\":{ path: '/blog', query: {cid: _vm.searchModel.catId, coid: _vm.searchModel.compId, q: _vm.searchModel.query}}}},[_vm._v(\"Show All\")]):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.blogPosts),function(row){return _c('b-row',{key:row.id,staticClass:\"pointer mt-2 pointer\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoBlogPost(row.id)}}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"class-title\"},[_c('b-icon',{attrs:{\"icon\":\"caret-right-fill\"}}),_vm._v(\" \"),(row.featured)?_c('span',{staticClass:\"txt-blog-featured\"},[_vm._v(\"Featured\")]):_vm._e(),_vm._v(_vm._s(row.title)+\"\\n \")],1),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.blurb)+\"\\n \")])])],1)}),1)]):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-01f01b4a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Search.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-01f01b4a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Search.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Search.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Search.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-01f01b4a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-01f01b4a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Search.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- LIVE WEBINARS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Upcoming Live CE Webinars</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Available Now: {{totalRows | prettyNumber}} Live Webinars</span>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"isFiltered && !noResults\">\r\n <b-col cols=\"12\" class=\"text-left\">\r\n <b-link @click.prevent=\"searchAllContent\">Show All Related Content »</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- TBD classList component. -->\r\n <div class=\"div-section-body pb-2\" v-if=\"!noResults\">\r\n\r\n <div v-for=\"(row,ix) in webinars\" ref=\"rows\" v-bind:key=\"row.classId\">\r\n\r\n <div v-if=\"showMobileAd(ix)\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <b-row class=\"mt-3 pointer\" @click.prevent=\"gotoWebinar(row)\">\r\n <b-col cols=\"4\">\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.isReserved\" class=\"reserved\">RESERVED</div>\r\n <div v-if=\"row.isWaiting\" class=\"waitlist\">WAITLIST</div>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <span class=\"red\">\r\n <br>{{row.releaseDateUTC | prettyDateTime}}\r\n <br>{{row.credits}} CEU ({{row.creditName}})\r\n </span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"Upcoming\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"Upcoming Webinars\",\r\n blurb: \"Upcoming: 0\",\r\n webinars: [],\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n seats: [], // class Id values of reserved seats\r\n totalRows: 0,\r\n pages: 0,\r\n searchModel: {\r\n path: '/webinars',\r\n label: 'Search Live Webinars',\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null\r\n }\r\n }\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"0\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.webinars.length\r\n },\r\n noResults() {\r\n return (this.webinars.length == 0)\r\n },\r\n isFiltered() { // return true if page is filtered\r\n let aout = (this.searchModel.catId != null)\r\n || (this.searchModel.compId != null)\r\n || (this.searchModel.query != null)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n gotoWebinar(row) {\r\n if (row.isReserved || row.isWaiting) {\r\n this.$router.push(`/live/${row.hash}`)\r\n }\r\n else {\r\n this.$router.push(`/reserve/${row.hash}`)\r\n }\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n this.doLive()\r\n },\r\n searchAllContent() {\r\n this.$router.push({ path: '/search', query: {cid: this.searchModel.catId, coid: this.searchModel.compId, q: this.searchModel.query }})\r\n },\r\n showMobileAd(ix) { // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1\r\n },\r\n getMobileAd(ix) {\r\n let aout = {adId: 0, adUrls: []}\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]]\r\n }\r\n // console.log(aout)\r\n return aout\r\n },\r\n doLive() {\r\n this.loading = true\r\n this.webinars = []\r\n\r\n service\r\n .getUpcoming(this.studentHash, this.searchModel.catId, this.searchModel.compId, this.searchModel.query, this.page)\r\n .then( res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Upcoming Live Webinars: ${res.rowCount}`\r\n this.webinars = res.data\r\n this.totalRows = res.totalRows\r\n this.seats = res.seats\r\n // console.log('seats'); console.log(this.seats)\r\n this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = row.hasSeat && !row.isWaiting )\r\n\r\n this.mobileAds = (res.mobileAds) ? res.mobileAds : {indexStart:0, interval: 0, rows: 0, banners: []}\r\n this.adIndexArr = utils.getAdIndexArray( this.webinars.length, this.mobileAds.banners.length, this.mobileAds.indexStart, this.mobileAds.interval )\r\n\r\n // below works too, but doesn't need seats[]\r\n // this.webinars.forEach( (row,ix) => this.webinars[ix].isReserved = this.seats.includes(row.classId) && !row.isWaiting )\r\n } else {\r\n this.blurb = \"No upcoming webinars.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.doLive()\r\n },\r\n beforeDestroy () {\r\n this.loading = true\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Upcoming.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Upcoming Live CE Webinars\")])])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" Live Webinars\")])])],1):_vm._e(),_vm._v(\" \"),(_vm.isFiltered && !_vm.noResults)?_c('b-row',[_c('b-col',{staticClass:\"text-left\",attrs:{\"cols\":\"12\"}},[_c('b-link',{on:{\"click\":function($event){$event.preventDefault();return _vm.searchAllContent($event)}}},[_vm._v(\"Show All Related Content »\")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body pb-2\"},_vm._l((_vm.webinars),function(row,ix){return _c('div',{key:row.classId,ref:\"rows\",refInFor:true},[(_vm.showMobileAd(ix))?_c('div',[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 pointer\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoWebinar(row)}}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.isReserved)?_c('div',{staticClass:\"reserved\"},[_vm._v(\"RESERVED\")]):_vm._e(),_vm._v(\" \"),(row.isWaiting)?_c('div',{staticClass:\"waitlist\"},[_vm._v(\"WAITLIST\")]):_vm._e()],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('span',{staticClass:\"red\"},[_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(row.releaseDateUTC))+\"\\n \"),_c('br'),_vm._v(_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")])])])],1)],1)}),0):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6286fe50\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Upcoming.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6286fe50\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Upcoming.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Upcoming.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Upcoming.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6286fe50\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Upcoming.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6286fe50\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Upcoming.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- ON-DEMAND -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">On-Demand CE Webinars</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Available Now: {{totalRows | prettyNumber}} On-Demand Webinars</span>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"isFiltered && !noResults\">\r\n <b-col cols=\"12\" class=\"text-left\">\r\n <b-link @click.prevent=\"searchAllContent\">Show All Related Content »</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- TBD classList component. -->\r\n <div class=\"div-section-body\" v-if=\"!noResults\">\r\n\r\n <div v-if=\"this.curPage === 1 && featuredClass !== null\">\r\n <!-- Featured Cat Content -->\r\n <vpfeaturedcontent :fc=featuredClass :fp=null :fb=null :fh=featuredHash></vpfeaturedcontent>\r\n </div>\r\n\r\n <div v-for=\"(row,ix) in classes\" v-bind:key=\"row.classId\">\r\n <div v-if=\"showMobileAd(ix)\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <div v-if=\"featuredClass === null || featuredClass.classId !== row.classId\">\r\n <b-row class=\"mt-3 pointer\" @click.prevent=\"gotoClass(row.slug)\">\r\n <b-col cols=\"4\">\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}} - {{row.credits}} CEU ({{row.creditName}})\r\n </div>\r\n <div class=\"mt-2\" v-if=\"false\">\r\n <b-button :to=\"{ path: constants.PATHS.ON_DEMAND_BASE + '/' + row.slug }\">Enter Classroom</b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nexport default {\r\n name: \"Ondemand\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n busy: false,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"On-Demand CE\",\r\n blurb: \"Classes: 0\",\r\n classes: [],\r\n featuredClass: null,\r\n featuredHash: null,\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0, // computed # of pages\r\n curPage: 1,\r\n searchModel: {\r\n path: '/ondemand',\r\n label: 'Search On-Demand Webinars',\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null\r\n }\r\n }\r\n },\r\n props: {\r\n page: {\r\n type: String,\r\n required: false,\r\n default: '1'\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n },\r\n noResults() {\r\n return (this.classes.length == 0)\r\n },\r\n isFiltered() { // return true if page is filtered\r\n let aout = (this.searchModel.catId != null)\r\n || (this.searchModel.compId != null)\r\n || (this.searchModel.query != null)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n gotoClass(hash) {\r\n this.$router.push(`${constants.PATHS.ON_DEMAND_BASE}/${hash}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doOndemand()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/ondemand/${pageNum}`\r\n link += encodeURI(`?cid=${utils.ifNull(this.searchModel.catId,'')}&coid=${utils.ifNull(this.searchModel.compId,'')}&q=${utils.ifNull(this.searchModel.query,'')}`)\r\n // console.log(`pageNum: ${pageNum} link: ${link}`)\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n this.doOndemand()\r\n },\r\n searchAllContent() {\r\n this.$router.push({ path: '/search', query: {cid: this.searchModel.catId, coid: this.searchModel.compId, q: this.searchModel.query }})\r\n },\r\n showMobileAd(ix) { // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1\r\n },\r\n getMobileAd(ix) {\r\n let aout = {adId: 0, adUrls: []}\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]]\r\n }\r\n // console.log(aout)\r\n return aout\r\n },\r\n doOndemand() {\r\n this.loading = true\r\n this.classes = []\r\n\r\n this.featuredClass = null\r\n this.featuredHash = null\r\n\r\n service\r\n .getOndemand(this.studentHash, this.searchModel.catId, this.searchModel.compId, this.searchModel.query, this.curPage-1)\r\n .then( res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Classes: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n\r\n this.mobileAds = (res.mobileAds) ? res.mobileAds : {indexStart:0, interval: 0, rows: 0, banners: []}\r\n this.adIndexArr = utils.getAdIndexArray( this.classes.length, this.mobileAds.banners.length, this.mobileAds.indexStart, this.mobileAds.interval )\r\n\r\n // this.featuredClass = (res.featuredClass) ? res.featuredClass.data[0] : null\r\n if (res.featuredContent.status) {\r\n this.featuredClass = (res.featuredContent.featuredClass) ? res.featuredContent.featuredClass.data[0] : null\r\n this.featuredHash = res.featuredContent.featuredHash\r\n }\r\n }\r\n else {\r\n this.blurb = \"No classes found.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n // this.setCurPage()\r\n this.doOndemand()\r\n },\r\n beforeDestroy() {\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Ondemand.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"On-Demand CE Webinars\")])])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" On-Demand Webinars\")])])],1):_vm._e(),_vm._v(\" \"),(_vm.isFiltered && !_vm.noResults)?_c('b-row',[_c('b-col',{staticClass:\"text-left\",attrs:{\"cols\":\"12\"}},[_c('b-link',{on:{\"click\":function($event){$event.preventDefault();return _vm.searchAllContent($event)}}},[_vm._v(\"Show All Related Content »\")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body\"},[(this.curPage === 1 && _vm.featuredClass !== null)?_c('div',[_c('vpfeaturedcontent',{attrs:{\"fc\":_vm.featuredClass,\"fp\":null,\"fb\":null,\"fh\":_vm.featuredHash}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.classes),function(row,ix){return _c('div',{key:row.classId},[(_vm.showMobileAd(ix))?_c('div',[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),(_vm.featuredClass === null || _vm.featuredClass.classId !== row.classId)?_c('div',[_c('b-row',{staticClass:\"mt-3 pointer\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoClass(row.slug)}}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"to\":{ path: _vm.constants.PATHS.ON_DEMAND_BASE + '/' + row.slug }}},[_vm._v(\"Enter Classroom\")])],1):_vm._e()])],1)],1):_vm._e()])}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5f11f41a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Ondemand.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5f11f41a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Ondemand.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Ondemand.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Ondemand.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f11f41a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Ondemand.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5f11f41a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Ondemand.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- PODCASTS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental Podcast Episodes</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Available Now: {{totalRows | prettyNumber}} Dental Podcast Episodes</span>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"isFiltered && !noResults\">\r\n <b-col cols=\"12\" class=\"text-left\">\r\n <b-link @click.prevent=\"searchAllContent\">Show All Related Content »</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- TBD podcastList component. -->\r\n <div class=\"div-section-body\" v-if=\"!noResults\">\r\n\r\n <div v-if=\"this.curPage === 1 && featuredPodcast !== null\">\r\n <!-- Featured Cat Content -->\r\n <vpfeaturedcontent :fc=null :fp=featuredPodcast :fb=null :fh=featuredHash></vpfeaturedcontent>\r\n </div>\r\n\r\n <div v-for=\"(row,ix) in podcasts\" v-bind:key=\"row.id\">\r\n <div v-if=\"showMobileAd(ix)\" class=\"mt-2\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <div v-if=\"featuredPodcast === null || featuredPodcast.id !== row.id\">\r\n <b-row class=\"mt-3 pointer\" @click.prevent=\"gotoPodcast(row.podcastShowHash,row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"row.examTaken\" class=\"text-center completed\">COMPLETED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.title}} <!-- {{row.id}} --></div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.companyName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{row.durationSec | prettySeconds}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"Podcasts\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"Podcasts\",\r\n blurb: \"Podcasts: 0\",\r\n podcasts: [],\r\n featuredPodcast: null,\r\n featuredHash: null,\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n searchModel: {\r\n path: '/podcasts',\r\n label: 'Search Podcasts',\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null\r\n }\r\n }\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"1\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.podcasts.length\r\n },\r\n noResults() {\r\n return (this.podcasts.length == 0)\r\n },\r\n isFiltered() { // return true if page is filtered\r\n let aout = (this.searchModel.catId != null)\r\n || (this.searchModel.compId != null)\r\n || (this.searchModel.query != null)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n gotoPodcast(ps,p) { // podcastShowHash, podcastHash\r\n this.$router.push(`/podcast/${ps}/${p}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doPodcasts()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/podcasts/${pageNum}`\r\n link += encodeURI(`?cid=${this.searchModel.catId}&coid=${this.searchModel.compId}&q=${this.searchModel.query}`)\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n this.doPodcasts()\r\n },\r\n searchAllContent() {\r\n this.$router.push({ path: '/search', query: {cid: this.searchModel.catId, coid: this.searchModel.compId, q: this.searchModel.query }})\r\n },\r\n showMobileAd(ix) { // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1\r\n },\r\n getMobileAd(ix) {\r\n let aout = {adId: 0, adUrls: []}\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]]\r\n }\r\n // console.log(aout)\r\n return aout\r\n },\r\n doPodcasts() {\r\n this.loading = true\r\n this.podcasts = []\r\n\r\n this.featuredPodcast = null\r\n this.featuredHash = null\r\n\r\n service\r\n .getPodcasts(this.studentHash, this.searchModel.catId, this.searchModel.compId, this.searchModel.query, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Podcasts: ${res.rowCount}`\r\n this.podcasts = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n\r\n this.mobileAds = (res.mobileAds) ? res.mobileAds : {indexStart:0, interval: 0, rows: 0, banners: []}\r\n this.adIndexArr = utils.getAdIndexArray( this.podcasts.length, this.mobileAds.banners.length, this.mobileAds.indexStart, this.mobileAds.interval )\r\n // this.featuredPodcast = (res.featuredPodcast) ? res.featuredPodcast.data[0] : null\r\n if (res.featuredContent.status) {\r\n this.featuredPodcast = (res.featuredContent.featuredPodcast) ? res.featuredContent.featuredPodcast.data[0] : null\r\n this.featuredHash = res.featuredContent.featuredHash\r\n }\r\n } else {\r\n this.blurb = \"No podcasts found.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.setCurPage()\r\n this.doPodcasts()\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Podcasts.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental Podcast Episodes\")])])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" Dental Podcast Episodes\")])])],1):_vm._e(),_vm._v(\" \"),(_vm.isFiltered && !_vm.noResults)?_c('b-row',[_c('b-col',{staticClass:\"text-left\",attrs:{\"cols\":\"12\"}},[_c('b-link',{on:{\"click\":function($event){$event.preventDefault();return _vm.searchAllContent($event)}}},[_vm._v(\"Show All Related Content »\")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body\"},[(this.curPage === 1 && _vm.featuredPodcast !== null)?_c('div',[_c('vpfeaturedcontent',{attrs:{\"fc\":null,\"fp\":_vm.featuredPodcast,\"fb\":null,\"fh\":_vm.featuredHash}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.podcasts),function(row,ix){return _c('div',{key:row.id},[(_vm.showMobileAd(ix))?_c('div',{staticClass:\"mt-2\"},[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),(_vm.featuredPodcast === null || _vm.featuredPodcast.id !== row.id)?_c('div',[_c('b-row',{staticClass:\"mt-3 pointer\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoPodcast(row.podcastShowHash,row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(row.examTaken)?_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"COMPLETED\")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title)+\" \")]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.companyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1)])],1)],1):_vm._e()])}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e95cd78a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Podcasts.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e95cd78a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Podcasts.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Podcasts.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Podcasts.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e95cd78a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Podcasts.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-e95cd78a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Podcasts.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- BLOG POSTS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental Blog</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <searchbar\r\n v-model=\"searchModel\"\r\n @remove-filter=\"removeFilter\"\r\n ></searchbar>\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">\r\n Available Now: {{ totalRows | prettyNumber }} Dental Blog Posts\r\n </span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <div class=\"div-section-body mb-2\" v-if=\"!noResults\">\r\n <div v-for=\"(row, ix) in blogPosts\" v-bind:key=\"row.slug\">\r\n <div v-if=\"showMobileAd(ix)\" class=\"mt-2\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <b-row class=\"pointer mt-2\" @click.prevent=\"gotoBlogPost(row.slug)\">\r\n <b-col cols=\"12\">\r\n <div class=\"class-title\">\r\n <b-icon icon=\"caret-right-fill\"></b-icon> <span v-if=\"row.featured\" class=\"txt-blog-featured\">Featured</span>{{ row.title }}\r\n <!-- {{row.slug}} -->\r\n </div>\r\n <div class=\"class-details\">\r\n {{ row.blurb }}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination\r\n align=\"center\"\r\n v-model=\"curPage\"\r\n :total-rows=\"totalRows\"\r\n :per-page=\"pageSize\"\r\n @change=\"pageChange\"\r\n @input=\"pageInput\"\r\n ></b-pagination>\r\n </b-col>\r\n </b-row>\r\n <br>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n\"use strict\"\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"Blog\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"Podcasts\",\r\n blurb: \"Podcasts: 0\",\r\n blogPosts: [],\r\n // featuredBLog: null,\r\n // featuredHash: null,\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n searchModel: {\r\n path: \"/blog\",\r\n label: \"Search Dental Blog\",\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null,\r\n },\r\n };\r\n },\r\n props: {\r\n page: {\r\n type: String,\r\n required: false,\r\n default: \"1\",\r\n },\r\n },\r\n computed: {\r\n rows() {\r\n return this.blogPosts.length\r\n },\r\n noResults() {\r\n return this.blogPosts.length == 0\r\n },\r\n isFiltered() {\r\n // return true if page is filtered\r\n let aout =\r\n this.searchModel.catId != null ||\r\n this.searchModel.compId != null ||\r\n this.searchModel.query != null\r\n return aout\r\n },\r\n },\r\n methods: {\r\n gotoBlogPost(slug) {\r\n this.$router.push(`/dental-blog/${slug}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doPodcasts()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/blog/${pageNum}`\r\n link += encodeURI(\r\n `?cid=${this.searchModel.catId}&coid=${this.searchModel.compId}&q=${this.searchModel.query}`\r\n )\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page);\r\n if (this.curPage <= 0) this.curPage = 1;\r\n } catch (e) {\r\n this.curPage = 1;\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null;\r\n this.searchModel.compId = null;\r\n this.searchModel.query = null;\r\n this.doPodcasts();\r\n },\r\n searchAllContent() {\r\n this.$router.push({\r\n path: \"/search\",\r\n query: {\r\n cid: this.searchModel.catId,\r\n coid: this.searchModel.compId,\r\n q: this.searchModel.query,\r\n },\r\n });\r\n },\r\n showMobileAd(ix) {\r\n // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1;\r\n },\r\n getMobileAd(ix) {\r\n let aout = { adId: 0, adUrls: [] };\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]];\r\n }\r\n // console.log(aout)\r\n return aout;\r\n },\r\n doBlogPosts() {\r\n this.loading = true;\r\n this.blogPosts = [];\r\n\r\n // this.featuredBlogPost = null\r\n // this.featuredHash = null\r\n\r\n service\r\n .getBlogPosts(\r\n this.studentHash,\r\n this.searchModel.catId,\r\n this.searchModel.compId,\r\n this.searchModel.query,\r\n this.curPage - 1\r\n )\r\n .then((res) => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Posts: ${res.rowCount}`;\r\n this.blogPosts = res.data;\r\n this.totalRows = res.totalRows;\r\n this.pageSize = res.pageSize;\r\n this.pages = res.pageSize\r\n ? Math.ceil(this.totalRows / res.pageSize)\r\n : 0;\r\n if (this.curPage > this.pages) this.curPage = this.pages;\r\n\r\n this.mobileAds = res.mobileAds\r\n ? res.mobileAds\r\n : { indexStart: 0, interval: 0, rows: 0, banners: [] };\r\n this.adIndexArr = utils.getAdIndexArray(\r\n this.blogPosts.length,\r\n this.mobileAds.banners.length,\r\n this.mobileAds.indexStart,\r\n this.mobileAds.interval\r\n );\r\n } else {\r\n this.blurb = \"No blog posts found.\";\r\n }\r\n })\r\n .finally(() => (this.loading = false))\r\n .catch((e) => console.log(e));\r\n },\r\n },\r\n created() {\r\n this.setCurPage();\r\n this.doBlogPosts();\r\n },\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.text-featured {\r\n position: relative; /* these 2 lines nudge text center up */\r\n top: -2px;\r\n padding: 2px 3px;\r\n margin-right: 4px;\r\n font-weight:normal;\r\n font-size:9px;\r\n background-color:#2165af;\r\n color:white;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Blog.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental Blog\")])])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"\\n Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" Dental Blog Posts\\n \")])])],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body mb-2\"},[_vm._l((_vm.blogPosts),function(row,ix){return _c('div',{key:row.slug},[(_vm.showMobileAd(ix))?_c('div',{staticClass:\"mt-2\"},[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),_c('b-row',{staticClass:\"pointer mt-2\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoBlogPost(row.slug)}}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"class-title\"},[_c('b-icon',{attrs:{\"icon\":\"caret-right-fill\"}}),_vm._v(\" \"),(row.featured)?_c('span',{staticClass:\"txt-blog-featured\"},[_vm._v(\"Featured\")]):_vm._e(),_vm._v(_vm._s(row.title)+\"\\n \")],1),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.blurb)+\"\\n \")])])],1)],1)}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e(),_vm._v(\" \"),_c('br')],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0c43dfe8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Blog.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0c43dfe8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Blog.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Blog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Blog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0c43dfe8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Blog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0c43dfe8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Blog.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- TUTORIALS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Product Training</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <searchbar v-model=\"searchModel\" @remove-filter=\"removeFilter\"></searchbar>\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Available Now: {{totalRows | prettyNumber}} Tutorials</span>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"isFiltered && !noResults\">\r\n <b-col cols=\"12\" class=\"text-left\">\r\n <b-link @click.prevent=\"searchAllContent\">Show All Related Content »</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- TBD classList component. -->\r\n <div class=\"div-section-body\" v-if=\"!noResults\">\r\n\r\n <div v-for=\"(row,ix) in classes\" v-bind:key=\"row.classId\">\r\n <div v-if=\"showMobileAd(ix)\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <b-row class=\"mt-3 pointer\" @click=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\">\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n Company: {{row.sponsorCompanyName}}\r\n <br>Release date: {{row.releaseDateUTC | prettyDate}}\r\n </div>\r\n <div class=\"mt-2\" v-if=\"false\">\r\n <b-button :to=\"{ path: '/classroom/'+row.hash }\">Enter Classroom</b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"Tutorials\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"Tutorials\",\r\n blurb: \"Tutorials: 0\",\r\n classes: [],\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n searchModel: {\r\n path: '/tutorials',\r\n label: 'Search Product Training',\r\n catId: this.$route.query.cid || null,\r\n compId: this.$route.query.coid || null,\r\n query: this.$route.query.q || null\r\n }\r\n }\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"1\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n },\r\n noResults() {\r\n return (this.classes.length == 0)\r\n },\r\n isFiltered() { // return true if page is filtered\r\n let aout = (this.searchModel.catId != null)\r\n || (this.searchModel.compId != null)\r\n || (this.searchModel.query != null)\r\n return aout\r\n }\r\n },\r\n methods: {\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doTutorials()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/tutorials/${pageNum}`\r\n link += encodeURI(`?cid=${this.searchModel.catId}&coid=${this.searchModel.compId}&q=${this.searchModel.query}`)\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n removeFilter() {\r\n this.searchModel.catId = null\r\n this.searchModel.compId = null\r\n this.searchModel.query = null\r\n this.doTutorial()\r\n },\r\n searchAllContent() {\r\n this.$router.push({ path: '/search', query: {cid: this.searchModel.catId, coid: this.searchModel.compId, q: this.searchModel.query }})\r\n },\r\n showMobileAd(ix) { // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1\r\n },\r\n getMobileAd(ix) {\r\n let aout = {adId: 0, adUrls: []}\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]]\r\n }\r\n return aout\r\n },\r\n doTutorials() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getTutorials(this.studentHash, this.searchModel.catId, this.searchModel.compId, this.searchModel.query, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Tutorials: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n\r\n this.mobileAds = (res.mobileAds) ? res.mobileAds : {indexStart:0, interval: 0, rows: 0, banners: []}\r\n this.adIndexArr = utils.getAdIndexArray( this.classes.length, this.mobileAds.banners.length, this.mobileAds.indexStart, this.mobileAds.interval )\r\n } else {\r\n this.blurb = \"No tutorials found.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.doTutorials()\r\n }\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Tutorials.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Product Training\")])])])],1),_vm._v(\" \"),_c('searchbar',{on:{\"remove-filter\":_vm.removeFilter},model:{value:(_vm.searchModel),callback:function ($$v) {_vm.searchModel=$$v},expression:\"searchModel\"}}),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" Tutorials\")])])],1):_vm._e(),_vm._v(\" \"),(_vm.isFiltered && !_vm.noResults)?_c('b-row',[_c('b-col',{staticClass:\"text-left\",attrs:{\"cols\":\"12\"}},[_c('b-link',{on:{\"click\":function($event){$event.preventDefault();return _vm.searchAllContent($event)}}},[_vm._v(\"Show All Related Content »\")])],1)],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body\"},[_vm._l((_vm.classes),function(row,ix){return _c('div',{key:row.classId},[(_vm.showMobileAd(ix))?_c('div',[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 pointer\",on:{\"click\":function($event){return _vm.gotoClass(row.hash)}}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Company: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(\"Release date: \"+_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))+\"\\n \")]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"to\":{ path: '/classroom/'+row.hash }}},[_vm._v(\"Enter Classroom\")])],1):_vm._e()])],1)],1)}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0d56efe1\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Tutorials.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0d56efe1\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Tutorials.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Tutorials.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Tutorials.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0d56efe1\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Tutorials.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0d56efe1\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Tutorials.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- DENTAL EBOOKS -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Dental eBooks</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!noResults\">\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Available Now: {{totalRows | prettyNumber}} eBooks</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-alert v-model=\"noResults\" class=\"mt-3\" variant=\"info\">\r\n No results found for this search.\r\n </b-alert>\r\n\r\n <!-- TBD bookList component. -->\r\n <div class=\"div-section-body\" v-if=\"!noResults\">\r\n\r\n <div v-for=\"(row,ix) in books\" v-bind:key=\"ix\">\r\n <b-row class=\"mt-3\">\r\n <b-col cols=\"4\">\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.thumbnail\" />\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"div-book-title\">{{row.title}}</div>\r\n <div class=\"div-book-subtitle\">{{row.subtitle}}</div>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mb-4\">\r\n <b-col cols=\"12\">\r\n <div class=\"div-book-blurb\">\r\n {{row.blurbLib}}\r\n </div>\r\n <div class=\"mt-1\" style=\"color: red;\">\r\n <span v-if=\"isLoggedIn\">Free</span>\r\n <span v-if=\"!isLoggedIn\">Free (must be logged in)</span>\r\n </div>\r\n <div class=\"mt-1\">\r\n <b-button type=\"button\" variant=\"danger\" @click.stop.prevent=\"submit(ix)\">\r\n <span class=\"text-nowrap\"> {{ row.buttonText || \"Get eBook\" }} </span>\r\n <span style=\"font-size:60%;vertical-align: middle;\"> ►</span>\r\n </b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <hr style=\"width:90%;\">\r\n </div>\r\n\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"Ebooks\",\r\n data() {\r\n return {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: this.$root.getToken(),\r\n msg: \"Dental eBooks\",\r\n blurb: \"eBooks: 0\",\r\n books: [],\r\n totalRows: 0\r\n }\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"1\"\r\n }\r\n },\r\n computed: {\r\n isLoggedIn() {\r\n return this.$root.hasToken()\r\n },\r\n rows () {\r\n return this.books.length\r\n },\r\n noResults() {\r\n return (this.books.length == 0)\r\n }\r\n },\r\n methods: {\r\n submit(ix) {\r\n if (!this.isLoggedIn) {\r\n this.$router.push(`/login?rurl=/ebooks`)\r\n return\r\n }\r\n\r\n let book = this.books[ix]\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n service\r\n .saveBookResponse({s: this.studentHash, h: book.hash})\r\n .then( res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status) {\r\n console.log('success')\r\n this.error = false\r\n this.success = true\r\n } else {\r\n this.success = false\r\n this.errorMsg = res.errorMsg || 'System Error from Save Book Response.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n window.location = book.pdf\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true\r\n })\r\n },\r\n submitNewTab(ix) {\r\n if (!this.isLoggedIn) {\r\n this.$router.push(`/login?rurl=/ebooks`)\r\n return\r\n }\r\n\r\n let book = this.books[ix]\r\n\r\n this.error = false\r\n this.success = false\r\n this.busy = true\r\n service\r\n .saveBookResponse({s: this.studentHash, h: book.hash})\r\n .then( res => {\r\n if (this.debug) console.log(res.data)\r\n if (res.status) {\r\n console.log('success')\r\n this.error = false\r\n this.success = true\r\n } else {\r\n this.success = false\r\n this.errorMsg = res.errorMsg || 'System Error from Save Book Response.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n let win = window.open(book.pdf, '_blank')\r\n if (win) win.focus()\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true\r\n })\r\n },\r\n doEbooks() {\r\n this.loading = true\r\n this.books = []\r\n service\r\n .getBooks(this.studentHash)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Dental eBooks: ${res.rowCount}`\r\n this.books = res.data\r\n this.totalRows = res.rowCount\r\n } else {\r\n this.blurb = \"No ebooks found.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.doEbooks()\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n .div-book-title {\r\n color: #0d78c0;\r\n font-size: 1.08rem;\r\n font-weight: bold;\r\n line-height: 125%;\r\n }\r\n .div-book-subtitle {\r\n color: #000;\r\n font-size: .9rem;\r\n font-weight: bold;\r\n line-height: 125%;\r\n margin-top: 5px;\r\n }\r\n .div-book-blurb {\r\n color: #000;\r\n margin-top: 10px;\r\n }\r\n .btn-view-ebook {\r\n min-width: 75px;\r\n height: 28px;\r\n border: 0px;\r\n margin: 0px;\r\n background-color: #2165af;\r\n color: #fff;\r\n font-weight: 500;\r\n cursor: pointer;\r\n }\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Ebooks.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Dental eBooks\")])])])],1),_vm._v(\" \"),(!_vm.noResults)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Available Now: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows))+\" eBooks\")])])],1):_vm._e()],1),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-3\",attrs:{\"variant\":\"info\"},model:{value:(_vm.noResults),callback:function ($$v) {_vm.noResults=$$v},expression:\"noResults\"}},[_vm._v(\"\\n No results found for this search.\\n \")]),_vm._v(\" \"),(!_vm.noResults)?_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.books),function(row,ix){return _c('div',{key:ix},[_c('b-row',{staticClass:\"mt-3\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.thumbnail}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"div-book-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"div-book-subtitle\"},[_vm._v(_vm._s(row.subtitle))])])],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"div-book-blurb\"},[_vm._v(\"\\n \"+_vm._s(row.blurbLib)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"mt-1\",staticStyle:{\"color\":\"red\"}},[(_vm.isLoggedIn)?_c('span',[_vm._v(\"Free\")]):_vm._e(),_vm._v(\" \"),(!_vm.isLoggedIn)?_c('span',[_vm._v(\"Free (must be logged in)\")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"mt-1\"},[_c('b-button',{attrs:{\"type\":\"button\",\"variant\":\"danger\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit(ix)}}},[_c('span',{staticClass:\"text-nowrap\"},[_vm._v(\" \"+_vm._s(row.buttonText || \"Get eBook\")+\" \")]),_vm._v(\" \"),_c('span',{staticStyle:{\"font-size\":\"60%\",\"vertical-align\":\"middle\"}},[_vm._v(\" ►\")])])],1)])],1),_vm._v(\" \"),_c('hr',{staticStyle:{\"width\":\"90%\"}})],1)}),0):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-516a4cf5\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Ebooks.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-516a4cf5\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Ebooks.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Ebooks.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Ebooks.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-516a4cf5\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Ebooks.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-516a4cf5\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Ebooks.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- RESERVED -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Reserved Seats</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Reserved: {{webinars.length}} Live Webinars</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- TBD classList component. -->\r\n <div class=\"div-section-body\">\r\n <b-row v-if=\"rows === 0\">\r\n <b-col class=\"pt-3 pb-3 pl-4 pr-4\">\r\n No seats reserved. Click button below to see upcoming webinars.\r\n <div class=\"mt-2 mb-2 text-center\">\r\n <b-button to=\"/upcoming\">Upcoming Live CE Webinars</b-button>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-row v-for=\"row in webinars\" v-bind:key=\"row.classId\" @click.stop.prevent=\"gotoWebinar(row)\" class=\"mt-3 mb-3 pointer\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div v-if=\"!row.isWaiting\" class=\"text-center reserved\">RESERVED</div>\r\n <div v-if=\"row.isWaiting\" class=\"text-center waitlist\">WAITLIST</div>\r\n <b-button v-if=\"!row.isWaiting\" @click.stop.prevent=\"gotoCancel(row.cancelCode)\" variant=\"warning\" size=\"sm\" class=\"mt-2 text-center\" style=\"z-index:100\">\r\n Cancel\r\n </b-button>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <span class=\"red\">\r\n <br>{{row.releaseDateUTC | prettyDateTime}}\r\n <br>{{row.credits}} CEU ({{row.creditName}})\r\n </span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: 'Reserved Seats',\r\n blurb: '',\r\n webinars: [],\r\n studentHash: '',\r\n bannerAds: []\r\n};\r\n\r\nexport default {\r\n name: \"Seats\",\r\n data() {\r\n return data;\r\n },\r\n props: { },\r\n computed: {\r\n rows() {\r\n return this.webinars.length\r\n }\r\n },\r\n methods: {\r\n gotoWebinar(row) {\r\n if (row.hasSeat || row.isWaiting) {\r\n this.$router.push(`/live/${row.hash}`)\r\n }\r\n else { console.log(row) }\r\n },\r\n gotoCancel(cancelCode) {\r\n this.$router.push(`/cancel-seat/${cancelCode}`)\r\n },\r\n goBack() {\r\n this.$router.go(-1);\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken();\r\n service\r\n .getSeats(this.studentHash)\r\n .then( res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Reserved Seats: ${res.rowCount}`\r\n this.webinars = res.data\r\n } else {\r\n this.blurb = \"No reserved seats.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n },\r\n mounted() { console.log('mounted') },\r\n beforeDestroy() {\r\n console.log('destroy')\r\n this.loading = true\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Seats.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Reserved Seats\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Reserved: \"+_vm._s(_vm.webinars.length)+\" Live Webinars\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[(_vm.rows === 0)?_c('b-row',[_c('b-col',{staticClass:\"pt-3 pb-3 pl-4 pr-4\"},[_vm._v(\"\\n No seats reserved. Click button below to see upcoming webinars.\\n \"),_c('div',{staticClass:\"mt-2 mb-2 text-center\"},[_c('b-button',{attrs:{\"to\":\"/upcoming\"}},[_vm._v(\"Upcoming Live CE Webinars\")])],1)])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.webinars),function(row){return _c('b-row',{key:row.classId,staticClass:\"mt-3 mb-3 pointer\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoWebinar(row)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),(!row.isWaiting)?_c('div',{staticClass:\"text-center reserved\"},[_vm._v(\"RESERVED\")]):_vm._e(),_vm._v(\" \"),(row.isWaiting)?_c('div',{staticClass:\"text-center waitlist\"},[_vm._v(\"WAITLIST\")]):_vm._e(),_vm._v(\" \"),(!row.isWaiting)?_c('b-button',{staticClass:\"mt-2 text-center\",staticStyle:{\"z-index\":\"100\"},attrs:{\"variant\":\"warning\",\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoCancel(row.cancelCode)}}},[_vm._v(\"\\n Cancel\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('span',{staticClass:\"red\"},[_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(row.releaseDateUTC))+\"\\n \"),_c('br'),_vm._v(_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")])])])],1)})],2)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-29bfec14\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Seats.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-29bfec14\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Seats.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Seats.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Seats.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-29bfec14\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Seats.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-29bfec14\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Seats.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- RESERVED -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Watch Later</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Classes: {{classes.length}}</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- TBD classList component. -->\r\n <div class=\"div-section-body\">\r\n <b-row v-if=\"rows === 0\">\r\n <b-col class=\"pt-3 pb-3 pl-4 pr-4\">\r\n Your watch later list is empty. Add to this list by tapping the + button after selecting a webinar or product video.\r\n </b-col>\r\n </b-row>\r\n <b-row v-for=\"(row) in classes\" ref=\"rows\" v-bind:key=\"row.classId\" class=\"mt-3 mb-3 pointer\" @click.stop.prevent=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\">\r\n <!-- {{row.classId}} -->\r\n <div class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <queuebutton :c=\"row.hash\" :s=\"studentHash\" q=\"1\" @remove-class=\"removeClass\"></queuebutton>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div v-if=\"row.credits !== 0\" class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}} - {{row.credits}} CEU ({{row.creditName}})\r\n </div>\r\n <div v-if=\"row.credits === 0\" class=\"class-details\">\r\n {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n busy: false,\r\n studentHash: '',\r\n msg: \"Watch Later\",\r\n blurb: \"\",\r\n classes: [],\r\n removed: [],\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n bannerAds: []\r\n};\r\n\r\nexport default {\r\n name: \"Queue\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"1\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n }\r\n },\r\n methods: {\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doQueue()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n return pageNum === 1 ? '/queue' : `/queue/${pageNum-1}`\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n removeClass(hash) {\r\n this.classes = this.classes.filter( row => row.hash != hash )\r\n this.totalRows = this.classes.length // calibrate\r\n },\r\n doQueue() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getQueue(this.studentHash, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Queue: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n\r\n } else {\r\n this.blurb = \"Training queue is empty.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken();\r\n this.doQueue()\r\n },\r\n mounted() {\r\n // console.log('mounted')\r\n },\r\n beforeDestroy() {\r\n // console.log('destroy')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Queue.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Watch Later\")])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Classes: \"+_vm._s(_vm.classes.length))])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[(_vm.rows === 0)?_c('b-row',[_c('b-col',{staticClass:\"pt-3 pb-3 pl-4 pr-4\"},[_vm._v(\"\\n Your watch later list is empty. Add to this list by tapping the + button after selecting a webinar or product video.\\n \")])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.classes),function(row){return _c('b-row',{key:row.classId,ref:\"rows\",refInFor:true,staticClass:\"mt-3 mb-3 pointer\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoClass(row.hash)}}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('div',{staticClass:\"text-center\"},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),_c('queuebutton',{attrs:{\"c\":row.hash,\"s\":_vm.studentHash,\"q\":\"1\"},on:{\"remove-class\":_vm.removeClass}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),(row.credits !== 0)?_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(row.creditName)+\")\\n \")]):_vm._e(),_vm._v(\" \"),(row.credits === 0)?_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\"\\n \")]):_vm._e()])],1)}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-94b9dafc\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Queue.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-94b9dafc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Queue.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Queue.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Queue.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-94b9dafc\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Queue.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-94b9dafc\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Queue.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- CE in Progress -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{title}}</span>\r\n </div>\r\n </b-col>\r\n <b-col v-if=\"rows !== 0\" cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Pending exams: {{totalRows | prettyNumber}}</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-card v-if=\"rows === 0\">\r\n <p>You currently do not have any classes in progress.</p>\r\n </b-card>\r\n\r\n <!-- TBD classList component. -->\r\n <div v-if=\"rows !== 0\" class=\"div-section-body\">\r\n <b-row v-for=\"row in classes\" v-bind:key=\"row.classid\" class=\"mt-4\" @click.prevent=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <!-- {{row.classid}} -->\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <div class=\"mt-2\">\r\n <!-- <b-button size=\"sm\" :to=\"{ path: '/classroom/'+row.hash }\">Classroom</b-button> -->\r\n <b-button size=\"sm\">Classroom</b-button>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}}\r\n <br>{{row.credits}} CEU ({{row.ceTypeId | prettyCEType}})\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"pages > 0\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: '',\r\n title: \"CE in Progress\",\r\n blurb: \"\",\r\n classes: [],\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1\r\n}\r\n\r\nexport default {\r\n name: \"Pending\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"0\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n }\r\n },\r\n methods: {\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doPending()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n return pageNum === 1 ? '/pending' : `/pending/${pageNum-1}`\r\n },\r\n doPending() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getPending(this.studentHash,this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Pending exams: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n } else {\r\n this.blurb = \"All exams completed.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken();\r\n // console.log(`page: ${this.page} h: ${this.studentHash}`)\r\n this.doPending()\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Pending.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),(_vm.rows !== 0)?_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Pending exams: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows)))])]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.rows === 0)?_c('b-card',[_c('p',[_vm._v(\"You currently do not have any classes in progress.\")])]):_vm._e(),_vm._v(\" \"),(_vm.rows !== 0)?_c('div',{staticClass:\"div-section-body\"},[_vm._l((_vm.classes),function(row){return _c('b-row',{key:row.classid,staticClass:\"mt-4\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoClass(row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"size\":\"sm\"}},[_vm._v(\"Classroom\")])],1)],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\"\\n \"),_c('br'),_vm._v(_vm._s(row.credits)+\" CEU (\"+_vm._s(_vm._f(\"prettyCEType\")(row.ceTypeId))+\")\\n \")])])],1)}),_vm._v(\" \"),(_vm.pages > 0)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5fcc0ad6\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Pending.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5fcc0ad6\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Pending.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Pending.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Pending.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5fcc0ad6\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Pending.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5fcc0ad6\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Pending.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <b-row v-for=\"row in classes\" ref=\"rows\" v-bind:key=\"row.classId\" class=\"mt-4 pointer\" @click.stop.prevent=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n <certbutton :c=\"buildClass(row)\" :s=\"buildStudentData(row)\"></certbutton>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}} - {{row.credits}} CEU ({{row.ceTypeId | prettyCEType}})\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!loading && pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n studentHash: '',\r\n title: \"CE Completed\",\r\n blurb: \"\",\r\n classes: [],\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n bannerAds: []\r\n}\r\n\r\nexport default {\r\n name: \"Completed\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: '1'\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n },\r\n studentName() {\r\n let name = this.$root.getStudentName()\r\n if (name.length === 0) {\r\n this.$router.push('/login')\r\n }\r\n return name\r\n }\r\n },\r\n methods: {\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doCompleted()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/completed/${pageNum}`\r\n console.log(`pageNum: ${pageNum} link: ${link}`)\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n buildClass(webinar) {\r\n let aout = {\r\n status: true,\r\n classId: webinar.classId,\r\n className: webinar.className,\r\n speakerName: webinar.speakerName,\r\n classHash: webinar.hash,\r\n description: webinar.description,\r\n podcastHash: null,\r\n agdCode: webinar.agdCode,\r\n agdCategory: webinar.agdCategory,\r\n isCADentalBoard: webinar.isCADentalBoard,\r\n courseNumberCADentalBoard: webinar.courseNumberCADentalBoard\r\n }\r\n return aout\r\n },\r\n buildStudentData(data) {\r\n let aout = {\r\n status: true,\r\n hash: this.studentHash,\r\n name: this.$root.getStudentName(),\r\n examDateLocal: data.examDateLocal,\r\n credits: data.credits,\r\n ceTypeId: data.ceTypeId\r\n }\r\n return aout\r\n },\r\n doCompleted() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getCompletedWebinars(this.studentHash, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n // this.blurb = `Completed: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n } else {\r\n this.blurb = \"No training completed.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken()\r\n // console.log(`page: ${this.page} h: ${this.studentHash}`)\r\n this.setCurPage()\r\n this.doCompleted()\r\n },\r\n mounted() { console.log('mounted') },\r\n beforeDestroy() { console.log('destroy') }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/CompletedWebinar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.classes),function(row){return _c('b-row',{key:row.classId,ref:\"rows\",refInFor:true,staticClass:\"mt-4 pointer\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoClass(row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}}),_vm._v(\" \"),_c('certbutton',{attrs:{\"c\":_vm.buildClass(row),\"s\":_vm.buildStudentData(row)}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(_vm._f(\"prettyCEType\")(row.ceTypeId))+\")\\n \")])])],1)}),_vm._v(\" \"),(!_vm.loading && _vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6d2449d1\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CompletedWebinar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6d2449d1\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CompletedWebinar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CompletedWebinar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CompletedWebinar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6d2449d1\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CompletedWebinar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-6d2449d1\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CompletedWebinar.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <b-row v-for=\"row in podcasts\" ref=\"rows\" v-bind:key=\"row.classId\" class=\"mt-4 pointer\" @click.stop.prevent=\"gotoPodcast(row.podcastShowHash,row.hash)\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <certbutton :c=\"buildClass(row)\" :s=\"buildStudentData(row)\"></certbutton>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>Sponsor: {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}} - {{row.credits}} CEU ({{row.ceTypeId | prettyCEType}})\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!loading && pages > 1\" class=\"mt-4\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n studentHash: '',\r\n title: \"CE Completed Podcasts\",\r\n blurb: \"\",\r\n podcasts: [],\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n bannerAds: []\r\n}\r\n\r\nexport default {\r\n name: \"CompletedPodcasts\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: '1'\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.podcasts.length\r\n },\r\n studentName() {\r\n let name = this.$root.getStudentName()\r\n if (name.length === 0) {\r\n this.$router.push('/login')\r\n }\r\n return name\r\n }\r\n },\r\n methods: {\r\n gotoPodcast(podcastShowHash,podcastHash) {\r\n this.$router.push(`/podcast/${podcastShowHash}/${podcastHash}`)\r\n },\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doCompleted()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n let link = `/completed/${pageNum}`\r\n console.log(`pageNum: ${pageNum} link: ${link}`)\r\n return link\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n buildClass(podcast) {\r\n let aout = {\r\n status: true,\r\n classId: podcast.id,\r\n className: podcast.title,\r\n speakerName: null, // speaker name not used\r\n podcastHash: podcast.hash,\r\n description: podcast.description,\r\n classHash: null\r\n }\r\n return aout\r\n },\r\n buildStudentData(data) {\r\n let aout = {\r\n status: true,\r\n hash: this.studentHash,\r\n name: this.$root.getStudentName(),\r\n examDateLocal: data.examDateLocal,\r\n credits: data.credits,\r\n ceTypeId: data.ceTypeId\r\n }\r\n return aout\r\n },\r\n doCompleted() {\r\n this.loading = true\r\n this.podcasts = []\r\n service\r\n .getCompletedPodcasts(this.studentHash, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n // this.blurb = `Completed: ${res.rowCount}`\r\n this.podcasts = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n } else {\r\n this.blurb = \"No podcasts completed.\";\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken()\r\n // console.log(`page: ${this.page} h: ${this.studentHash}`)\r\n this.setCurPage()\r\n this.doCompleted()\r\n },\r\n mounted() { console.log('mounted') },\r\n beforeDestroy() { console.log('destroy') }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/CompletedPodcast.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.podcasts),function(row){return _c('b-row',{key:row.classId,ref:\"rows\",refInFor:true,staticClass:\"mt-4 pointer\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.gotoPodcast(row.podcastShowHash,row.hash)}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('certbutton',{attrs:{\"c\":_vm.buildClass(row),\"s\":_vm.buildStudentData(row)}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\" - \"+_vm._s(row.credits)+\" CEU (\"+_vm._s(_vm._f(\"prettyCEType\")(row.ceTypeId))+\")\\n \")])])],1)}),_vm._v(\" \"),(!_vm.loading && _vm.pages > 1)?_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a42858a0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CompletedPodcast.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a42858a0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CompletedPodcast.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CompletedPodcast.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CompletedPodcast.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a42858a0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CompletedPodcast.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-a42858a0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CompletedPodcast.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <!-- Completed exams -->\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{title}}</span>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Completed exams: {{totalRows | prettyNumber}}</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div v-if=\"cntWebinars==0 && cntPodcasts==0\" class=\"div-section-body\">\r\n No CE completed.\r\n </div>\r\n <div v-else>\r\n <ul class=\"nav nav-tabs\">\r\n <li class=\"nav-item\">\r\n <b-link class=\"nav-link\" :active=\"showWebinars\" @click.prevent=\"toggle\">Webinars ({{cntWebinars}})</b-link>\r\n </li>\r\n <li class=\"nav-item\">\r\n <b-link class=\"nav-link\" :active=\"!showWebinars\" @click.prevent=\"toggle\">Podcasts ({{cntPodcasts}})</b-link>\r\n </li>\r\n <!-- <li class=\"nav-item\">\r\n <a class=\"nav-link\" href=\"#\">Link</a>\r\n </li>\r\n <li class=\"nav-item\">\r\n <a class=\"nav-link disabled\" href=\"#\" tabindex=\"-1\" aria-disabled=\"true\">Disabled</a>\r\n </li> -->\r\n </ul>\r\n <div class=\"div-section-body pb-2\">\r\n <completed-webinar v-if=\"showWebinars && cntWebinars !== 0\"></completed-webinar>\r\n <completed-podcast v-if=\"!showWebinars && cntPodcasts !== 0\"></completed-podcast>\r\n </div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nimport CompletedWebinar from '@/components/CompletedWebinar'\r\nimport CompletedPodcast from '@/components/CompletedPodcast'\r\n\r\nexport default {\r\n name: \"Completed\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n loading: true,\r\n studentHash: this.$root.getToken(),\r\n title: \"CE Completed\",\r\n blurb: \"\",\r\n showWebinars: true,\r\n cntWebinars: 0,\r\n cntPodcasts: 0,\r\n }\r\n },\r\n props: { },\r\n computed: {\r\n totalRows() {\r\n return this.cntWebinars + this.cntPodcasts\r\n }\r\n },\r\n components: {\r\n 'completed-webinar': CompletedWebinar,\r\n 'completed-podcast': CompletedPodcast\r\n },\r\n methods: {\r\n toggle() {\r\n this.showWebinars = !this.showWebinars\r\n },\r\n doCompleted() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getCompleted(this.studentHash)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n // this.blurb = `Completed: ${res.rowCount}`\r\n this.cntWebinars = res.data[0].cntWebinars\r\n this.cntPodcasts = res.data[0].cntPodcasts\r\n } else {\r\n this.error = true\r\n this.errorMsg = \"API Error. Unable to retrieve data.\"\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => {\r\n console.log(e)\r\n this.error = true\r\n this.errorMsg = \"System Error. Unable to retrieve data.\"\r\n })\r\n }\r\n },\r\n created() {\r\n this.loading = true\r\n this.showWebinars = true\r\n this.errors = false\r\n // console.log(`page: ${this.page} h: ${this.studentHash}`)\r\n this.doCompleted()\r\n },\r\n mounted() {\r\n // console.log('mounted')\r\n },\r\n beforeDestroy() {\r\n // console.log('destroy')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Completed.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Completed exams: \"+_vm._s(_vm._f(\"prettyNumber\")(_vm.totalRows)))])])],1)],1),_vm._v(\" \"),(_vm.cntWebinars==0 && _vm.cntPodcasts==0)?_c('div',{staticClass:\"div-section-body\"},[_vm._v(\"\\n No CE completed.\\n \")]):_c('div',[_c('ul',{staticClass:\"nav nav-tabs\"},[_c('li',{staticClass:\"nav-item\"},[_c('b-link',{staticClass:\"nav-link\",attrs:{\"active\":_vm.showWebinars},on:{\"click\":function($event){$event.preventDefault();return _vm.toggle($event)}}},[_vm._v(\"Webinars (\"+_vm._s(_vm.cntWebinars)+\")\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"nav-item\"},[_c('b-link',{staticClass:\"nav-link\",attrs:{\"active\":!_vm.showWebinars},on:{\"click\":function($event){$event.preventDefault();return _vm.toggle($event)}}},[_vm._v(\"Podcasts (\"+_vm._s(_vm.cntPodcasts)+\")\")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body pb-2\"},[(_vm.showWebinars && _vm.cntWebinars !== 0)?_c('completed-webinar'):_vm._e(),_vm._v(\" \"),(!_vm.showWebinars && _vm.cntPodcasts !== 0)?_c('completed-podcast'):_vm._e()],1)])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-878c9d06\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Completed.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-878c9d06\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Completed.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Completed.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Completed.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-878c9d06\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Completed.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-878c9d06\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Completed.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{title}}</span>\r\n </div>\r\n </b-col>\r\n <b-col v-if=\"rows !== 0\" cols=\"12\">\r\n <span class=\"txt-section-subtitle red\">Classes: {{totalRows}}</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-card v-if=\"rows === 0\">\r\n <h5>No viewed tutorials.</h5>\r\n <p>Click the button below to proceed to Product Training</p>\r\n <b-button to=\"/tutorials\">Product Training</b-button>\r\n </b-card>\r\n\r\n <!-- TBD classList component. -->\r\n <div v-if=\"rows !== 0\" class=\"div-section-body\">\r\n\r\n <div v-for=\"(row,ix) in classes\" v-bind:key=\"row.classId\">\r\n <div v-if=\"showMobileAd(ix)\">\r\n <mobilead :mb=\"getMobileAd(ix)\"></mobilead>\r\n </div>\r\n <b-row class=\"mt-3 pointer\" @click.prevent=\"gotoClass(row.hash)\">\r\n <b-col cols=\"4\">\r\n <!-- {{row.classId}} -->\r\n <b-img fluid v-bind:src=\"row.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{row.className}}</div>\r\n <div class=\"class-details\">\r\n {{row.sponsorCompanyName}}\r\n <br>{{row.releaseDate | prettyDate}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <b-row v-if=\"pages > 1\" class=\"mt-3\">\r\n <b-col>\r\n <b-pagination align=\"center\" v-model=\"curPage\" :total-rows=\"totalRows\" :per-page=\"pageSize\" @change=\"pageChange\" @input=\"pageInput\"></b-pagination>\r\n </b-col>\r\n </b-row>\r\n\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nexport default {\r\n name: \"Queue\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n studentHash: this.$root.getToken(),\r\n title: \"Viewed Tutorials\",\r\n blurb: \"\",\r\n classes: [],\r\n mobileAds: null,\r\n adIndexArr: [], // indexer into mobileAds.banners[]\r\n totalRows: 0,\r\n pageSize: 0,\r\n pages: 0,\r\n curPage: 1,\r\n bannerAds: []\r\n }\r\n },\r\n props: {\r\n page: {\r\n type:String,\r\n required: false,\r\n default: \"1\"\r\n }\r\n },\r\n computed: {\r\n rows () {\r\n return this.classes.length\r\n }\r\n },\r\n methods: {\r\n pageInput(page) {\r\n // console.log(`pageInput: ${page}`)\r\n },\r\n pageChange(page) {\r\n this.curPage = page\r\n this.doTutorialHistory()\r\n // console.log(`pageChange: ${page}`)\r\n },\r\n linkGen(pageNum) {\r\n return pageNum === 1 ? '/tutorial-history' : `/tutorial-history/${pageNum-1}`\r\n },\r\n setCurPage() {\r\n try {\r\n this.curPage = parseInt(this.page)\r\n if (this.curPage <= 0) this.curPage = 1\r\n }\r\n catch(e) {\r\n this.curPage = 1\r\n }\r\n // console.log( `this.page: ${this.page} curPage: ${this.curPage}`)\r\n },\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n showMobileAd(ix) { // returns boolean indicating whether slot has mobile ad\r\n return this.adIndexArr[ix] !== -1\r\n },\r\n getMobileAd(ix) {\r\n let aout = {adId: 0, adUrls: []}\r\n if (this.adIndexArr[ix] != -1) {\r\n aout = this.mobileAds.banners[this.adIndexArr[ix]]\r\n }\r\n return aout\r\n },\r\n doTutorialHistory() {\r\n this.loading = true\r\n this.classes = []\r\n service\r\n .getTutorialHistory(this.studentHash, this.curPage-1)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Queue: ${res.rowCount}`\r\n this.classes = res.data\r\n this.totalRows = res.totalRows\r\n this.pageSize = res.pageSize\r\n this.pages = (res.pageSize) ? Math.ceil( this.totalRows/res.pageSize ): 0\r\n if (this.curPage > this.pages) this.curPage = this.pages\r\n\r\n this.mobileAds = (res.mobileAds) ? res.mobileAds : {indexStart:0, interval: 0, rows: 0, banners: []}\r\n this.adIndexArr = utils.getAdIndexArray( this.classes.length, this.mobileAds.banners.length, this.mobileAds.indexStart, this.mobileAds.interval )\r\n } else {\r\n this.blurb = \"No viewed tutorials.\"\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n created() {\r\n this.doTutorialHistory()\r\n },\r\n mounted() {\r\n // console.log('mounted')\r\n },\r\n beforeDestroy() {\r\n // console.log('destroy')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/TutorialHistory.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.title))])])]),_vm._v(\" \"),(_vm.rows !== 0)?_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle red\"},[_vm._v(\"Classes: \"+_vm._s(_vm.totalRows))])]):_vm._e()],1)],1),_vm._v(\" \"),(_vm.rows === 0)?_c('b-card',[_c('h5',[_vm._v(\"No viewed tutorials.\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Click the button below to proceed to Product Training\")]),_vm._v(\" \"),_c('b-button',{attrs:{\"to\":\"/tutorials\"}},[_vm._v(\"Product Training\")])],1):_vm._e(),_vm._v(\" \"),(_vm.rows !== 0)?_c('div',{staticClass:\"div-section-body\"},[_vm._l((_vm.classes),function(row,ix){return _c('div',{key:row.classId},[(_vm.showMobileAd(ix))?_c('div',[_c('mobilead',{attrs:{\"mb\":_vm.getMobileAd(ix)}})],1):_vm._e(),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-3 pointer\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoClass(row.hash)}}},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":row.photo}})],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.sponsorCompanyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDate))+\"\\n \")])])],1)],1)}),_vm._v(\" \"),(_vm.pages > 1)?_c('b-row',{staticClass:\"mt-3\"},[_c('b-col',[_c('b-pagination',{attrs:{\"align\":\"center\",\"total-rows\":_vm.totalRows,\"per-page\":_vm.pageSize},on:{\"change\":_vm.pageChange,\"input\":_vm.pageInput},model:{value:(_vm.curPage),callback:function ($$v) {_vm.curPage=$$v},expression:\"curPage\"}})],1)],1):_vm._e()],2):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-32250dbe\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/TutorialHistory.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-32250dbe\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./TutorialHistory.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TutorialHistory.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TutorialHistory.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-32250dbe\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./TutorialHistory.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-32250dbe\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/TutorialHistory.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"5\">\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">Support</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <b-alert v-if=\"error\" key=\"error-box\" show variant=\"danger\" class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-if=\"success\" key=\"success-box\" show variant=\"info\" class=\"mt-2\">\r\n Message received.\r\n <div class=\"mt-2 text-center\">\r\n <b-button to=\"/home\">Home</b-button>\r\n </div>\r\n </b-alert>\r\n </transition>\r\n\r\n <b-overlay :show=\"busy\">\r\n <div class=\"div-section-body\">\r\n <b-form @submit.stop.prevent=\"submit\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div class=\"px-2\">\r\n\r\n <!-- Name -->\r\n <b-form-group label=\"Name\" label-for=\"name\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"name\"\r\n v-model=\"$v.form.name.$model\"\r\n type=\"text\"\r\n placeholder=\"Your name\"\r\n :state=\"validateState('name')\"\r\n aria-describedby=\"support-name-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-name-feedback\">Name is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Office -->\r\n <b-form-group label=\"Office/Company\" label-for=\"office\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-input\r\n id=\"office\"\r\n v-model=\"$v.form.office.$model\"\r\n type=\"text\"\r\n placeholder=\"Your office/company\"\r\n :state=\"validateState('office')\"\r\n aria-describedby=\"support-office-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-office-feedback\">This is a required field and must be at least 3 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <!-- Email -->\r\n <b-form-group label=\"Email\" label-for=\"email\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model=\"$v.form.email.$model\"\r\n type=\"email\"\r\n placeholder=\"Your email address\"\r\n :state=\"validateState('email')\"\r\n aria-describedby=\"support-email-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-email-feedback\">Email address is required.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <!-- Phone -->\r\n <b-form-group label=\"Phone\" label-for=\"phone\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"phone\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"phone\"\r\n v-model=\"$v.form.phone.$model\"\r\n type=\"tel\"\r\n placeholder=\"Your phone number\"\r\n :state=\"validateState('phone')\"\r\n aria-describedby=\"support-phone-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback id=\"support-phone-feedback\">Phone number is required.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Support Topic\" label-for=\"subject\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-select id=\"subject\" placeholder=\"inquiry\" v-model=\"$v.form.subject.$model\" :options=\"options\" :state=\"validateState('subject')\" aria-describedby=\"support-subject-feedback\"></b-form-select>\r\n <b-form-invalid-feedback id=\"support-subject-feedback\">Select reason for support.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <b-form-group label=\"Comments\" label-for=\"comment\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-form-textarea\r\n id=\"textarea\"\r\n v-model=\"$v.form.comment.$model\"\r\n placeholder=\"Your comments...\"\r\n :state=\"validateState('comment')\"\r\n rows=\"3\"\r\n max-rows=\"6\"\r\n aria-describedby=\"support-comment-feedback\"\r\n ></b-form-textarea>\r\n <b-form-invalid-feedback id=\"support-comment-feedback\">Explain reason for support up to 1000 characters.</b-form-invalid-feedback>\r\n </b-form-group>\r\n\r\n <div class=\"text-center mb-2\">\r\n <b-button type=\"submit\" variant=\"info\">Submit Request</b-button>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-form>\r\n </div>\r\n </b-overlay>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, email, minLength, maxLength, between } from 'vuelidate/lib/validators'\r\n\r\n// var data = {} // inlined\r\n\r\nexport default {\r\n name: \"Support\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: 'System error - contact tech support.',\r\n busy: false,\r\n studentHash: this.$root.getToken() || null,\r\n form: {\r\n hash: null,\r\n name: null,\r\n office: null,\r\n email: null,\r\n phone: null,\r\n subject: null,\r\n comment: null\r\n },\r\n options: [utils.initSelectArray()]\r\n }\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n name: {\r\n required,\r\n minLength: minLength(4)\r\n },\r\n office: {\r\n required,\r\n minLength: minLength(4)\r\n },\r\n email: {\r\n required,\r\n email\r\n },\r\n phone: {\r\n required,\r\n minLength: minLength(10)\r\n },\r\n subject: {\r\n required\r\n },\r\n comment: {\r\n required,\r\n minLength: minLength(4),\r\n maxLength: maxLength(1000)\r\n }\r\n }\r\n },\r\n props: {},\r\n computed: { },\r\n methods: {\r\n validateState(name) {\r\n const { $dirty, $error } = this.$v.form[name];\r\n return $dirty ? !$error : null;\r\n },\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n submit(e) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n return;\r\n }\r\n this.error = false\r\n this.success = false\r\n // console.log(`u: ${this.form.username} p: ${this.form.password}`);\r\n this.busy = true\r\n\r\n service\r\n .support(this.form)\r\n .then( res => {\r\n if (this.debug) console.log(res.data);\r\n if (res.status) {\r\n this.success = true\r\n this.form.subject = ''\r\n this.form.comment = ''\r\n this.$v.form.$reset()\r\n }\r\n else {\r\n this.success = false\r\n this.errorMsg = data.msg || 'Service error.'\r\n this.error = true\r\n }\r\n })\r\n .finally( () => {\r\n this.busy = false\r\n document.getElementById('app').scrollIntoView() // scroll to top of page.\r\n })\r\n .catch(e => {\r\n console.log(e);\r\n this.error = true;\r\n });\r\n }\r\n },\r\n created() {\r\n this.form.hash = this.studentHash\r\n this.form.name = this.$root.getStudentName()\r\n this.form.email = this.$root.getStudentEmail()\r\n\r\n this.options = this.options.concat(utils.prepSelectArray(['General Feedback','Live Webinar Question','Technical Issue', 'Other']))\r\n\r\n this.success = false\r\n this.busy = false\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Support.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"5\"}},[_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(\"Support\")])])])],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.error)?_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.success)?_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"info\"}},[_vm._v(\"\\n Message received.\\n \"),_c('div',{staticClass:\"mt-2 text-center\"},[_c('b-button',{attrs:{\"to\":\"/home\"}},[_vm._v(\"Home\")])],1)]):_vm._e()],1),_vm._v(\" \"),_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',{staticClass:\"div-section-body\"},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit($event)}}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"px-2\"},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Name\",\"label-for\":\"name\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"name\",\"type\":\"text\",\"placeholder\":\"Your name\",\"state\":_vm.validateState('name'),\"aria-describedby\":\"support-name-feedback\"},model:{value:(_vm.$v.form.name.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.name, \"$model\", $$v)},expression:\"$v.form.name.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-name-feedback\"}},[_vm._v(\"Name is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Office/Company\",\"label-for\":\"office\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-input',{attrs:{\"id\":\"office\",\"type\":\"text\",\"placeholder\":\"Your office/company\",\"state\":_vm.validateState('office'),\"aria-describedby\":\"support-office-feedback\"},model:{value:(_vm.$v.form.office.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.office, \"$model\", $$v)},expression:\"$v.form.office.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-office-feedback\"}},[_vm._v(\"This is a required field and must be at least 3 characters.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Email\",\"label-for\":\"email\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Your email address\",\"state\":_vm.validateState('email'),\"aria-describedby\":\"support-email-feedback\"},model:{value:(_vm.$v.form.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email, \"$model\", $$v)},expression:\"$v.form.email.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-email-feedback\"}},[_vm._v(\"Email address is required.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Phone\",\"label-for\":\"phone\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"phone\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"phone\",\"type\":\"tel\",\"placeholder\":\"Your phone number\",\"state\":_vm.validateState('phone'),\"aria-describedby\":\"support-phone-feedback\"},model:{value:(_vm.$v.form.phone.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.phone, \"$model\", $$v)},expression:\"$v.form.phone.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-phone-feedback\"}},[_vm._v(\"Phone number is required.\")])],1)],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Support Topic\",\"label-for\":\"subject\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-select',{attrs:{\"id\":\"subject\",\"placeholder\":\"inquiry\",\"options\":_vm.options,\"state\":_vm.validateState('subject'),\"aria-describedby\":\"support-subject-feedback\"},model:{value:(_vm.$v.form.subject.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.subject, \"$model\", $$v)},expression:\"$v.form.subject.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-subject-feedback\"}},[_vm._v(\"Select reason for support.\")])],1),_vm._v(\" \"),_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"Comments\",\"label-for\":\"comment\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-form-textarea',{attrs:{\"id\":\"textarea\",\"placeholder\":\"Your comments...\",\"state\":_vm.validateState('comment'),\"rows\":\"3\",\"max-rows\":\"6\",\"aria-describedby\":\"support-comment-feedback\"},model:{value:(_vm.$v.form.comment.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.comment, \"$model\", $$v)},expression:\"$v.form.comment.$model\"}}),_vm._v(\" \"),_c('b-form-invalid-feedback',{attrs:{\"id\":\"support-comment-feedback\"}},[_vm._v(\"Explain reason for support up to 1000 characters.\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center mb-2\"},[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"info\"}},[_vm._v(\"Submit Request\")])],1)],1)])],1)],1)],1)])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7a029cdd\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Support.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7a029cdd\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Support.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Support.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Support.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7a029cdd\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Support.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7a029cdd\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Support.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{msg}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <div class=\"div-padding\" v-html=\"blurb\"></div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Terms & Conditions\",\r\n code: \"terms\",\r\n blurb: \"\",\r\n studentHash: '',\r\n};\r\n\r\nexport default {\r\n name: \"Terms\",\r\n data() {\r\n return data;\r\n },\r\n props: {},\r\n computed: {},\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n nl2br(msg) {\r\n return utils.nl2br(msg)\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.code) {\r\n service\r\n .getBlurb(this.code)\r\n .then(\r\n (res => {\r\n console.log(`back from getBlurb!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n // this.blurb = res.data[0].blurb.replace('\\r\\n','').replace('<br>','')\r\n this.blurb = res.data[0].blurb\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Terms.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.msg))])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('div',{staticClass:\"div-padding\",domProps:{\"innerHTML\":_vm._s(_vm.blurb)}})])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-59c54de1\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Terms.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-59c54de1\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Terms.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Terms.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Terms.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-59c54de1\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Terms.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-59c54de1\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Terms.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">\r\n System error - contact tech support.\r\n <!-- TBD error component. -->\r\n </b-alert>\r\n\r\n <div class=\"div-section-header\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <div>\r\n <span class=\"txt-section-title\">{{msg}}</span>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <div class=\"div-section-body\">\r\n <div class=\"div-padding\" v-html=\"nl2br(blurb)\"></div>\r\n </div>\r\n\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\nimport utils from \"@/utils/utils\";\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Privacy\",\r\n code: \"privacy\",\r\n blurb: \"\",\r\n studentHash: '',\r\n};\r\n\r\nexport default {\r\n name: \"Privacy\",\r\n data() {\r\n return data;\r\n },\r\n props: {},\r\n computed: {},\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n nl2br(msg) {\r\n return utils.nl2br(msg)\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.code) {\r\n service\r\n .getBlurb(this.code)\r\n .then(\r\n (res => {\r\n console.log(`back from getBlurb!`);\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = res.data[0].blurb\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Privacy.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"\\n System error - contact tech support.\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',[_c('span',{staticClass:\"txt-section-title\"},[_vm._v(_vm._s(_vm.msg))])])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},[_c('div',{staticClass:\"div-padding\",domProps:{\"innerHTML\":_vm._s(_vm.nl2br(_vm.blurb))}})])],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-8794aa46\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Privacy.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-8794aa46\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Privacy.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Privacy.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Privacy.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8794aa46\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Privacy.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-8794aa46\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Privacy.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row hidden>\r\n <b-col>1</b-col>\r\n <b-col>2</b-col>\r\n <b-col>3</b-col>\r\n <b-col>4</b-col>\r\n <b-col>5</b-col>\r\n <b-col>6</b-col>\r\n <b-col>7</b-col>\r\n <b-col>8</b-col>\r\n <b-col>9</b-col>\r\n <b-col>10</b-col>\r\n <b-col>11</b-col>\r\n <b-col>12</b-col>\r\n </b-row>\r\n\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" sm=\"8\" lg=\"4\">\r\n <div class=\"page-header\">\r\n <h2>{{ msg }}</h2>\r\n </div>Unable to locate this resource.\r\n <div>\r\n <b-link to=\"/login\">Home</b-link>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <div v-if=\"debug\">\r\n <h2 v-once>s: {{ studentHash }}</h2>\r\n <h2 v-once>c: {{ classHash }}</h2>\r\n </div>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\";\r\n\r\nvar data = {\r\n msg: \"Page Not Found\",\r\n show: true,\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: \"\",\r\n classHash: \"\",\r\n form: { username: \"\", password: \"\" }\r\n};\r\n\r\n// using props for url parameters\r\n// https://www.youtube.com/watch?v=ESg0k2zdME4\r\n\r\nexport default {\r\n name: \"NotFound\",\r\n data() {\r\n return data;\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n s: {\r\n type: String,\r\n default: \"\"\r\n },\r\n c: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n methods: { }\r\n};\r\n\r\nfunction handleInit(data) {\r\n console.log(`status: ${data.status}`);\r\n console.log(`studentHash: ${studentHash}`);\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/NotFound.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"hidden\":\"\"}},[_c('b-col',[_vm._v(\"1\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"2\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"3\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"4\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"5\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"6\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"7\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"8\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"9\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"10\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"11\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"12\")])],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"8\",\"lg\":\"4\"}},[_c('div',{staticClass:\"page-header\"},[_c('h2',[_vm._v(_vm._s(_vm.msg))])]),_vm._v(\"Unable to locate this resource.\\n \"),_c('div',[_c('b-link',{attrs:{\"to\":\"/login\"}},[_vm._v(\"Home\")])],1)])],1),_vm._v(\" \"),(_vm.debug)?_c('div',[_vm._m(0),_vm._v(\" \"),_vm._m(1)]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',[_vm._v(\"s: \"+_vm._s(_vm.studentHash))])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h2',[_vm._v(\"c: \"+_vm._s(_vm.classHash))])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d00aa95a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NotFound.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d00aa95a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NotFound.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotFound.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotFound.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d00aa95a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NotFound.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d00aa95a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NotFound.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <div style=\"margin:100px auto 0 auto; width: 80%;\">\r\n <vue-plyr ref=\"plyr\">\r\n <audio>\r\n <!-- <source src=\"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3\" type=\"audio/mp3\"/> -->\r\n </audio>\r\n </vue-plyr>\r\n </div>\r\n <div class=\"text-center\">\r\n <b-button @click.prevent=\"play(0)\">Harp 0</b-button>\r\n <b-button @click.prevent=\"play(1)\">Harp 1</b-button>\r\n <b-button @click.prevent=\"play(2)\">Harp 2</b-button>\r\n <b-button @click.prevent=\"play(3)\">Harp 3</b-button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n// import VuePlyr from 'vue-plyr'\r\n\r\nlet data = {\r\n player: null,\r\n playerInit: false,\r\n arr: [\r\n 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp1.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp2.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp3.mp3', \r\n ]\r\n}\r\n\r\nexport default {\r\n name: 'Plyr',\r\n data () {\r\n return data\r\n },\r\n methods: {\r\n play(ix) {\r\n if (!this.player) {\r\n this.playerEvents()\r\n }\r\n console.log(`changing to: ${this.arr[ix]}`)\r\n // source setter\r\n // https://github.com/sampotts/plyr#the-source-setter\r\n this.player.source = {\r\n type: 'audio',\r\n title: `Harp ${ix}`,\r\n sources: [\r\n {\r\n src: this.arr[ix],\r\n type: 'audio/mp3',\r\n }\r\n ]\r\n }\r\n console.log(this.player.source)\r\n },\r\n playerEvents () {\r\n if (this.$refs['plyr']) {\r\n console.log(`playerEvents called`)\r\n\r\n this.playerInit = true\r\n this.player = this.$refs['plyr'].player\r\n\r\n // 'statechange','ready','canplay','error','progress','playing','play','pause','ended'\r\n this.player.on('statechange', () => console.log('event statechange'))\r\n this.player.on('ready', () => console.log('event ready'))\r\n this.player.on('canplay', (e) => {\r\n console.log('event canplay')\r\n console.log(e)\r\n this.player.play()\r\n })\r\n this.player.on('canplaythrough', () => console.log('event canplaythrough'))\r\n this.player.on('error', () => console.log('event error'))\r\n this.player.on('progress', () => console.log('event progress'))\r\n this.player.on('playing', () => console.log('event playing'))\r\n this.player.on('play', () => console.log('event play'))\r\n this.player.on('pause', () => console.log('event pause'))\r\n this.player.on('ended', () => console.log('event ended'))\r\n }\r\n else {\r\n console.log(`plyr not found!`)\r\n alert(`plyr not found`)\r\n }\r\n }\r\n }, \r\n created() { \r\n },\r\n mounted() { \r\n console.log(`mounted`) \r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Plyr.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"margin\":\"100px auto 0 auto\",\"width\":\"80%\"}},[_c('vue-plyr',{ref:\"plyr\"},[_c('audio')])],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(0)}}},[_vm._v(\"Harp 0\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(1)}}},[_vm._v(\"Harp 1\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(2)}}},[_vm._v(\"Harp 2\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(3)}}},[_vm._v(\"Harp 3\")])],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b0674986\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Plyr.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b0674986\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Plyr.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b0674986\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Plyr.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-b0674986\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Plyr.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-row>\r\n <b-col>\r\n <!-- <b-button size=\"sm\" class=\"mb-2\" @click.prevent=\"goBack()\">\r\n <b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Return to list\r\n </b-button>-->\r\n <b-link to=\"/plyr\">\r\n <b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Plyr\r\n </b-link>\r\n </b-col>\r\n </b-row>\r\n <div class=\"page-header\">\r\n <h2>{{ msg }}</h2>\r\n </div>\r\n\r\n <b-alert :show=\"loading\" variant=\"info\" class=\"mt-2\">Loading....</b-alert>\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <b-row v-if=\"!error & !loading\">\r\n <b-col cols=\"12\">\r\n <div class=\"class-title\">{{podcastShow.title}}</div>\r\n <div class=\"class-details\">\r\n Sponsor: {{podcastShow.sponsorCompanyName}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!error & !loading\">\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"podcastShow.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" class=\"mt-2\" :inner-html.prop=\"this.podcastShow.blurb | nl2br\"></b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!error\">\r\n <b-col class=\"mt-3 mb-3\">\r\n {{blurb}}\r\n </b-col>\r\n </b-row>\r\n\r\n <!-- episodes -->\r\n <b-row v-for=\"(row,ix) in podcasts\" v-bind:key=\"row.id\" class=\"mt-4 pt-2 pointer\" style=\"border-top: 1px solid #CCC;\">\r\n <b-col cols=\"2\">\r\n <!-- {{row.id}} -->\r\n <div @click=\"play(ix)\">\r\n <b-icon icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"10\" style=\"margin-left: -10px;\" @click=\"activateRow(ix)\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br>{{row.durationSec}}\r\n </div>\r\n <div class=\"class-details mt-2\">\r\n {{row.blurb}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Plyr 2 Test\",\r\n blurb: \"Podcast series blurb.\",\r\n obj: {},\r\n studentData: {status: false},\r\n studentHash: \"\",\r\n podcastHash: \"\",\r\n podcastShowHash: \"\",\r\n podcastShow: {status: false},\r\n podcasts: [],\r\n bannerAds: []\r\n}\r\n\r\nexport default {\r\n name: 'Plyr2',\r\n data () {\r\n return data\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n p: {\r\n type: String,\r\n default: \"\"\r\n },\r\n ps: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n description: function() {\r\n return utils.nl2br(this.obj.description);\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n activateRow(ix) {\r\n console.log(`activateRow(${ix})`)\r\n },\r\n play(ix) {\r\n console.log(`changing to: ${this.podcasts[ix].mp3}`)\r\n let data = {\r\n title: this.podcasts[ix].title,\r\n mp3: this.podcasts[ix].mp3\r\n }\r\n this.$parent.playPlayer(data)\r\n },\r\n testme() {\r\n this.$parent.testme()\r\n // window.alert('testme')\r\n }\r\n },\r\n created() {\r\n // default to crosstex hash\r\n this.podcastShowHash = this.ps || this.$route.query.ps || '6D5840BF-6401-468E-87FE-E19359B92D8C'\r\n console.log(`ps: ${this.podcastShowHash}`)\r\n this.podcastHash = this.p || this.$route.query.p || ''\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.podcastShowHash) {\r\n service\r\n .getPodcastShow(this.podcastShowHash, this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.podcastShow = res.data[0]\r\n this.podcasts = res.podcasts.data\r\n this.bannerAds = res.bannerAds.bannerAds\r\n this.blurb = `All episodes from this series (${this.podcasts.length})`\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n },\r\n mounted () {\r\n console.log('mounted')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Plyr2.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('b-row',[_c('b-col',[_c('b-link',{attrs:{\"to\":\"/plyr\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left-short\",\"scale\":\"2\"}}),_vm._v(\" Plyr\\n \")],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"page-header\"},[_c('h2',[_vm._v(_vm._s(_vm.msg))])]),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.loading,\"variant\":\"info\"}},[_vm._v(\"Loading....\")]),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(!_vm.error & !_vm.loading)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.podcastShow.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Sponsor: \"+_vm._s(_vm.podcastShow.sponsorCompanyName)+\"\\n \")])])],1):_vm._e(),_vm._v(\" \"),(!_vm.error & !_vm.loading)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.podcastShow.photo}})],1),_vm._v(\" \"),_c('b-col',{staticClass:\"mt-2\",attrs:{\"cols\":\"8\"},domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.podcastShow.blurb)}})],1):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-3\"},[_vm._v(\"\\n \"+_vm._s(_vm.blurb)+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.podcasts),function(row,ix){return _c('b-row',{key:row.id,staticClass:\"mt-4 pt-2 pointer\",staticStyle:{\"border-top\":\"1px solid #CCC\"}},[_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('div',{on:{\"click\":function($event){return _vm.play(ix)}}},[_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\"},on:{\"click\":function($event){return _vm.activateRow(ix)}}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(_vm._s(row.durationSec)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"class-details mt-2\"},[_vm._v(\"\\n \"+_vm._s(row.blurb)+\"\\n \")])])],1)})],2)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-213db6f7\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Plyr2.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-213db6f7\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Plyr2.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr2.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr2.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-213db6f7\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Plyr2.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-213db6f7\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Plyr2.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n\r\n <b-row>\r\n <b-col>\r\n <!-- <b-button size=\"sm\" class=\"mb-2\" @click.prevent=\"goBack()\">\r\n <b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Return to list\r\n </b-button>-->\r\n <b-link to=\"/plyr2\">\r\n <b-icon icon=\"arrow-left-short\" scale=\"2\"></b-icon> Plyr2\r\n </b-link>\r\n </b-col>\r\n </b-row>\r\n <div class=\"page-header\">\r\n <h2>{{ msg }}</h2>\r\n </div>\r\n\r\n <b-alert :show=\"loading\" variant=\"info\" class=\"mt-2\">Loading....</b-alert>\r\n <b-alert v-if=\"error\" show variant=\"danger\" class=\"mt-2\">No class selected.</b-alert>\r\n\r\n <b-row v-if=\"!error & !loading\">\r\n <b-col cols=\"12\">\r\n <div class=\"class-title\">{{podcastShow.title}}</div>\r\n <div class=\"class-details\">\r\n Sponsor: {{podcastShow.sponsorCompanyName}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!error & !loading\">\r\n <b-col cols=\"4\">\r\n <b-img fluid v-bind:src=\"podcastShow.photo\" />\r\n </b-col>\r\n <b-col cols=\"8\" class=\"mt-2\" :inner-html.prop=\"this.podcastShow.blurb | nl2br\"></b-col>\r\n </b-row>\r\n\r\n <b-row v-if=\"!error\">\r\n <b-col class=\"mt-3 mb-3\">{{blurb}}</b-col>\r\n </b-row>\r\n\r\n <!-- episodes -->\r\n <b-row v-for=\"(row,ix) in podcasts\" v-bind:key=\"row.id\" class=\"mt-4 pt-2 pointer\" style=\"border-top: 1px solid #CCC;\">\r\n <b-col cols=\"2\">\r\n <!-- {{row.id}} -->\r\n <div @click=\"play(ix)\">\r\n <b-icon icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"10\" style=\"margin-left: -10px;\" @click=\"activateRow(ix)\">\r\n <div class=\"class-title\">{{row.title}}</div>\r\n <div class=\"class-details\">\r\n {{row.speakerName}}\r\n <br>{{row.releaseDateUTC | prettyDate}}<span v-if=\"row.credits > 0\"> - {{row.credits}} CEU (Self Study)</span>\r\n <br>{{row.durationSec}}\r\n </div>\r\n <div class=\"class-details mt-2\">\r\n {{row.blurb}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-col>\r\n </b-row>\r\n\r\n <b-row v-show=\"showPlayer\" class=\"divPlayer\" align-h=\"center\">\r\n <b-col cols=\"12\">\r\n <div class=\"text-right\">\r\n <b-button pill size=\"sm\" @click.prevent=\"hidePlayer\">×</b-button>\r\n </div>\r\n <vue-plyr ref=\"plyr\">\r\n <audio>\r\n <!-- <source src=\"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3\" type=\"audio/mp3\"/> -->\r\n </audio>\r\n </vue-plyr>\r\n </b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nvar data = {\r\n debug: false,\r\n error: false,\r\n loading: true,\r\n msg: \"Plyr 3 Test\",\r\n blurb: \"Podcast series blurb.\",\r\n obj: {},\r\n studentData: {status: false},\r\n studentHash: \"\",\r\n podcastHash: \"\",\r\n podcastShowHash: \"\",\r\n podcastShow: {status: false},\r\n podcasts: [],\r\n bannerAds: [],\r\n player: null,\r\n playerInit: false,\r\n showPlayer: false,\r\n mp3: 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3'\r\n}\r\n\r\nexport default {\r\n name: 'Plyr3',\r\n data () {\r\n return data\r\n },\r\n props: {\r\n // route set to use props mapped to url parameters\r\n p: {\r\n type: String,\r\n default: \"\"\r\n },\r\n ps: {\r\n type: String,\r\n default: \"\"\r\n }\r\n },\r\n computed: {\r\n description: function() {\r\n return utils.nl2br(this.obj.description);\r\n }\r\n },\r\n methods: {\r\n goBack() {\r\n this.$router.go(-1);\r\n },\r\n activateRow() {\r\n console.log(`activateRow(${ix})`)\r\n },\r\n play(ix) {\r\n if (!this.player) {\r\n this.playerEvents()\r\n }\r\n console.log(`changing to: ${this.podcasts[ix].mp3}`)\r\n this.showPlayer = true\r\n // source setter\r\n // https://github.com/sampotts/plyr#the-source-setter\r\n this.player.source = {\r\n type: 'audio',\r\n title: this.podcasts[ix].title,\r\n sources: [\r\n {\r\n src: this.podcasts[ix].mp3,\r\n type: 'audio/mp3',\r\n }\r\n ]\r\n }\r\n console.log(this.player.source)\r\n },\r\n playerEvents () {\r\n if (this.$refs['plyr']) {\r\n console.log(`playerEvents called`)\r\n\r\n this.playerInit = true\r\n this.player = this.$refs['plyr'].player\r\n\r\n // 'statechange','ready','canplay','error','progress','playing','play','pause','ended'\r\n this.player.on('statechange', () => console.log('event statechange'))\r\n this.player.on('ready', () => console.log('event ready'))\r\n this.player.on('canplay', (e) => {\r\n console.log('event canplay')\r\n console.log(e)\r\n this.player.play()\r\n })\r\n this.player.on('canplaythrough', () => console.log('event canplaythrough'))\r\n this.player.on('error', () => console.log('event error'))\r\n this.player.on('progress', () => console.log('event progress'))\r\n this.player.on('playing', () => console.log('event playing'))\r\n this.player.on('play', () => console.log('event play'))\r\n this.player.on('pause', () => console.log('event pause'))\r\n this.player.on('ended', () => console.log('event ended'))\r\n }\r\n else {\r\n console.log(`plyr not found!`)\r\n alert(`plyr not found`)\r\n }\r\n },\r\n hidePlayer() {\r\n console.log(`hiding player`)\r\n this.player.pause()\r\n this.showPlayer = false\r\n }\r\n },\r\n created() {\r\n // default to crosstex hash\r\n this.podcastShowHash = this.ps || this.$route.query.ps || '6D5840BF-6401-468E-87FE-E19359B92D8C'\r\n console.log(`ps: ${this.podcastShowHash}`)\r\n this.podcastHash = this.p || this.$route.query.p || ''\r\n this.studentHash = this.$root.getToken() || '';\r\n if (this.podcastShowHash) {\r\n service\r\n .getPodcastShow(this.podcastShowHash, this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.podcastShow = res.data[0]\r\n this.podcasts = res.podcasts.data\r\n this.bannerAds = res.bannerAds.bannerAds\r\n this.blurb = `All episodes from this series (${this.podcasts.length})`\r\n }\r\n else {\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false;\r\n console.log(`finally...`);\r\n })\r\n .catch(e => {\r\n this.error = true;\r\n console.log(e);\r\n });\r\n }\r\n else {\r\n // flag error!\r\n }\r\n // this.error = this.$root.getClassId() === 0;\r\n },\r\n mounted () {\r\n console.log('mounted')\r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n .divPlayer {\r\n z-index: 100;\r\n background-color: #FFF;\r\n margin: 5px auto 0 -30px;\r\n padding: 5px 0;\r\n border: 2px solid gray;\r\n position: absolute;\r\n /* position: sticky; */\r\n bottom: 0;\r\n }\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Plyr3.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('b-row',[_c('b-col',[_c('b-link',{attrs:{\"to\":\"/plyr2\"}},[_c('b-icon',{attrs:{\"icon\":\"arrow-left-short\",\"scale\":\"2\"}}),_vm._v(\" Plyr2\\n \")],1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"page-header\"},[_c('h2',[_vm._v(_vm._s(_vm.msg))])]),_vm._v(\" \"),_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":_vm.loading,\"variant\":\"info\"}},[_vm._v(\"Loading....\")]),_vm._v(\" \"),(_vm.error)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_vm._v(\"No class selected.\")]):_vm._e(),_vm._v(\" \"),(!_vm.error & !_vm.loading)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.podcastShow.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Sponsor: \"+_vm._s(_vm.podcastShow.sponsorCompanyName)+\"\\n \")])])],1):_vm._e(),_vm._v(\" \"),(!_vm.error & !_vm.loading)?_c('b-row',[_c('b-col',{attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.podcastShow.photo}})],1),_vm._v(\" \"),_c('b-col',{staticClass:\"mt-2\",attrs:{\"cols\":\"8\"},domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.podcastShow.blurb)}})],1):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('b-row',[_c('b-col',{staticClass:\"mt-3 mb-3\"},[_vm._v(_vm._s(_vm.blurb))])],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.podcasts),function(row,ix){return _c('b-row',{key:row.id,staticClass:\"mt-4 pt-2 pointer\",staticStyle:{\"border-top\":\"1px solid #CCC\"}},[_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('div',{on:{\"click\":function($event){return _vm.play(ix)}}},[_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}})],1)]),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\"},on:{\"click\":function($event){return _vm.activateRow(ix)}}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm._f(\"prettyDate\")(row.releaseDateUTC))),(row.credits > 0)?_c('span',[_vm._v(\" - \"+_vm._s(row.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_vm._v(_vm._s(row.durationSec)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"class-details mt-2\"},[_vm._v(\"\\n \"+_vm._s(row.blurb)+\"\\n \")])])],1)})],2)],1),_vm._v(\" \"),_c('b-row',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPlayer),expression:\"showPlayer\"}],staticClass:\"divPlayer\",attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"text-right\"},[_c('b-button',{attrs:{\"pill\":\"\",\"size\":\"sm\"},on:{\"click\":function($event){$event.preventDefault();return _vm.hidePlayer($event)}}},[_vm._v(\"×\")])],1),_vm._v(\" \"),_c('vue-plyr',{ref:\"plyr\"},[_c('audio')])],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2f788ca4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Plyr3.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2f788ca4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Plyr3.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr3.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Plyr3.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2f788ca4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Plyr3.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2f788ca4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Plyr3.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <div style=\"margin:100px auto 0 auto; width: 80%;\">\r\n <vue-plyr ref=\"plyr\">\r\n <audio>\r\n <!-- <source src=\"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3\" type=\"audio/mp3\"/> -->\r\n </audio>\r\n </vue-plyr>\r\n </div>\r\n <div class=\"text-center\">\r\n <b-button @click.prevent=\"play(0)\">Harp 0</b-button>\r\n <b-button @click.prevent=\"play(1)\">Harp 1</b-button>\r\n <b-button @click.prevent=\"play(2)\">Harp 2</b-button>\r\n <b-button @click.prevent=\"play(3)\">Harp 3</b-button>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n// import VuePlyr from 'vue-plyr'\r\n\r\nlet data = {\r\n player: null,\r\n playerInit: false,\r\n arr: [\r\n 'https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp1.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp2.mp3',\r\n 'https://cdn.viva9.us/contrib/va/podcast/harp3.mp3', \r\n ]\r\n}\r\n\r\nexport default {\r\n name: 'Plyr',\r\n data () {\r\n return data\r\n },\r\n methods: {\r\n play(ix) {\r\n if (!this.player) {\r\n this.playerEvents()\r\n }\r\n console.log(`changing to: ${this.arr[ix]}`)\r\n // source setter\r\n // https://github.com/sampotts/plyr#the-source-setter\r\n this.player.source = {\r\n type: 'audio',\r\n title: `Harp ${ix}`,\r\n sources: [\r\n {\r\n src: this.arr[ix],\r\n type: 'audio/mp3',\r\n }\r\n ]\r\n }\r\n console.log(this.player.source)\r\n },\r\n playerEvents () {\r\n if (this.$refs['plyr']) {\r\n console.log(`playerEvents called`)\r\n\r\n this.playerInit = true\r\n this.player = this.$refs['plyr'].player\r\n\r\n // 'statechange','ready','canplay','error','progress','playing','play','pause','ended'\r\n this.player.on('statechange', () => console.log('event statechange'))\r\n this.player.on('ready', () => console.log('event ready'))\r\n this.player.on('canplay', (e) => {\r\n console.log('event canplay')\r\n console.log(e)\r\n this.player.play()\r\n })\r\n this.player.on('canplaythrough', () => console.log('event canplaythrough'))\r\n this.player.on('error', () => console.log('event error'))\r\n this.player.on('progress', () => console.log('event progress'))\r\n this.player.on('playing', () => console.log('event playing'))\r\n this.player.on('play', () => console.log('event play'))\r\n this.player.on('pause', () => console.log('event pause'))\r\n this.player.on('ended', () => console.log('event ended'))\r\n }\r\n else {\r\n console.log(`plyr not found!`)\r\n alert(`plyr not found`)\r\n }\r\n }\r\n }, \r\n created() { \r\n },\r\n mounted() { \r\n console.log(`mounted`) \r\n }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlyrYoutube.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticStyle:{\"margin\":\"100px auto 0 auto\",\"width\":\"80%\"}},[_c('vue-plyr',{ref:\"plyr\"},[_c('audio')])],1),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(0)}}},[_vm._v(\"Harp 0\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(1)}}},[_vm._v(\"Harp 1\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(2)}}},[_vm._v(\"Harp 2\")]),_vm._v(\" \"),_c('b-button',{on:{\"click\":function($event){$event.preventDefault();return _vm.play(3)}}},[_vm._v(\"Harp 3\")])],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d11515d8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlyrYoutube.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d11515d8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlyrYoutube.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlyrYoutube.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlyrYoutube.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d11515d8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlyrYoutube.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d11515d8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlyrYoutube.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <h2 class=\"text-center\">{{ msg }}</h2>\r\n\r\n <b-row>\r\n <b-col cols=\"3\">\r\n <input class=\"w-100\" v-model=\"dt\">\r\n </b-col>\r\n <b-col cols=\"3\">{{ rawDate(dt) }}</b-col>\r\n <b-col cols=\"4\">{{dt | prettyDateTime}}</b-col>\r\n </b-row>\r\n\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n'use strict'\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nlet data = {\r\n dt: '2020-04-23T01:51:51.617Z',\r\n msg: 'Test Page',\r\n debug: false,\r\n loading: true,\r\n error: false,\r\n studentHash: \"\",\r\n blurb: \"Upcoming: 0\",\r\n classes: []\r\n}\r\n\r\nexport default {\r\n name: 'Test',\r\n data () {\r\n return data\r\n },\r\n methods: {\r\n rawDate(dateStr) {\r\n let aout\r\n // console.log(`parsed: ${Date.parse(dateStr)}`)\r\n if (!isNaN(Date.parse(dateStr))) {\r\n aout = (new Date(dateStr)).toString()\r\n }\r\n else {\r\n aout = 'Not a date!'\r\n }\r\n return aout\r\n }\r\n },\r\n created() {\r\n this.studentHash = this.$root.getToken()\r\n service\r\n .getUpcoming(this.studentHash)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.blurb = `Upcoming Classes: ${res.rowCount}`\r\n this.classes = res.data\r\n } else {\r\n this.blurb = \"No upcoming classes.\"\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e))\r\n },\r\n mounted() { console.log(`mounted`) }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/Test.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('h2',{staticClass:\"text-center\"},[_vm._v(_vm._s(_vm.msg))]),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.dt),expression:\"dt\"}],staticClass:\"w-100\",domProps:{\"value\":(_vm.dt)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.dt=$event.target.value}}})]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"3\"}},[_vm._v(_vm._s(_vm.rawDate(_vm.dt)))]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm._f(\"prettyDateTime\")(_vm.dt)))])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d5bcdbae\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Test.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d5bcdbae\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Test.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Test.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Test.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d5bcdbae\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Test.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-d5bcdbae\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Test.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container>\r\n <h2>{{ msg }}</h2>\r\n <hr size=1>\r\n <b-container>\r\n <h3><a href=\"https://fontawesome.com/icons?d=gallery&m=free\" target=\"_blank\">Font Awesome</a></h3>\r\n <b-row>\r\n <b-col>\r\n <font-awesome-icon icon=\"user-secret\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"key\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"mask\" />\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col>\r\n <font-awesome-icon icon=\"cat\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"angry\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"bell\" />\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n <hr size=1>\r\n <b-container>\r\n <h3><a href=\"https://bootstrap-vue.js.org/docs/icons/\" target=\"_blank\">BootStrap Vue Icons</a></h3>\r\n <b-row>\r\n <b-col>\r\n <b-icon-alarm></b-icon-alarm>\r\n </b-col>\r\n <b-col>\r\n <b-icon-cloud></b-icon-cloud>\r\n </b-col>\r\n <b-col>\r\n <b-icon-alert-circle-fill class=\"h1 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h2 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h3 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h4 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h5 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h6 mb-2\"></b-icon-alert-circle-fill>\r\n <b-icon-alert-circle-fill class=\"h7 mb-2\"></b-icon-alert-circle-fill>\r\n </b-col>\r\n <b-col>\r\n <b-icon-camera font-scale=\".5\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"1\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"2\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"3\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"4\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"5\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"6\"></b-icon-camera>\r\n <b-icon-camera font-scale=\"7\"></b-icon-camera>\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nvar data = {\r\n msg: 'Font Awesome/Icons Test Page'\r\n}\r\n\r\nexport default {\r\n name: 'FontAwesome',\r\n data () { return data }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/FontAwesome.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',[_c('h2',[_vm._v(_vm._s(_vm.msg))]),_vm._v(\" \"),_c('hr',{attrs:{\"size\":\"1\"}}),_vm._v(\" \"),_c('b-container',[_c('h3',[_c('a',{attrs:{\"href\":\"https://fontawesome.com/icons?d=gallery&m=free\",\"target\":\"_blank\"}},[_vm._v(\"Font Awesome\")])]),_vm._v(\" \"),_c('b-row',[_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"user-secret\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"key\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"mask\"}})],1)],1),_vm._v(\" \"),_c('b-row',[_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"cat\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"angry\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"bell\"}})],1)],1)],1),_vm._v(\" \"),_c('hr',{attrs:{\"size\":\"1\"}}),_vm._v(\" \"),_c('b-container',[_c('h3',[_c('a',{attrs:{\"href\":\"https://bootstrap-vue.js.org/docs/icons/\",\"target\":\"_blank\"}},[_vm._v(\"BootStrap Vue Icons\")])]),_vm._v(\" \"),_c('b-row',[_c('b-col',[_c('b-icon-alarm')],1),_vm._v(\" \"),_c('b-col',[_c('b-icon-cloud')],1),_vm._v(\" \"),_c('b-col',[_c('b-icon-alert-circle-fill',{staticClass:\"h1 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h2 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h3 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h4 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h5 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h6 mb-2\"}),_vm._v(\" \"),_c('b-icon-alert-circle-fill',{staticClass:\"h7 mb-2\"})],1),_vm._v(\" \"),_c('b-col',[_c('b-icon-camera',{attrs:{\"font-scale\":\".5\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"1\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"2\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"3\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"4\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"5\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"6\"}}),_vm._v(\" \"),_c('b-icon-camera',{attrs:{\"font-scale\":\"7\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ec969e58\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/FontAwesome.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ec969e58\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./FontAwesome.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FontAwesome.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./FontAwesome.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ec969e58\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./FontAwesome.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-ec969e58\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/FontAwesome.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container fluid>\r\n <h2>{{ msg }}</h2>\r\n <hr size=1>\r\n <b-container>\r\n <b-row>\r\n <b-col>1</b-col>\r\n <b-col>2</b-col>\r\n <b-col>3</b-col>\r\n <b-col>4</b-col>\r\n <b-col>5</b-col>\r\n <b-col>6</b-col>\r\n <b-col>7</b-col>\r\n <b-col>8</b-col>\r\n <b-col>9</b-col>\r\n <b-col>10</b-col>\r\n <b-col>11</b-col>\r\n <b-col>12</b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col>\r\n <font-awesome-icon icon=\"user-secret\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"key\" />\r\n </b-col>\r\n <b-col>\r\n <font-awesome-icon icon=\"mask\" />\r\n </b-col>\r\n </b-row>\r\n </b-container>\r\n\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\nvar data = {\r\n msg: 'Bootstrap Vue Test Page'\r\n}\r\n\r\nexport default {\r\n name: 'BootstrapVue',\r\n data () { return data }\r\n}\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n.col {\r\n border: 1px solid #CCC;\r\n}\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/BootstrapVue.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',{attrs:{\"fluid\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.msg))]),_vm._v(\" \"),_c('hr',{attrs:{\"size\":\"1\"}}),_vm._v(\" \"),_c('b-container',[_c('b-row',[_c('b-col',[_vm._v(\"1\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"2\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"3\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"4\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"5\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"6\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"7\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"8\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"9\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"10\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"11\")]),_vm._v(\" \"),_c('b-col',[_vm._v(\"12\")])],1),_vm._v(\" \"),_c('b-row',[_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"user-secret\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"key\"}})],1),_vm._v(\" \"),_c('b-col',[_c('font-awesome-icon',{attrs:{\"icon\":\"mask\"}})],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3b023685\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/BootstrapVue.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3b023685\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./BootstrapVue.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./BootstrapVue.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./BootstrapVue.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3b023685\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./BootstrapVue.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-3b023685\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/BootstrapVue.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-container>\r\n <b-row>\r\n <h3>{{msg}}</h3>\r\n </b-row>\r\n <div v-show=\"hasVideo\">\r\n <b-row align-h=\"center\">\r\n <b-col cols=\"12\" lg=\"6\" class=\"text-center\">\r\n <youtube ref=\"youtube\" :video-id=\"videoId\" :player-vars=\"playerVars\" @ready=\"readyVideo\" @playing=\"playingVideo\"></youtube>\r\n </b-col>\r\n </b-row>\r\n <b-row align-h=\"center\">\r\n <b-col class=\"text-center\">\r\n <button @click.prevent=\"playVideo\">play</button>\r\n <button @click.prevent=\"pauseVideo\">pause</button>\r\n <button @click.prevent=\"stopVideo\">stop</button>\r\n <!-- <router-link to=\"/yt2\">YT2</router-link> -->\r\n </b-col>\r\n </b-row>\r\n <b-row align-h=\"center\">\r\n <b-col class=\"text-center\">\r\n <b-link class=\"pl-3\" v-for=\"(id,ix) in videoArr\" :key=\"ix\" @click.prevent=\"changeVideo(id)\">{{id}}</b-link>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </b-container>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n// 5 second video\r\n// https://www.youtube.com/watch?v=QC8iQqtG0hg\r\n// https://www.youtube.com/watch?v=uaGmdm3Aiq0\r\n//\r\n// Freedive https://www.youtube.com/watch?v=SrZRMoi-yO4\r\n// Bowie https://www.youtube.com/watch?v=kJ095S0MmnA\r\n// Prine https://www.youtube.com/watch?v=ZogciFl-udY\r\n// \r\n// Youtube API\r\n// https://developers.google.com/youtube/iframe_api_reference#Events\r\n// https://developers.google.com/youtube/player_parameters\r\n\r\n// Vue Youtube\r\n// https://github.com/anteriovieira/vue-youtube\r\n\r\nimport youtubeMixin from \"@/plugins/youtubeMixin\";\r\n\r\nlet data = {\r\n videoUrl: \"https://www.youtube.com/watch?v=QC8iQqtG0hg\",\r\n videoArr: [\"QC8iQqtG0hg\", \"SrZRMoi-yO4\", \"kJ095S0MmnA\", \"kJ095S0MmnA\", \"ZogciFl-udY\"],\r\n videoId: \"QC8iQqtG0hg\",\r\n playerVars: {\r\n autoplay: 1,\r\n rel: 0\r\n },\r\n msg: \"Youtube Vue?\",\r\n hasVideo: false\r\n};\r\n\r\nexport default {\r\n name: \"YoutubeVue\",\r\n data() {\r\n return data;\r\n },\r\n mixins: [youtubeMixin], \r\n computed: {\r\n player() {\r\n return this.$refs.youtube.player\r\n }\r\n }, \r\n methods: {\r\n changeVideo(id) {\r\n this.videoId = id\r\n },\r\n readyVideo() {\r\n console.log(\"o/ we are ready!!!\");\r\n },\r\n playingVideo() {\r\n console.log(\"o/ we are watching!!!\");\r\n },\r\n playVideo() {\r\n // this.$refs.youtube.player.playVideo();\r\n this.player.playVideo(); // see computed()\r\n },\r\n pauseVideo() {\r\n this.player.pauseVideo();\r\n },\r\n stopVideo() {\r\n this.player.stopVideo();\r\n }\r\n },\r\n created () {\r\n this.videoId = this.videoArr[0]\r\n },\r\n async mounted() {\r\n let res = await this.checkYoutube();\r\n if (res.hasYoutube) {\r\n this.hasVideo = true;\r\n } else {\r\n console.log(`YOUTUBE BLOCKED!!`)\r\n }\r\n },\r\n destroyed() {}\r\n};\r\n</script>\r\n\r\n<!-- Add \"scoped\" attribute to limit CSS to this component only -->\r\n<style scoped>\r\n#ytplayer {\r\n display: block;\r\n}\r\nh1,\r\nh2 {\r\n font-weight: normal;\r\n}\r\nul {\r\n list-style-type: none;\r\n padding: 0;\r\n}\r\nli {\r\n display: inline-block;\r\n margin: 0 10px;\r\n}\r\na {\r\n color: #42b983;\r\n}\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/YoutubeVue.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-container',[_c('b-row',[_c('h3',[_vm._v(_vm._s(_vm.msg))])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasVideo),expression:\"hasVideo\"}]},[_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('youtube',{ref:\"youtube\",attrs:{\"video-id\":_vm.videoId,\"player-vars\":_vm.playerVars},on:{\"ready\":_vm.readyVideo,\"playing\":_vm.playingVideo}})],1)],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"text-center\"},[_c('button',{on:{\"click\":function($event){$event.preventDefault();return _vm.playVideo($event)}}},[_vm._v(\"play\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){$event.preventDefault();return _vm.pauseVideo($event)}}},[_vm._v(\"pause\")]),_vm._v(\" \"),_c('button',{on:{\"click\":function($event){$event.preventDefault();return _vm.stopVideo($event)}}},[_vm._v(\"stop\")])])],1),_vm._v(\" \"),_c('b-row',{attrs:{\"align-h\":\"center\"}},[_c('b-col',{staticClass:\"text-center\"},_vm._l((_vm.videoArr),function(id,ix){return _c('b-link',{key:ix,staticClass:\"pl-3\",on:{\"click\":function($event){$event.preventDefault();return _vm.changeVideo(id)}}},[_vm._v(_vm._s(id))])}),1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-187752fd\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/YoutubeVue.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-187752fd\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./YoutubeVue.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./YoutubeVue.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./YoutubeVue.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-187752fd\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./YoutubeVue.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-187752fd\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/YoutubeVue.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport HelloWorld from '@/components/HelloWorld'\r\nimport Home from '@/components/Home'\r\n\r\nimport Login from '@/components/Login'\r\nimport Logout from '@/components/Logout'\r\nimport Recover from '@/components/Recover'\r\nimport ResetPassword from '@/components/ResetPassword'\r\nimport Register from '@/components/Register'\r\nimport Account from '@/components/Account'\r\nimport Gdpr from '@/components/Gdpr'\r\n\r\nimport Classroom from '@/components/Classroom'\r\nimport ClassroomReserve from '@/components/ClassroomReserve'\r\nimport ClassroomLive from '@/components/ClassroomLive'\r\nimport CancelSeat from '@/components/CancelSeat'\r\nimport ClassroomAffidavit from '@/components/ClassroomAffidavit'\r\nimport Podcast from '@/components/Podcast'\r\nimport BlogPost from '@/components/BlogPost'\r\n\r\nimport SVA from '@/components/SVA'\r\nimport Survey from '@/components/Survey'\r\nimport EvalPodcast from '@/components/EvalPodcast'\r\nimport ExamPodcast from '@/components/ExamPodcast'\r\nimport Eval from '@/components/Eval'\r\nimport Exam from '@/components/Exam'\r\nimport Done from '@/components/Done'\r\n\r\nimport Search from '@/components/Search'\r\nimport Upcoming from '@/components/Upcoming'\r\nimport Ondemand from '@/components/Ondemand'\r\nimport Podcasts from '@/components/Podcasts'\r\nimport Blog from '@/components/Blog'\r\nimport Tutorials from '@/components/Tutorials'\r\nimport Ebooks from '@/components/Ebooks'\r\n\r\nimport Seats from '@/components/Seats'\r\nimport Queue from '@/components/Queue'\r\nimport Pending from '@/components/Pending'\r\nimport Completed from '@/components/Completed'\r\nimport TutorialHistory from '@/components/TutorialHistory'\r\n\r\nimport Support from '@/components/Support'\r\nimport Terms from '@/components/Terms'\r\nimport Privacy from '@/components/Privacy'\r\n\r\nimport NotFound from '@/components/NotFound'\r\n\r\n// Test Pages\r\nimport Plyr from '@/components/Plyr'\r\nimport Plyr2 from '@/components/Plyr2'\r\nimport Plyr3 from '@/components/Plyr3'\r\nimport PlyrYoutube from '@/components/PlyrYoutube'\r\nimport Test from '@/components/Test'\r\nimport FontAwesome from '@/components/FontAwesome'\r\nimport BootstrapVue from '@/components/BootstrapVue'\r\nimport YoutubeVue from '@/components/YoutubeVue'\r\n\r\n/* eslint-disable */\r\n\r\nVue.use(VueRouter)\r\n\r\n// Put Login routes last since they have URL paramaters\r\n// Base Url is:\r\n// https://site.com/{studentHash}/{classHash}\r\n// eg\r\n// https://site.com/111-22-33/55-asdf-99\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n // beforeEach: function(to, from, next) {\r\n // console.log(`router`)\r\n // console.log(this)\r\n // if(to.meta.requiresAuth) {\r\n // if (this.isLoggedIn()) { //authUser.access_token\r\n // next();\r\n // }\r\n // else {\r\n // next({ name: 'login' });\r\n // }\r\n // }\r\n // next();\r\n // },\r\n // isLoggedIn: () => { // not used!!\r\n // console.log(`router - NEVER CALLED?`)\r\n // console.log(`ls: ${localStorage.getItem('id_token')}`)\r\n // return (localStorage.getItem('id_token') !== null);\r\n // },\r\n routes: [\r\n {\r\n path: '/home',\r\n name: 'Home',\r\n component: Home,\r\n meta: {\r\n title: 'Free Online Dental CE | Viva Learning',\r\n page: '/index.asp',\r\n requiresAuth: false\r\n },\r\n alias: '/'\r\n },\r\n {\r\n path: '/search',\r\n name: 'Search',\r\n component: Search,\r\n props: true,\r\n meta: {\r\n title: 'Search All Content | Viva Learning',\r\n page: '/member/dental-webinars-podcasts.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/terms',\r\n name: 'Terms',\r\n component: Terms,\r\n props: true,\r\n meta: {\r\n title: 'Terms and Conditions | Viva Learning',\r\n page: '/terms.asp',\r\n requiresAuth: false\r\n },\r\n },\r\n {\r\n path: '/privacy',\r\n name: 'Privacy',\r\n component: Privacy,\r\n props: true,\r\n meta: {\r\n title: 'Privacy | Viva Learning',\r\n page: '/privacy.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/support',\r\n name: 'Support',\r\n component: Support,\r\n props: true,\r\n meta: {\r\n title: 'Support | Viva Learning',\r\n page: '/support/support.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/account',\r\n name: 'Account',\r\n component: Account,\r\n props: true,\r\n meta: {\r\n title: 'Member Account | Viva Learning',\r\n page: '/member/profile.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/gdpr',\r\n name: 'Gdpr',\r\n component: Gdpr,\r\n props: true,\r\n meta: {\r\n title: 'GDPR Remove Consent | Viva Learning',\r\n page: '/member/gdpr',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/sva/:c',\r\n name: 'SVA',\r\n component: SVA,\r\n props: true,\r\n meta: {\r\n title: 'Sponsored Video | Viva Learning',\r\n page: '/member/sva.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/survey/:c',\r\n name: 'Survey',\r\n component: Survey,\r\n props: true,\r\n meta: {\r\n title: 'Sponsored Survey | Viva Learning',\r\n page: '/member/survey.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/classroom/:c',\r\n name: 'Classroom',\r\n component: Classroom,\r\n props: true,\r\n meta: {\r\n title: 'Classroom - Viva Learning',\r\n page: '/member/classroom.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n { // SEO friendly alias for /classroom\r\n path: '/on-demand-dental-ce-course/:c',\r\n name: 'OnDemandClassroom',\r\n component: Classroom,\r\n props: true,\r\n meta: {\r\n title: 'Classroom - Viva Learning',\r\n page: '/member/classroom.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n { // use task-based aliases for analytics\r\n path: '/classroom-reserve/:c',\r\n name: 'ClassroomReserve',\r\n component: ClassroomReserve,\r\n props: true,\r\n meta: {\r\n title: 'Reserve Seat | Viva Learning',\r\n page: '/member/reserve.asp',\r\n requiresAuth: false\r\n },\r\n alias: '/reserve/:c'\r\n },\r\n { // use task-based aliases for analytics\r\n path: '/classroom-live/:c',\r\n name: 'ClassroomLive',\r\n component: ClassroomLive,\r\n props: true,\r\n meta: {\r\n title: 'Live Dental Webinar | Viva Learning',\r\n page: '/member/classroomlive.asp',\r\n requiresAuth: true\r\n },\r\n alias: '/live/:c'\r\n },\r\n { // use task-based aliases for analytics\r\n path: '/classroom-affidavit/:c',\r\n name: 'ClassroomAffidavit',\r\n component: ClassroomAffidavit,\r\n props: true,\r\n meta: {\r\n title: 'Confirm Webinar Attendance | Viva Learning',\r\n page: '/member/classliveaffadavit.asp',\r\n requiresAuth: true\r\n },\r\n alias: '/affidavit/:c'\r\n },\r\n { // use task-based aliases for analytics\r\n path: '/cancel-seat/:code',\r\n name: 'CancelSeat',\r\n component: CancelSeat,\r\n props: true,\r\n meta: {\r\n title: 'Cancel Seat | Viva Learning',\r\n page: '/member/cancel.asp',\r\n requiresAuth: false\r\n },\r\n alias: ['/cancel/:code']\r\n },\r\n {\r\n path: '/podcast/:ps/:p?',\r\n name: 'Podcast',\r\n component: Podcast,\r\n props: true,\r\n meta: {\r\n title: 'Podcast Series | Viva Learning',\r\n page: '/member/dental-podcasts.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n { // SEO friendly alias for /podcast\r\n path: '/dental-podcasts/:s',\r\n name: 'DentalPodcast',\r\n component: Podcast,\r\n props: true,\r\n meta: {\r\n title: 'Podcast Series | Viva Learning',\r\n page: '/member/dental-podcasts.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/blog-post/:blogId/:nolog?',\r\n name: 'BlogPost',\r\n component: BlogPost,\r\n props: true,\r\n meta: {\r\n title: 'Dental Blog Post | Viva Learning',\r\n page: '/member/dental-blog-post.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/dental-blog/:blogId/:nolog?',\r\n name: 'DentalBlogPost',\r\n component: BlogPost,\r\n props: true,\r\n meta: {\r\n title: 'Dental Blog Post | Viva Learning',\r\n page: '/member/dental-blog-post.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/eval/:c',\r\n name: 'Evaluation',\r\n component: Eval,\r\n props: true,\r\n meta: {\r\n title: 'Class Evaluation | Viva Learning',\r\n page: '/member/evaluation.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/eval-podcast/:p',\r\n name: 'EvaluationPodcast',\r\n component: EvalPodcast,\r\n props: true,\r\n meta: {\r\n title: 'Podcast Evaluation | Viva Learning',\r\n page: '/member/evaluation.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/exam/:c',\r\n name: 'Exam',\r\n component: Exam,\r\n props: true,\r\n meta: {\r\n title: 'CE Exam | Viva Learning',\r\n page: '/member/exam.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/exam-podcast/:p',\r\n name: 'ExamPodcast',\r\n component: ExamPodcast,\r\n props: true,\r\n meta: {\r\n title: 'Podcast CE Exam | Viva Learning',\r\n page: '/member/exam.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/done/:c',\r\n name: 'Done',\r\n component: Done,\r\n props: true,\r\n meta: {\r\n title: 'Post Exam | Viva Learning',\r\n page: '/member/done.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/recover',\r\n name: 'Recover',\r\n component: Recover,\r\n meta: {\r\n title: 'Recover Login | Viva Learning',\r\n page: '/passwordResetRequest.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/reset/:t',\r\n name: 'Reset',\r\n component: ResetPassword,\r\n props: true,\r\n meta: {\r\n title: 'Reset Password | Viva Learning',\r\n page: '/passwordReset.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/register',\r\n name: 'Register',\r\n component: Register,\r\n props: true,\r\n meta: {\r\n title: 'Register Free Account | Viva Learning',\r\n page: '/login.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/webinars',\r\n name: 'Upcoming',\r\n component: Upcoming,\r\n meta: {\r\n title: 'Live Dental Webinars - Free Online CE Courses | Viva Learning',\r\n page: '/member/live-dental-ce-webinars.asp',\r\n requiresAuth: false\r\n },\r\n alias: '/upcoming'\r\n },\r\n {\r\n path: '/ondemand/:page?',\r\n name: 'Ondemand',\r\n component: Ondemand,\r\n meta: {\r\n title: 'On-Demand Dental Webinars - Free Online CE Courses | Viva Learning',\r\n page: '/member/on-demand-dental-ce-webinars.asp',\r\n requiresAuth: false\r\n },\r\n props: true\r\n },\r\n {\r\n path: '/podcasts/:page?',\r\n name: 'Podcasts',\r\n component: Podcasts,\r\n props: true,\r\n meta: {\r\n title: 'Dental Podcasts | Viva Learning',\r\n page: '/member/dental-podcasts.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/blog/:page?',\r\n name: 'Blog',\r\n component: Blog,\r\n props: true,\r\n meta: {\r\n title: 'Dental Blog | Viva Learning',\r\n page: '/member/dental-blog.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/seats',\r\n name: 'Seats',\r\n component: Seats,\r\n props: true,\r\n meta: {\r\n title: 'Reserved Seats | Viva Learning',\r\n page: '/member/myaccount.asp',\r\n requiresAuth: true\r\n },\r\n alias: '/reserved'\r\n },\r\n {\r\n path: '/pending/:page?',\r\n name: 'Pending',\r\n component: Pending,\r\n props: true,\r\n meta: {\r\n title: 'CE in Progress | Viva Learning',\r\n page: '/member/inprogress.asp',\r\n requiresAuth: true\r\n },\r\n alias: '/exams/:page?'\r\n },\r\n {\r\n path: '/queue/:page?',\r\n name: 'Queue',\r\n component: Queue,\r\n props: true,\r\n meta: {\r\n title: 'Watch Later | Viva Learning',\r\n page: '/member/queue.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/completed/:page?',\r\n name: 'Completed',\r\n component: Completed,\r\n meta: { requiresAuth: true },\r\n props: true,\r\n meta: {\r\n title: 'Completed CE | Viva Learning',\r\n page: '/member/completed.asp',\r\n requiresAuth: true\r\n },\r\n alias: '/completed-exams/:page?'\r\n },\r\n {\r\n path: '/tutorial-history/:page?',\r\n name: 'TutorialHistory',\r\n component: TutorialHistory,\r\n props: true,\r\n meta: {\r\n title: 'Product Training History | Viva Learning',\r\n page: '/member/viewed.asp',\r\n requiresAuth: true\r\n }\r\n },\r\n {\r\n path: '/tutorials/:page?',\r\n name: 'Tutorials',\r\n component: Tutorials,\r\n props: true,\r\n meta: {\r\n title: 'Dental Product Training | Viva Learning',\r\n page: '/member/dental-product-training.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/ebooks/:page?',\r\n name: 'Ebooks',\r\n component: Ebooks,\r\n props: true,\r\n meta: {\r\n title: 'Dental eBooks | Viva Learning',\r\n page: '/member/dental-ebooks.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/test',\r\n name: 'Test',\r\n component: Test,\r\n props: true,\r\n alias: '/test2'\r\n },\r\n {\r\n path: '/fa',\r\n name: 'FontAwesome',\r\n component: FontAwesome,\r\n props: true,\r\n alias: '/fa2'\r\n },\r\n {\r\n path: '/bv',\r\n name: 'BootstrapVue',\r\n component: BootstrapVue,\r\n props: true,\r\n alias: '/bv2'\r\n },\r\n {\r\n path: '/yt',\r\n name: 'YoutubeVue',\r\n component: YoutubeVue,\r\n alias: '/ytv'\r\n },\r\n {\r\n path: '/plyr',\r\n name: 'VuePlyr',\r\n component: Plyr,\r\n props: true\r\n },\r\n {\r\n path: '/plyr2/:ps?',\r\n name: 'VuePlyr2',\r\n component: Plyr2,\r\n props: true\r\n },\r\n {\r\n path: '/plyr3/:ps?',\r\n name: 'VuePlyr3',\r\n component: Plyr3,\r\n props: true\r\n },\r\n {\r\n path: '/plyr-youtube/:v?',\r\n name: 'VuePlyrYoutube',\r\n component: PlyrYoutube,\r\n props: true,\r\n alias: '/plyryt/:v?'\r\n },\r\n {\r\n path: '/logout',\r\n name: 'Logout',\r\n component: Logout,\r\n props: true,\r\n meta: {\r\n title: 'Logout | Viva Learning',\r\n page: '/logout.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/hello',\r\n name: 'HelloWorld',\r\n component: HelloWorld,\r\n meta : {\r\n title: 'Hello World',\r\n page: '/helloworld.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n {\r\n path: '/login/:s?',\r\n name: 'Login',\r\n component: Login,\r\n props: true,\r\n meta: {\r\n title: 'Login | Viva Learning',\r\n page: '/login.asp',\r\n requiresAuth: false\r\n }\r\n },\r\n { // 404 page - last\r\n path: '*',\r\n name: 'NotFound',\r\n component: NotFound,\r\n props: true,\r\n meta: {\r\n title: '404 | Viva Learning',\r\n page: '/404.asp',\r\n requiresAuth: false\r\n },\r\n alias: '/404'\r\n }\r\n ],\r\n scrollBehavior (to, from, savedPosition) {\r\n // document.getElementById('app').scrollIntoView();\r\n if (savedPosition) {\r\n // when forward and back are used\r\n return savedPosition\r\n } else {\r\n // click to new route goes to top of page.\r\n return { x: 0, y: 0 }\r\n }\r\n }\r\n})\r\n\r\n// scrollBehavior - scroll to top on route.\r\n// https://stackoverflow.com/questions/50449123/vue-js-scroll-to-top-of-page-for-same-route\r\n// https://router.vuejs.org/guide/advanced/scroll-behavior.html\r\n\r\nrouter.beforeEach((to, from, next) => {\r\n // console.log(`router to: ${to.path}`)\r\n // console.log(to)\r\n // console.log(`router from`)\r\n // console.log(from)\r\n\r\n if(to.meta.requiresAuth && !isLoggedIn()) {\r\n // console.log(`to.fullPath: ${to.fullPath}`)\r\n next({path: '/login', query: {rurl: to.fullPath}})\r\n }\r\n else {\r\n next()\r\n }\r\n\r\n function isLoggedIn() { // internal function\r\n // console.log(`isLoggedIn internal...`)\r\n // console.log(`ls: ${localStorage.getItem('id_token')}`)\r\n return (localStorage.getItem('id_token') && true);\r\n }\r\n})\r\n\r\nconst DEFAULT_TITLE = 'DEFAULT VIVA TITLE'\r\nconst DEFAULT_PAGE = '/index.asp'\r\n\r\n// Set page title and do google analytics.\r\n// https://serversideup.net/google-analytics-vue-router-single-page-application/\r\n// Pre-GA4\r\n// https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#content\r\n// https://stackoverflow.com/questions/51639850/how-to-change-page-titles-when-using-vue-router\r\n// GA4\r\n// https://peterdaugaardrasmussen.com/2022/08/13/gtag-stop-gtag-from-sending-initiali-pageview/\r\n// https://developers.google.com/analytics/devguides/collection/ga4/views?client_type=gtag\r\nrouter.afterEach((to, from) => {\r\n // console.log(`Router.AfterEach - ${to.meta.title} / ${to.meta.page}`)\r\n\r\n // Register page view - GA4 style\r\n gtag('event', 'page_view', {\r\n page_title: to.meta.title || DEFAULT_TITLE,\r\n page_location: to.meta.page || DEFAULT_PAGE, // window.location.href, (sending desktop page value (correct?))\r\n page_path: window.location.pathname,\r\n send_to: 'G-Z7VS4H5ZHN'\r\n });\r\n\r\n // Use next tick to handle router history correctly\r\n // see: https://github.com/vuejs/vue-router/issues/914#issuecomment-384477609\r\n Vue.nextTick(() => {\r\n document.title = to.meta.title || DEFAULT_TITLE;\r\n })\r\n})\r\n\r\nexport default router\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Plyr from 'plyr';\r\n\r\n//\r\n\r\nvar script = {\r\n name: 'VuePlyr',\r\n props: {\r\n /** Options object for plyr config. **/\r\n options: {\r\n type: Object,\r\n required: false,\r\n default () {\r\n return {}\r\n }\r\n },\r\n /** Array of events to emit from the plyr object **/\r\n emit: {\r\n type: Array,\r\n required: false,\r\n default () { return [] }\r\n }\r\n },\r\n data () {\r\n return {\r\n player: {}\r\n }\r\n },\r\n computed: {\r\n opts () {\r\n const options = this.options;\r\n if (!this.options.hasOwnProperty('hideYouTubeDOMError')) {\r\n options.hideYouTubeDOMError = true;\r\n }\r\n return options\r\n }\r\n },\r\n mounted () {\r\n this.player = new Plyr(this.$el.firstChild, this.opts);\r\n this.emit.forEach(element => {\r\n this.player.on(element, this.emitPlayerEvent);\r\n });\r\n },\r\n beforeDestroy () {\r\n try {\r\n this.player.destroy();\r\n } catch (e) {\r\n if (!(this.opts.hideYouTubeDOMError && e.message === 'The YouTube player is not attached to the DOM.')) {\r\n // eslint-disable-next-line no-console\r\n console.error(e);\r\n }\r\n }\r\n },\r\n methods: {\r\n emitPlayerEvent (event) {\r\n this.$emit(event.type, event);\r\n }\r\n }\r\n};\r\n\r\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\r\n\r\nconst isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return (id, style) => addStyle(id, style);\r\n}\r\nlet HEAD;\r\nconst styles = {};\r\nfunction addStyle(id, css) {\r\n const group = isOldIE ? css.media || 'default' : id;\r\n const style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n let code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n style.element.setAttribute('media', css.media);\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n const index = style.ids.size - 1;\r\n const textNode = document.createTextNode(code);\r\n const nodes = style.element.childNodes;\r\n if (nodes[index])\r\n style.element.removeChild(nodes[index]);\r\n if (nodes.length)\r\n style.element.insertBefore(textNode, nodes[index]);\r\n else\r\n style.element.appendChild(textNode);\r\n }\r\n }\r\n}\r\n\r\n/* script */\r\nconst __vue_script__ = script;\r\n\r\n/* template */\r\nvar __vue_render__ = function() {\r\n var _vm = this;\r\n var _h = _vm.$createElement;\r\n var _c = _vm._self._c || _h;\r\n return _c(\"div\", [_vm._t(\"default\")], 2)\r\n};\r\nvar __vue_staticRenderFns__ = [];\r\n__vue_render__._withStripped = true;\r\n\r\n /* style */\r\n const __vue_inject_styles__ = function (inject) {\r\n if (!inject) return\r\n inject(\"data-v-91800632_0\", { source: \"@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased;direction:ltr;font-family:Avenir,\\\"Avenir Next\\\",\\\"Helvetica Neue\\\",\\\"Segoe UI\\\",Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5764;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:14px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:16px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}a.plyr__control{text-decoration:none}a.plyr__control::after,a.plyr__control::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr__control--overlaid{background:rgba(0,179,255,.8);border:0;border-radius:100%;color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#00b3ff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls .plyr__controls__item.plyr__volume{padding-right:5px}.plyr__controls .plyr__controls__item.plyr__volume:first-child{padding-right:0}.plyr__controls:empty{display:none}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4a5764;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:16px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5764;display:flex;font-size:14px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(74,87,100,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(74,87,100,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#c1c9d1;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#00b3ff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#00b3ff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:14px}.plyr__time+.plyr__time::before{content:'\\\\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:14px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__progress{left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:14px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(193,201,209,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,41,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,41,47,.6) 50%,rgba(35,41,47,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,201,209,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(35,41,47,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c9d1;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:14px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}\", map: undefined, media: undefined });\r\n\r\n };\r\n /* scoped */\r\n const __vue_scope_id__ = undefined;\r\n /* module identifier */\r\n const __vue_module_identifier__ = undefined;\r\n /* functional template */\r\n const __vue_is_functional_template__ = false;\r\n /* style inject SSR */\r\n \r\n /* style inject shadow dom */\r\n \r\n\r\n \r\n var VuePlyr = normalizeComponent(\r\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\r\n __vue_inject_styles__,\r\n __vue_script__,\r\n __vue_scope_id__,\r\n __vue_is_functional_template__,\r\n __vue_module_identifier__,\r\n false,\r\n createInjector,\r\n undefined,\r\n undefined\r\n );\r\n\r\nVuePlyr.install = (Vue, options = {}) => {\r\n if (options.plyr) {\r\n VuePlyr.props.options.default = () => { return Object.assign({},options.plyr) };\r\n }\r\n if (options.emit) {\r\n //swd VuePlyr.props.emit.default = () => { return [Object.assign({},options.emit)] };\r\n VuePlyr.props.emit.default = () => { return Object.keys(options.emit).map(key => options.emit[key]) };\r\n }\r\n Vue.component(VuePlyr.name, VuePlyr);\r\n};\r\n\r\nif (typeof window !== 'undefined' && window.Vue) {\r\n window.Vue.use(VuePlyr);\r\n}\r\n\r\nexport default VuePlyr;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-plyr/dist/vue-plyr.mjs\n// module id = null\n// module chunks = ","<template>\r\n <div id=\"div-search-bar\">\r\n <b-row class=\"mt-3\">\r\n <b-col cols=\"12\">\r\n <b-input-group class=\"mb-2\" v-b-toggle.sidebar-search @click.stop.prevent=\"search\">\r\n <b-input-group-prepend>\r\n <b-button variant=\"secondary\" size=\"sm\"><b-icon icon=\"search\"></b-icon></b-button>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"searchDisplay\"\r\n v-model=\"searchDisplay\"\r\n type=\"text\"\r\n :placeholder=\"model.label\"\r\n readonly\r\n style='background-color: white;'\r\n ></b-form-input>\r\n <b-input-group-append v-if=\"haveFilter\" @click.stop.prevent=\"remove\">\r\n <b-button variant=\"danger\" size=\"sm\"><b-icon icon=\"x-square\"></b-icon></b-button>\r\n </b-input-group-append>\r\n </b-input-group>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\n// Embedded due to init.\r\n// var data = {\r\n// debug: false,\r\n// };\r\n\r\nexport default {\r\n name: \"SearchBar\",\r\n data() {\r\n return {\r\n debug: false,\r\n model: {...this.value},\r\n searchDisplay: null\r\n };\r\n },\r\n props: {\r\n value: { // from v-model on parent\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n computed: {\r\n haveFilter() {\r\n let aout = (this.model.catId !== null) || (this.model.compId !== null) || (this.model.query !== null)\r\n return aout\r\n }\r\n },\r\n // watch: {\r\n // model: {\r\n // deep: true,\r\n // handler(modelArg) { // receives updated this.model\r\n // // console.log('searchBar watcher')\r\n // // console.log(value)\r\n // // Send updated model to parent.\r\n // this.$emit('input', modelArg) // send to listeners as input event\r\n // }\r\n // }\r\n // },\r\n methods: {\r\n search() {\r\n // console.log(`Clicked searchbar!`)\r\n // console.log(this.model)\r\n EventBus.$emit('search-sidebar', this.model)\r\n },\r\n remove() {\r\n this.model.catId = null\r\n this.model.compId = null\r\n this.model.query = null\r\n this.searchDisplay = null\r\n this.$root.setSearchDisplay(null)\r\n\r\n // console.log(`Clicked remove filter!`)\r\n this.$emit('remove-filter')\r\n // console.log(this.model)\r\n // this.$router.push({ path: this.model.path, query: {cid: '', coid: '', q: ''}})\r\n }\r\n },\r\n created() {\r\n // console.log(`Created: cid: ${this.cid} q: ${this.q} `)\r\n this.model.path = this.model.path || '/search'\r\n this.model.catId = this.model.catId || null\r\n this.model.compId = this.model.compId || null\r\n this.model.query = utils.safeSearch(this.model.query)\r\n // if search parameters show \"friendly\" filter, else null\r\n // this.searchDisplay = (this.haveFilter) ? this.$root.getSearchDisplay() : null\r\n if (this.haveFilter) {\r\n this.searchDisplay = this.$root.getSearchDisplay()\r\n // console.log(`HaveFilter: ${this.searchDisplay} String: ${utils.isString(this.searchDisplay)} `)\r\n }\r\n else {\r\n this.searchDisplay = null\r\n // console.log(`NO Filter: ${this.searchDisplay} String: ${utils.isString(this.searchDisplay)} `)\r\n }\r\n\r\n // this.$root.setSearchModel(this.model) // needed?\r\n // console.log(this.model)\r\n },\r\n mounted() {},\r\n beforeDestroy() {}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n#div-search-bar {\r\n /* border: 1px solid red; */\r\n background-color: #f3f4f9;\r\n margin: auto;\r\n}\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/SearchBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"div-search-bar\"}},[_c('b-row',{staticClass:\"mt-3\"},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('b-input-group',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar-search\",modifiers:{\"sidebar-search\":true}}],staticClass:\"mb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.search($event)}}},[_c('b-input-group-prepend',[_c('b-button',{attrs:{\"variant\":\"secondary\",\"size\":\"sm\"}},[_c('b-icon',{attrs:{\"icon\":\"search\"}})],1)],1),_vm._v(\" \"),_c('b-form-input',{staticStyle:{\"background-color\":\"white\"},attrs:{\"id\":\"searchDisplay\",\"type\":\"text\",\"placeholder\":_vm.model.label,\"readonly\":\"\"},model:{value:(_vm.searchDisplay),callback:function ($$v) {_vm.searchDisplay=$$v},expression:\"searchDisplay\"}}),_vm._v(\" \"),(_vm.haveFilter)?_c('b-input-group-append',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.remove($event)}}},[_c('b-button',{attrs:{\"variant\":\"danger\",\"size\":\"sm\"}},[_c('b-icon',{attrs:{\"icon\":\"x-square\"}})],1)],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4fa0de20\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SearchBar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4fa0de20\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SearchBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SearchBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SearchBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4fa0de20\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SearchBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4fa0de20\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SearchBar.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-sidebar\r\n id=\"sidebar-search\"\r\n :title=\"getSidebarLabel\"\r\n header-class=\"label-header\"\r\n :bg-variant=\"bg_variant\"\r\n :text-variant=\"text_variant\"\r\n body-class=\"sidebar-body\"\r\n backdrop\r\n shadow=\"lg\"\r\n @shown=\"shown\"\r\n >\r\n <b-overlay :show=\"loading\">\r\n <b-form @submit.stop.prevent=\"submit('query')\">\r\n <div id=\"div-search-sidebar\">\r\n <b-row class=\"mt-2\">\r\n <b-col cols=\"12\" class=\"px-4\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"search\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"search-query\"\r\n ref=\"search-query\"\r\n v-model=\"model.query\"\r\n type=\"text\"\r\n placeholder=\"Keyword Search\"\r\n autofocus\r\n autocomplete=\"off\"\r\n @focus=\"model.query=null\"\r\n ></b-form-input>\r\n <b-input-group-prepend>\r\n <b-button type=\"submit\" size=\"sm\" variant=\"dark\">Go</b-button>\r\n </b-input-group-prepend>\r\n </b-input-group>\r\n <!--\r\n Query: {{model.query}}\r\n <br>\r\n <b-link to=\"/search?q=water\">water search 1</b-link>\r\n <b-link @click.prevent=\"search('water')\">water search 2</b-link>\r\n -->\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mt-4\">\r\n <b-col cols=\"12\" class=\"px-4\">\r\n <b-form-group label=\"Category Filter\" label-for=\"select-cat\">\r\n <b-form-select id=\"select-cat\" @change=\"submit('cat')\" placeholder=\"Search by Category\" v-model=\"model.catId\" :options=\"categories\"></b-form-select>\r\n </b-form-group>\r\n </b-col>\r\n </b-row>\r\n <b-row class=\"mt-2\">\r\n <b-col cols=\"12\" class=\"px-4\">\r\n <b-form-group label=\"Company Filter\" label-for=\"select-comp\">\r\n <b-form-select id=\"select-comp\" @change=\"submit('comp')\" v-model=\"model.compId\" :options=\"companies\"></b-form-select>\r\n </b-form-group>\r\n </b-col>\r\n </b-row>\r\n <b-row v-if=\"this.model.path != '/search'\" class=\"mt-2\">\r\n <b-col cols=\"12\" class=\"px-4\">\r\n <b-form-checkbox\r\n id=\"search-all-content\"\r\n v-model=\"searchAllContent\"\r\n name=\"search-all-content\"\r\n value=\"1\"\r\n unchecked-value=\"0\"\r\n >\r\n Include All Content\r\n </b-form-checkbox>\r\n <!-- <div>State: <strong>{{ searchAllContent }}</strong></div> -->\r\n </b-col>\r\n </b-row>\r\n\r\n <!-- <div class=\"px-3 py-2\">\r\n <b-form-group label=\"Backdrop variant\" label-for=\"backdrop-variant\">\r\n <b-form-select id=\"backdrop-variant\" v-model=\"variant\" :options=\"variants\"></b-form-select>\r\n </b-form-group>\r\n </div> -->\r\n </div>\r\n </b-form>\r\n </b-overlay>\r\n </b-sidebar>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\nlet data = {\r\n debug: false,\r\n loading: false,\r\n model: {path: '/search', catId: '0', compId: '0', query: ''},\r\n searchAllContent: '0',\r\n smallWords: [],\r\n categories: [],\r\n companies: [],\r\n bg_variant: 'light',\r\n text_variant: 'dark',\r\n variants: [\r\n 'transparent',\r\n 'white',\r\n 'light',\r\n 'dark',\r\n 'primary',\r\n 'secondary',\r\n 'success',\r\n 'danger',\r\n 'warning',\r\n 'info',\r\n ],\r\n categoriesTest: [\r\n {\r\n \"value\": '107',\r\n \"text\": \"Adhesives/Cements\"\r\n },\r\n {\r\n \"value\": '136',\r\n \"text\": \"Air Abrasion\"\r\n },\r\n {\r\n \"value\": '133',\r\n \"text\": \"Anesthesia\"\r\n }\r\n ],\r\n companiesTest: [\r\n {\r\n \"value\": '75',\r\n \"text\": \"Bisco\"\r\n },\r\n {\r\n \"value\": '105',\r\n \"text\": \"Brasseler USA\"\r\n },\r\n {\r\n \"value\": '89',\r\n \"text\": \"Centrix\"\r\n },\r\n {\r\n \"value\": '35',\r\n \"text\": \"Ceramir (Doxa Dental)\"\r\n },\r\n {\r\n \"value\": '99',\r\n \"text\": \"Clinician's Choice\"\r\n }\r\n ]\r\n}\r\n\r\n// category/company lists from\r\n// http://localhost:3000/api/search-items?s=2EE008DE-16BB-4F2B-AB02-5714848F9421\r\n\r\nexport default {\r\n name: \"SearchSidebar\",\r\n data() {\r\n return data\r\n },\r\n computed: {\r\n getSidebarLabel() {\r\n return (this.searchAllContent == '1') ? 'Search All Content' : this.model.label\r\n }\r\n },\r\n methods: {\r\n getTextFromValue(value, textArr) {\r\n // textArr is array of {value: '', text: ''}\r\n // use for instead of array.forEach due to short-circuit\r\n for(let ix=0; ix < textArr.length; ix++) {\r\n // console.log( `Testing ${ix}: value: ${value} arrVal: ${textArr[ix].value} arrText: ${textArr[ix].text}`)\r\n if (textArr[ix].value == value) { return textArr[ix].text }\r\n }\r\n return 'not found'\r\n },\r\n submit(searchType) { // searchType = query (default), cat, comp\r\n // console.log(`Searching: path: ${this.model.path} cid: ${this.model.catId} coid: ${this.model.compId} q: ${this.model.q}`)\r\n // alert(`Searching: searchType: ${searchType} q: ${this.model.q}`)\r\n let searchDisplay = null\r\n this.model.query = utils.safeSearch(this.model.query)\r\n if (searchType == 'cat') {\r\n this.model.compId = null\r\n this.model.query = null\r\n searchDisplay = `Category: ${this.getTextFromValue(this.model.catId, this.categories)}`\r\n }\r\n else if (searchType == 'comp') {\r\n this.model.catId = null\r\n this.model.query = null\r\n searchDisplay = `Company: ${this.getTextFromValue(this.model.compId, this.companies)}`\r\n }\r\n else { // query\r\n this.model.catId = null\r\n this.model.compId = null\r\n searchDisplay = this.model.query\r\n }\r\n this.$root.setSearchDisplay(searchDisplay)\r\n\r\n // If check box checked then search all content - not just filtered\r\n let path = (this.searchAllContent == \"0\") ? this.model.path : '/search'\r\n this.$router.push({ path: path, query: {cid: this.model.catId, coid: this.model.compId, q: this.model.query, j: (new Date).getTime() }})\r\n },\r\n // search(txt) {\r\n // this.$router.push(`/search?q=${txt}`)\r\n // },\r\n shown() { // when sidebar opened\r\n // console.log(`sidebar shown. path: ${this.$route.path} fullPath ${this.$route.fullPath}`)\r\n this.searchAllContent = \"0\"\r\n this.model.catId = null\r\n this.model.compId = null\r\n this.model.query = null\r\n this.$refs['search-query'].focus()\r\n },\r\n hidden() {\r\n // console.log(`sidebar hidden`)\r\n },\r\n },\r\n created() {\r\n if (this.categories.length === 0 || this.companies.length === 0) {\r\n this.loading = true\r\n service\r\n .getSearchItems()\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.smallWords = res.smallWords\r\n this.categories.push( { value: null, text: 'Filter by category' } )\r\n res.catList.forEach( row => {\r\n this.categories.push( { value: row.categoryID.toString(), text: row.categoryName } )\r\n })\r\n this.companies.push( { value: null, text: 'Filter by company' } )\r\n res.companyList.forEach( row => {\r\n this.companies.push( { value: row.companyID.toString(), text: row.companyName } )\r\n })\r\n } else {\r\n alert('Error loading filters.')\r\n }\r\n })\r\n .finally(() => this.loading = false)\r\n .catch(e => console.log(e));\r\n }\r\n },\r\n mounted() {\r\n EventBus.$on('search-sidebar', model => {\r\n // console.log(`Event: search-sidebar`)\r\n this.model = {...model} // clone\r\n this.model.query = utils.safeSearch(this.model.query)\r\n // sidebar opened via v-b-toggle in searchbar.vue\r\n })\r\n },\r\n beforeDestroy() {\r\n EventBus.$off('search-sidebar')\r\n }\r\n};\r\n</script>\r\n\r\n<style>\r\n /* Assigned to sidebar title. Needs to be qualified to override default. */\r\n .b-sidebar > .label-header {\r\n font-size: 1rem;\r\n }\r\n\r\n #div-search-sidebar {\r\n /* border: 1px solid red; */\r\n /* background-color: #f3f4f9; */\r\n margin: auto;\r\n }\r\n\r\n .sidebar-body {\r\n background-color: #f3f4f9;\r\n }\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/SearchSidebar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-sidebar',{attrs:{\"id\":\"sidebar-search\",\"title\":_vm.getSidebarLabel,\"header-class\":\"label-header\",\"bg-variant\":_vm.bg_variant,\"text-variant\":_vm.text_variant,\"body-class\":\"sidebar-body\",\"backdrop\":\"\",\"shadow\":\"lg\"},on:{\"shown\":_vm.shown}},[_c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submit('query')}}},[_c('div',{attrs:{\"id\":\"div-search-sidebar\"}},[_c('b-row',{staticClass:\"mt-2\"},[_c('b-col',{staticClass:\"px-4\",attrs:{\"cols\":\"12\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('b-form-input',{ref:\"search-query\",attrs:{\"id\":\"search-query\",\"type\":\"text\",\"placeholder\":\"Keyword Search\",\"autofocus\":\"\",\"autocomplete\":\"off\"},on:{\"focus\":function($event){_vm.model.query=null}},model:{value:(_vm.model.query),callback:function ($$v) {_vm.$set(_vm.model, \"query\", $$v)},expression:\"model.query\"}}),_vm._v(\" \"),_c('b-input-group-prepend',[_c('b-button',{attrs:{\"type\":\"submit\",\"size\":\"sm\",\"variant\":\"dark\"}},[_vm._v(\"Go\")])],1)],1)],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-4\"},[_c('b-col',{staticClass:\"px-4\",attrs:{\"cols\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Category Filter\",\"label-for\":\"select-cat\"}},[_c('b-form-select',{attrs:{\"id\":\"select-cat\",\"placeholder\":\"Search by Category\",\"options\":_vm.categories},on:{\"change\":function($event){return _vm.submit('cat')}},model:{value:(_vm.model.catId),callback:function ($$v) {_vm.$set(_vm.model, \"catId\", $$v)},expression:\"model.catId\"}})],1)],1)],1),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-2\"},[_c('b-col',{staticClass:\"px-4\",attrs:{\"cols\":\"12\"}},[_c('b-form-group',{attrs:{\"label\":\"Company Filter\",\"label-for\":\"select-comp\"}},[_c('b-form-select',{attrs:{\"id\":\"select-comp\",\"options\":_vm.companies},on:{\"change\":function($event){return _vm.submit('comp')}},model:{value:(_vm.model.compId),callback:function ($$v) {_vm.$set(_vm.model, \"compId\", $$v)},expression:\"model.compId\"}})],1)],1)],1),_vm._v(\" \"),(this.model.path != '/search')?_c('b-row',{staticClass:\"mt-2\"},[_c('b-col',{staticClass:\"px-4\",attrs:{\"cols\":\"12\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"search-all-content\",\"name\":\"search-all-content\",\"value\":\"1\",\"unchecked-value\":\"0\"},model:{value:(_vm.searchAllContent),callback:function ($$v) {_vm.searchAllContent=$$v},expression:\"searchAllContent\"}},[_vm._v(\"\\n Include All Content\\n \")])],1)],1):_vm._e()],1)])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f7f8ab10\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SearchSidebar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f7f8ab10\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SearchSidebar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SearchSidebar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SearchSidebar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f7f8ab10\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SearchSidebar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SearchSidebar.vue\n// module id = null\n// module chunks = ","<template>\r\n <div :class=\"alignment\" style=\"margin-top: 5px;\">\r\n <b-button size=\"sm\" @click.stop=\"showModal\">Verification of Participation</b-button>\r\n <b-modal v-model=\"modalFlag\" ok-only>\r\n <div class=\"txt-cert-title1\">{{ classObj.courseNumberCADentalBoard }}</div>\r\n <div class=\"text-center\">\r\n <img src=\"@/art/viva_logo_ce.jpg\" class=\"fluid\" />\r\n <div class=\"txt-cert-title1\">Viva Learning CE is the approved CE provider</div>\r\n <div class=\"txt-cert-title2\">Verification of Participation</div>\r\n </div>\r\n <b-row align-h=\"center\" class=\"mt-2\">\r\n <b-col cols=\"12\" lg=\"8\">\r\n <div class=\"div-cert-body\">\r\n <div>\r\n <b>Student's Name:</b> {{studentData.name}}\r\n <br><b>Course Title:</b> {{classObj.className}}\r\n <span v-if=\"classObj.speakerName !== null\"><br><b>Lecturer:</b> {{classObj.speakerName}}</span>\r\n <br><b>Date Completed:</b> {{studentData.examDateLocal | prettyDate}}\r\n <br><b>Method:</b> Electronically Mediated\r\n <!-- <br><b>Location:</b> Internet-based -->\r\n <br><b>Credit type:</b> {{studentData.ceTypeId | prettyCEType}}\r\n <br><b>Credit hour(s) earned:</b> {{studentData.credits}}\r\n <div v-if=\"classObj.agdCode\"><b>AGD Subject Code:</b> {{classObj.agdCode}}</div>\r\n <br><b>Description and Learning Objectives:</b>\r\n <br><span v-bind:inner-html.prop=\"this.classObj.description | nl2br\"></span>\r\n <!-- <br><span v-html=\"classObj.description\"></span> -->\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <div class=\"mt-2 div-cert-footer\">\r\n <p>Viva Learning CE is in good standing with AGD PACE:</p>\r\n\r\n <p>\r\n <b>AGD PACE Approved Provider # 217544 through 10/31/2025.</b> The formal continuing education programs of this program provider are accepted by the AGD for Fellowship/Mastership and membership maintenance credit. Approval does not imply acceptance by a state or provincial board of dentistry or AGD endorsement. On a weekly basis your CE credits are automatically submitted to the AGD (requires AGD number entered in your Edit Profile page).\r\n </p>\r\n\r\n <p>\r\n <b>CPD for UK Participants:</b> This Verification of Participation is designed to satisfy GDC format related to CPD activity for UK participants.\r\n </p>\r\n </div>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n <b-alert v-model=\"success\" key=\"success-box\" show variant=\"success\" dismissible class=\"mt-2\">\r\n Check your email inbox for the Verification of Participation certificate.\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <template v-slot:modal-footer>\r\n <div class=\"w-100 text-right\">\r\n <b-overlay :show=\"busy\">\r\n <b-button\r\n variant=\"primary\"\r\n size=\"sm\"\r\n @click=\"sendCert\"\r\n class=\"mr-3\"\r\n >\r\n Email to Me\r\n </b-button>\r\n <b-button\r\n variant=\"primary\"\r\n size=\"sm\"\r\n @click.stop.prevent=\"hideModal\"\r\n >\r\n Close\r\n </b-button>\r\n </b-overlay>\r\n </div>\r\n </template>\r\n </b-modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\n// Embedded due to init.\r\n// var data = {\r\n// debug: false,\r\n// };\r\n\r\nexport default {\r\n name: \"CertButton\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n busy: false,\r\n success: false, // cert sent\r\n modalFlag: false,\r\n classObj: null,\r\n studentData: null\r\n }\r\n },\r\n props: {\r\n c: { // classObj object\r\n type: Object,\r\n default: {}\r\n },\r\n s: { // studentData object\r\n type: Object,\r\n default: {}\r\n },\r\n alignment: { // bootstrap alignment: text-left, text-right, text-center\r\n type: String,\r\n default: 'text-center'\r\n }\r\n },\r\n computed: { },\r\n methods: {\r\n showModal() {\r\n this.busy = false\r\n this.success = false\r\n this.error = false\r\n this.errorMsg = null\r\n this.modalFlag = true\r\n },\r\n hideModal() {\r\n this.modalFlag = false\r\n this.busy = false\r\n this.success = false\r\n this.error = false\r\n this.errorMsg = null\r\n },\r\n sendCert() {\r\n this.busy = true\r\n this.success = false\r\n service\r\n .sendCert(this.studentData.hash, this.classObj.classHash, this.classObj.podcastHash)\r\n .then(res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.success = true\r\n } else {\r\n this.error = true\r\n this.errorMsg = res.errorMsg\r\n }\r\n })\r\n .finally(() => this.busy = false)\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n // console.log(`Created: cid: ${this.cid} q: ${this.q} `)\r\n this.classObj = this.c || {status: false} // represents class or podcast\r\n if (this.classObj) {\r\n // Merge in the optional CA Dental Board fields if not provided.\r\n let optionalFields = { isCADentalBoard: false, courseNumberCADentalBoard: null }\r\n this.classObj = {...optionalFields, ...this.classObj} // fields in classObj override.\r\n }\r\n this.studentData = this.s || {status: false, hash: null, name: null, credits: 0, ceTypeId: 0} // student data\r\n },\r\n mounted() {\r\n this.busy = false\r\n this.success = false\r\n },\r\n beforeDestroy() {}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n .txt-cert-title1 {\r\n font-size: .9rem;\r\n font-weight: bold;\r\n }\r\n .txt-cert-title2 {\r\n font-size: 1.2rem;\r\n font-weight: bold;\r\n }\r\n .div-cert-body {\r\n text-align: left;\r\n font-size: .9rem;\r\n }\r\n .div-cert-footer {\r\n text-align: left;\r\n font-size: .6rem;\r\n }\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/CertButton.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.alignment,staticStyle:{\"margin-top\":\"5px\"}},[_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showModal($event)}}},[_vm._v(\"Verification of Participation\")]),_vm._v(\" \"),_c('b-modal',{attrs:{\"ok-only\":\"\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"w-100 text-right\"},[_c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('b-button',{staticClass:\"mr-3\",attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":_vm.sendCert}},[_vm._v(\"\\n Email to Me\\n \")]),_vm._v(\" \"),_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.hideModal($event)}}},[_vm._v(\"\\n Close\\n \")])],1)],1)]},proxy:true}]),model:{value:(_vm.modalFlag),callback:function ($$v) {_vm.modalFlag=$$v},expression:\"modalFlag\"}},[_c('div',{staticClass:\"txt-cert-title1\"},[_vm._v(_vm._s(_vm.classObj.courseNumberCADentalBoard))]),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('img',{staticClass:\"fluid\",attrs:{\"src\":require(\"@/art/viva_logo_ce.jpg\")}}),_vm._v(\" \"),_c('div',{staticClass:\"txt-cert-title1\"},[_vm._v(\"Viva Learning CE is the approved CE provider\")]),_vm._v(\" \"),_c('div',{staticClass:\"txt-cert-title2\"},[_vm._v(\"Verification of Participation\")])]),_vm._v(\" \"),_c('b-row',{staticClass:\"mt-2\",attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('div',{staticClass:\"div-cert-body\"},[_c('div',[_c('b',[_vm._v(\"Student's Name:\")]),_vm._v(\" \"+_vm._s(_vm.studentData.name)+\"\\n \"),_c('br'),_c('b',[_vm._v(\"Course Title:\")]),_vm._v(\" \"+_vm._s(_vm.classObj.className)+\"\\n \"),(_vm.classObj.speakerName !== null)?_c('span',[_c('br'),_c('b',[_vm._v(\"Lecturer:\")]),_vm._v(\" \"+_vm._s(_vm.classObj.speakerName))]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b',[_vm._v(\"Date Completed:\")]),_vm._v(\" \"+_vm._s(_vm._f(\"prettyDate\")(_vm.studentData.examDateLocal))+\"\\n \"),_c('br'),_c('b',[_vm._v(\"Method:\")]),_vm._v(\" Electronically Mediated\\n \"),_vm._v(\" \"),_c('br'),_c('b',[_vm._v(\"Credit type:\")]),_vm._v(\" \"+_vm._s(_vm._f(\"prettyCEType\")(_vm.studentData.ceTypeId))+\"\\n \"),_c('br'),_c('b',[_vm._v(\"Credit hour(s) earned:\")]),_vm._v(\" \"+_vm._s(_vm.studentData.credits)+\"\\n \"),(_vm.classObj.agdCode)?_c('div',[_c('b',[_vm._v(\"AGD Subject Code:\")]),_vm._v(\" \"+_vm._s(_vm.classObj.agdCode))]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b',[_vm._v(\"Description and Learning Objectives:\")]),_vm._v(\" \"),_c('br'),_c('span',{domProps:{\"innerHTML\":_vm._f(\"nl2br\")(this.classObj.description)}})])])])],1),_vm._v(\" \"),_c('div',{staticClass:\"mt-2 div-cert-footer\"},[_c('p',[_vm._v(\"Viva Learning CE is in good standing with AGD PACE:\")]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(\"AGD PACE Approved Provider # 217544 through 10/31/2025.\")]),_vm._v(\" The formal continuing education programs of this program provider are accepted by the AGD for Fellowship/Mastership and membership maintenance credit. Approval does not imply acceptance by a state or provincial board of dentistry or AGD endorsement. On a weekly basis your CE credits are automatically submitted to the AGD (requires AGD number entered in your Edit Profile page).\\n \")]),_vm._v(\" \"),_c('p',[_c('b',[_vm._v(\"CPD for UK Participants:\")]),_vm._v(\" This Verification of Participation is designed to satisfy GDC format related to CPD activity for UK participants.\\n \")])]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")]),_vm._v(\" \"),_c('b-alert',{key:\"success-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"success\",\"dismissible\":\"\"},model:{value:(_vm.success),callback:function ($$v) {_vm.success=$$v},expression:\"success\"}},[_vm._v(\"\\n Check your email inbox for the Verification of Participation certificate.\\n \")])],1)])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a6c1a1f4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CertButton.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a6c1a1f4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CertButton.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CertButton.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CertButton.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a6c1a1f4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CertButton.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-a6c1a1f4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CertButton.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"busy\">\r\n <div :class=\"alignment\">\r\n <b-button v-if=\"queueId == 0\" size='sm' variant=\"outline-secondary\" @click.stop.prevent=\"addQueue()\" class=\"mt-2\">\r\n <b-icon-plus></b-icon-plus>\r\n </b-button>\r\n <b-button v-if=\"queueId != 0\" variant=\"outline-secondary\" size='sm' @click.stop.prevent=\"removeQueue()\" class=\"mt-2\">\r\n <b-icon-dash></b-icon-dash>\r\n </b-button>\r\n </div>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\n// Embedded due to init.\r\n// var data = {\r\n// debug: false,\r\n// };\r\n\r\nexport default {\r\n name: \"QueueButton\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n busy: false,\r\n classHash: null,\r\n studentHash: null,\r\n queueId: 0\r\n }\r\n },\r\n props: {\r\n c: { // class hash object\r\n type: String,\r\n default: null\r\n },\r\n s: { // student hash\r\n type: String,\r\n default: null\r\n },\r\n q: { // classQueue.classQueueId\r\n type: [Number,String],\r\n default: '0'\r\n },\r\n alignment: { // bootstrap alignment: text-left, text-right, text-center\r\n type: String,\r\n default: 'text-center'\r\n }\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n addQueue() {\r\n this.busy = true\r\n service\r\n .saveQueue(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n console.log(`back from saveQueue`)\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n this.queueId = res.queueId\r\n }\r\n else {\r\n console.log(`Error on return from saveQueue. ${res.status}`)\r\n this.error = true\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n // console.log(`finally...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n console.log(e);\r\n })\r\n },\r\n removeQueue() {\r\n // console.log(`Removing seat: ${hash}`)\r\n this.busy = true\r\n service\r\n .removeQueue(this.classHash, this.studentHash)\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n if (res.classObj.status) {\r\n this.queueId = 0\r\n this.$emit('remove-class', res.classObj.hash)\r\n }\r\n }\r\n else {\r\n this.error = true\r\n console.log(`Error from removeQueue: ${res.status}`)\r\n // this.errorMsg = \"Error: Unable to remove class.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.busy = false\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error trapped while removing class.\"\r\n console.log(e);\r\n })\r\n },\r\n },\r\n created() {\r\n // console.log(`Created: cid: ${this.cid} q: ${this.q} `)\r\n this.classHash = this.c || null\r\n this.studentHash = this.s || null\r\n this.queueId = parseInt(this.q.toString()) || 0\r\n // console.log(`c: ${this.c} s: ${this.s} q: ${this.q}`)\r\n },\r\n mounted() {},\r\n beforeDestroy() {}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/QueueButton.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.busy}},[_c('div',{class:_vm.alignment},[(_vm.queueId == 0)?_c('b-button',{staticClass:\"mt-2\",attrs:{\"size\":\"sm\",\"variant\":\"outline-secondary\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.addQueue()}}},[_c('b-icon-plus')],1):_vm._e(),_vm._v(\" \"),(_vm.queueId != 0)?_c('b-button',{staticClass:\"mt-2\",attrs:{\"variant\":\"outline-secondary\",\"size\":\"sm\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.removeQueue()}}},[_c('b-icon-dash')],1):_vm._e()],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1fc6cc7f\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/QueueButton.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1fc6cc7f\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./QueueButton.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./QueueButton.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./QueueButton.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1fc6cc7f\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./QueueButton.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-1fc6cc7f\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/QueueButton.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <b-row align-h=\"center\" class=\"mt-2\">\r\n <b-col v-if=\"bannerCount == 1\" cols=\"12\" md=\"8\" lg=\"6\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(0)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n </b-col>\r\n <b-col v-else cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <div class=\"d-block d-sm-none\">\r\n <b-img :src=\"getBanner(0)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-sm-block d-md-none\">\r\n <b-img :src=\"getBanner(2)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-md-block d-lg-none\">\r\n <b-img :src=\"getBanner(1)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-lg-block d-xl-none\">\r\n <b-img :src=\"getBanner(2)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-xl-block\">\r\n <b-img :src=\"getBanner(3)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <b-modal v-model=\"showModal\" @show=\"showEvent\" @hidden=\"hiddenEvent\">\r\n <b-overlay :show=\"busy\">\r\n <div v-if=\"!submitted\">\r\n <div v-if=\"!haveEmail\"> <!-- prompt for email -->\r\n\r\n <b-form @submit.stop.prevent=\"submitEmail\">\r\n\r\n <b-form-group label=\"\" label-for=\"email\" label-size=\"sm\" class=\"mb-2\" label-class=\"mb-0 pt-2 font-weight-bold\">\r\n <b-input-group class=\"mb-2\">\r\n <b-input-group-prepend is-text>\r\n <b-icon icon=\"envelope\"></b-icon>\r\n </b-input-group-prepend>\r\n <b-form-input\r\n id=\"email\"\r\n v-model.trim.lazy=\"$v.form.email.$model\"\r\n type=\"email\"\r\n placeholder=\"Your email address\"\r\n :state=\"validateState('email')\"\r\n aria-describedby=\"support-email-feedback\"\r\n ></b-form-input>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.required\">Email is required.</b-form-invalid-feedback>\r\n <b-form-invalid-feedback v-if=\"!$v.form.email.email\">Enter valid email address.</b-form-invalid-feedback>\r\n </b-input-group>\r\n </b-form-group>\r\n\r\n <transition name=\"fade\" mode=\"out-in\">\r\n <div>\r\n <b-alert v-model=\"error\" key=\"error-box\" show variant=\"danger\" dismissible class=\"mt-2\">\r\n {{errorMsg}}\r\n </b-alert>\r\n </div>\r\n </transition>\r\n\r\n <div class=\"text-center\">\r\n <b-button type=\"submit\">{{mobileAd.buttonText}}</b-button>\r\n </div>\r\n </b-form>\r\n\r\n </div>\r\n <div v-else> <!-- have email -->\r\n <!-- <div>\r\n {{email}}\r\n </div> -->\r\n <div class=\"text-center\">\r\n <b-button @click=\"submit\">{{mobileAd.buttonText}}</b-button>\r\n </div>\r\n </div>\r\n <div class=\"mt-2\">\r\n <b-img :src=\"getBanner(0)\" fluid></b-img>\r\n </div>\r\n <div class=\"mt-2\">\r\n {{mobileAd.blurb}}\r\n </div>\r\n </div>\r\n <div v-else> <!-- show response -->\r\n <div>\r\n <h3>{{mobileAd.confirmationMessageTitle}}</h3>\r\n </div>\r\n <div>\r\n {{mobileAd.confirmationMessage}}\r\n </div>\r\n <div class=\"text-center mt-2\">\r\n <b-button @click=\"showModal=false\">Close</b-button>\r\n </div>\r\n </div>\r\n </b-overlay>\r\n <template v-slot:modal-footer> <!-- empty --></template>\r\n </b-modal>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nimport { validationMixin } from 'vuelidate'\r\nimport { required, email } from 'vuelidate/lib/validators'\r\n\r\nexport default {\r\n name: \"MobileAd\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: '',\r\n showModal: false,\r\n busy: true,\r\n submitted: false,\r\n haveMobileAd: false,\r\n mobileBanners: null,\r\n bannerCount: 0,\r\n mobileAd: {buttonText: 'Click here', blurb: 'Text forthcoming'},\r\n studentHash: this.$root.getToken(),\r\n email: this.$root.getStudentEmail(),\r\n form: {\r\n email: null\r\n }\r\n }\r\n },\r\n props: {\r\n mb: { // mobileAd banner object\r\n type: Object\r\n },\r\n s: { // studentHash\r\n type: String,\r\n default: null\r\n },\r\n },\r\n mixins: [validationMixin],\r\n validations: {\r\n form: {\r\n email: {\r\n required,\r\n email\r\n }\r\n }\r\n },\r\n computed: {\r\n getModalName() {\r\n let x = 'mobilead-' + this.mobileBanners.adId\r\n // console.log(`getModalName: ${x}`)\r\n return x\r\n },\r\n haveEmail() {\r\n return (this.email && this.email.length !== 0)\r\n }\r\n },\r\n methods: {\r\n validateState(name) {\r\n // console.log(`name: ${name}`)\r\n const { $dirty, $error } = this.$v.form[name]\r\n return $dirty ? !$error : null;\r\n },\r\n getBanner(ix) {\r\n // 0: small portrait\r\n // 1: small landscape\r\n // 2: large portrait\r\n // 3: large landscape\r\n return this.mobileBanners.adUrls[ix]\r\n },\r\n showEvent(e) {\r\n if (this.haveMobileAd) return\r\n this.busy = true\r\n service\r\n .getMobileAd(this.mobileBanners.adId, this.studentHash)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status && res.rowCount !== 0) {\r\n this.mobileAd = res.data[0]\r\n this.haveMobileAd = true\r\n }\r\n else {\r\n console.log('Error! getMobileAd()')\r\n }\r\n })\r\n .finally(() => this.busy = false)\r\n .catch(e => console.log(e))\r\n },\r\n hiddenEvent() {\r\n // console.log('modal hidden')\r\n this.submitted = false\r\n this.error = false\r\n this.$v.form.$reset()\r\n // Remove supplied email addres sif student not logged in.\r\n if (this.studentHash.length === 0) this.email = null\r\n },\r\n submitEmail(e) {\r\n this.$v.form.$touch()\r\n if (this.$v.form.$anyError) {\r\n console.log(`ERROR!!`)\r\n this.errorMsg = 'Correct errors and resubmit.'\r\n this.error = true\r\n return\r\n }\r\n this.busy = true\r\n this.email = this.form.email\r\n this.form.email = null\r\n this.submit(e)\r\n },\r\n submit(e) {\r\n this.busy = true\r\n service\r\n .submitMobileAd(this.mobileBanners.adId, this.studentHash, this.email)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (res.status) {\r\n this.submitted = true\r\n }\r\n else {\r\n console.log('Error! getMobileAd()')\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n })\r\n .catch(e => console.log(e))\r\n }\r\n },\r\n created() {\r\n // console.log(this.mb)\r\n this.mobileBanners = this.mb || {adId: 0, adUrls: []}\r\n this.bannerCount = this.mobileBanners.adUrls.length\r\n },\r\n mounted() {},\r\n beforeDestroy() {}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/MobileAd.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-row',{staticClass:\"mt-2\",attrs:{\"align-h\":\"center\"}},[(_vm.bannerCount == 1)?_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"lg\":\"6\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1)]):_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('div',{staticClass:\"d-block d-sm-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-sm-block d-md-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(2),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-md-block d-lg-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(1),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-lg-block d-xl-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(2),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-xl-block\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(3),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1)])])],1),_vm._v(\" \"),_c('b-modal',{on:{\"show\":_vm.showEvent,\"hidden\":_vm.hiddenEvent},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_vm._v(\" \")]},proxy:true}]),model:{value:(_vm.showModal),callback:function ($$v) {_vm.showModal=$$v},expression:\"showModal\"}},[_c('b-overlay',{attrs:{\"show\":_vm.busy}},[(!_vm.submitted)?_c('div',[(!_vm.haveEmail)?_c('div',[_c('b-form',{on:{\"submit\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.submitEmail($event)}}},[_c('b-form-group',{staticClass:\"mb-2\",attrs:{\"label\":\"\",\"label-for\":\"email\",\"label-size\":\"sm\",\"label-class\":\"mb-0 pt-2 font-weight-bold\"}},[_c('b-input-group',{staticClass:\"mb-2\"},[_c('b-input-group-prepend',{attrs:{\"is-text\":\"\"}},[_c('b-icon',{attrs:{\"icon\":\"envelope\"}})],1),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Your email address\",\"state\":_vm.validateState('email'),\"aria-describedby\":\"support-email-feedback\"},model:{value:(_vm.$v.form.email.$model),callback:function ($$v) {_vm.$set(_vm.$v.form.email, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.form.email.$model\"}}),_vm._v(\" \"),(!_vm.$v.form.email.required)?_c('b-form-invalid-feedback',[_vm._v(\"Email is required.\")]):_vm._e(),_vm._v(\" \"),(!_vm.$v.form.email.email)?_c('b-form-invalid-feedback',[_vm._v(\"Enter valid email address.\")]):_vm._e()],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',[_c('b-alert',{key:\"error-box\",staticClass:\"mt-2\",attrs:{\"show\":\"\",\"variant\":\"danger\",\"dismissible\":\"\"},model:{value:(_vm.error),callback:function ($$v) {_vm.error=$$v},expression:\"error\"}},[_vm._v(\"\\n \"+_vm._s(_vm.errorMsg)+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"text-center\"},[_c('b-button',{attrs:{\"type\":\"submit\"}},[_vm._v(_vm._s(_vm.mobileAd.buttonText))])],1)],1)],1):_c('div',[_c('div',{staticClass:\"text-center\"},[_c('b-button',{on:{\"click\":_vm.submit}},[_vm._v(_vm._s(_vm.mobileAd.buttonText))])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"mt-2\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"mt-2\"},[_vm._v(\"\\n \"+_vm._s(_vm.mobileAd.blurb)+\"\\n \")])]):_c('div',[_c('div',[_c('h3',[_vm._v(_vm._s(_vm.mobileAd.confirmationMessageTitle))])]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.mobileAd.confirmationMessage)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-2\"},[_c('b-button',{on:{\"click\":function($event){_vm.showModal=false}}},[_vm._v(\"Close\")])],1)])])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-71ff39b5\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/MobileAd.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-71ff39b5\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MobileAd.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MobileAd.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MobileAd.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-71ff39b5\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./MobileAd.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-71ff39b5\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/MobileAd.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n <b-row align-h=\"center\" class=\"mt-2\">\r\n <div v-if=\"bannerCount == 1\">\r\n <b-col cols=\"12\" md=\"8\" lg=\"6\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(0)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n </b-col>\r\n </div>\r\n <div v-else>\r\n <b-col cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <div class=\"d-block d-sm-none\">\r\n <b-img :src=\"getBanner(0)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-sm-block d-md-none\">\r\n <b-img :src=\"getBanner(2)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-md-block d-lg-none\">\r\n <b-img :src=\"getBanner(1)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-lg-block d-xl-none\">\r\n <b-img :src=\"getBanner(2)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n <div class=\"d-none d-xl-block\">\r\n <b-img :src=\"getBanner(3)\" fluid @click=\"showModal=true\"></b-img>\r\n </div>\r\n </div>\r\n </b-col>\r\n </div>\r\n </b-row>\r\n <div v-if=\"debug\" class=\"text-center font-weight-bold\">\r\n <!-- Grid sizes: https://getbootstrap.com/docs/4.4/layout/overview/ -->\r\n <!-- Display Utilities: https://getbootstrap.com/docs/4.4/utilities/display/ -->\r\n <div class=\"d-block d-sm-none\">XS</div>\r\n <div class=\"d-none d-sm-block d-md-none\">SM</div>\r\n <div class=\"d-none d-md-block d-lg-none\">MD</div>\r\n <div class=\"d-none d-lg-block d-xl-none\">LG</div>\r\n <div class=\"d-none d-xl-block\">XL</div>\r\n </div>\r\n <b-row v-if=\"debug\" align-h=\"center\" class=\"mt-2\">\r\n <b-col cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(0)\" fluid></b-img>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(1)\" fluid></b-img>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(2)\" fluid></b-img>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <div style=\"margin: 4px 8px 0px 0px;\">\r\n <b-img :src=\"getBanner(3)\" fluid></b-img>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\n\r\nexport default {\r\n name: \"MobileAdTest\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: '',\r\n busy: true,\r\n submitted: false,\r\n haveMobileAd: false,\r\n mobileBanners: null,\r\n bannerCount: 0,\r\n mobileAd: {buttonText: 'Click here', blurb: 'Text forthcoming'},\r\n studentHash: this.$root.getToken(),\r\n }\r\n },\r\n props: {\r\n mb: { // mobileAd banner object\r\n type: Object\r\n },\r\n },\r\n computed: {\r\n},\r\n methods: {\r\n getBanner(ix) {\r\n return this.mobileBanners.adUrls[ix]\r\n }\r\n },\r\n created() {\r\n // console.log(this.mb)\r\n this.mobileBanners = this.mb || {adId: 0, adUrls: []}\r\n this.bannerCount = this.mobileBanners.adUrls.length\r\n },\r\n mounted() {},\r\n beforeDestroy() {}\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n .txt-cert-title1 {\r\n font-size: .9rem;\r\n font-weight: bold;\r\n }\r\n .txt-cert-title2 {\r\n font-size: 1.2rem;\r\n font-weight: bold;\r\n }\r\n .div-cert-body {\r\n text-align: left;\r\n font-size: .9rem;\r\n }\r\n .div-cert-footer {\r\n text-align: left;\r\n font-size: .6rem;\r\n }\r\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/MobileAdTest.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-row',{staticClass:\"mt-2\",attrs:{\"align-h\":\"center\"}},[(_vm.bannerCount == 1)?_c('div',[_c('b-col',{attrs:{\"cols\":\"12\",\"md\":\"8\",\"lg\":\"6\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1)])],1):_c('div',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('div',{staticClass:\"d-block d-sm-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-sm-block d-md-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(2),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-md-block d-lg-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(1),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-lg-block d-xl-none\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(2),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-xl-block\"},[_c('b-img',{attrs:{\"src\":_vm.getBanner(3),\"fluid\":\"\"},on:{\"click\":function($event){_vm.showModal=true}}})],1)])])],1)]),_vm._v(\" \"),(_vm.debug)?_c('div',{staticClass:\"text-center font-weight-bold\"},[_c('div',{staticClass:\"d-block d-sm-none\"},[_vm._v(\"XS\")]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-sm-block d-md-none\"},[_vm._v(\"SM\")]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-md-block d-lg-none\"},[_vm._v(\"MD\")]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-lg-block d-xl-none\"},[_vm._v(\"LG\")]),_vm._v(\" \"),_c('div',{staticClass:\"d-none d-xl-block\"},[_vm._v(\"XL\")])]):_vm._e(),_vm._v(\" \"),(_vm.debug)?_c('b-row',{staticClass:\"mt-2\",attrs:{\"align-h\":\"center\"}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(0),\"fluid\":\"\"}})],1)]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(1),\"fluid\":\"\"}})],1)]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(2),\"fluid\":\"\"}})],1)]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticStyle:{\"margin\":\"4px 8px 0px 0px\"}},[_c('b-img',{attrs:{\"src\":_vm.getBanner(3),\"fluid\":\"\"}})],1)])],1):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-652952e8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/MobileAdTest.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-652952e8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./MobileAdTest.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MobileAdTest.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./MobileAdTest.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-652952e8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./MobileAdTest.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-652952e8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/MobileAdTest.vue\n// module id = null\n// module chunks = ","<template>\r\n <div>\r\n\r\n <!-- Featured Class -->\r\n <div v-if=\"featuredClass !== null\">\r\n <b-row class=\"mt-2 mb-2 pointer\" @click=\"gotoFeaturedClass()\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"featuredClass.photo\" />\r\n <div class=\"text-center completed\">FEATURED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{featuredClass.className}}</div>\r\n <div class=\"class-details\">\r\n {{featuredClass.name}}\r\n <br>Sponsor: {{featuredClass.companyName}}\r\n <br><!-- {{featuredClass.releaseDateUTC | prettyDate}} - -->{{featuredClass.credits}} CEU (Self-Study)\r\n </div>\r\n <div class=\"mt-2\" v-if=\"false\">\r\n <b-button :to=\"{ path: '/classroom/'+featuredClass.hash }\">Enter Classroom</b-button>\r\n </div>\r\n </b-col>\r\n <b-col cols=\"12\">\r\n <div class=\"mt-2 class-details\" style=\"width:95%;\">{{featuredClass.blurb}}</div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- Featured Podcast -->\r\n <div v-if=\"featuredPodcast !== null\">\r\n <b-row class=\"mt-2 mb-2 pointer\" @click=\"gotoFeaturedPodcast()\">\r\n <b-col cols=\"4\" class=\"text-center\">\r\n <b-img fluid v-bind:src=\"featuredPodcast.photo\" />\r\n <div class=\"text-center completed\">FEATURED</div>\r\n </b-col>\r\n <b-col cols=\"8\" style=\"margin-left: -20px;\">\r\n <div class=\"class-title\">{{featuredPodcast.title}}</div>\r\n <div class=\"class-details\">\r\n {{featuredPodcast.speakerName}}\r\n <br>Sponsor: {{featuredPodcast.companyName}}\r\n <br v-if=\"featuredPodcast.credits > 0\"><!-- {{featuredPodcast.releaseDateUTC | prettyDate}} - --><span v-if=\"featuredPodcast.credits > 0\">{{featuredPodcast.credits}} CEU (Self Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{featuredPodcast.durationSec | prettySeconds}}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- Featured Blog Post -->\r\n <div v-if=\"featuredBlog !== null\">\r\n <b-row class=\"mt-2 mb-2 pointer\" @click=\"gotoFeaturedBlogPost()\">\r\n <b-col cols=\"12\">\r\n <div class=\"class-title\">\r\n <b-icon icon=\"caret-right-fill\"></b-icon> <span v-if=\"featuredBlog.featured\" class=\"txt-blog-featured\">Featured</span>{{ featuredBlog.title }}\r\n </div>\r\n <div class=\"class-details\">\r\n {{ featuredBlog.blurb }}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\n/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport constants from \"@/config/constants\"\r\n\r\nexport default {\r\n name: \"VpFeaturedContent\",\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: '',\r\n busy: true,\r\n submitted: false,\r\n studentHash: this.$root.getToken(),\r\n featuredClass: null,\r\n featuredPodcast: null,\r\n featuredBlog: null,\r\n featuredHash: null,\r\n }\r\n },\r\n props: {\r\n fc: { // featured class\r\n type: Object,\r\n default: null\r\n },\r\n fp: { // featured podcast\r\n type: Object,\r\n default: null\r\n },\r\n fb: { // featured blog\r\n type: Object,\r\n default: null\r\n },\r\n fh: { // VpAdFeaturedContent.hash\r\n type: String,\r\n default: null\r\n }\r\n },\r\n computed: {\r\n\r\n },\r\n methods: {\r\n gotoClass(hash) {\r\n this.$router.push(`/classroom/${hash}`)\r\n },\r\n gotoPodcast(ps,p) { // podcastShowHash, podcastHash\r\n this.$router.push(`/podcast/${ps}/${p}`)\r\n },\r\n gotoBlogPost(blogId) {\r\n this.$router.push(`/blog-post/${blogId}`)\r\n },\r\n gotoFeaturedClass() {\r\n this.busy = true\r\n service\r\n .logFeaturedContentClick(this.studentHash, constants.VPAD_SLOT_TYPE.VPAD_FEATURED_CLASS, this.featuredHash)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (!res.status) {\r\n console.log('Error Class! logFeaturedContentClick()')\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n this.gotoClass(this.featuredClass.hash)\r\n })\r\n .catch(e => console.log(e))\r\n },\r\n gotoFeaturedPodcast() { // podcastShowHash, podcastHash\r\n this.busy = true\r\n service\r\n .logFeaturedContentClick(this.studentHash, constants.VPAD_SLOT_TYPE.VPAD_FEATURED_PODCAST, this.featuredHash)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (!res.status) {\r\n console.log('Error Podcast! logFeaturedContentClick()')\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n this.gotoPodcast(this.featuredPodcast.podcastShowHash, this.featuredPodcast.hash)\r\n })\r\n .catch(e => console.log(e))\r\n },\r\n gotoFeaturedBlogPost() {\r\n this.busy = true\r\n service\r\n .logFeaturedContentClick(this.studentHash, constants.VPAD_SLOT_TYPE.VPAD_FEATURED_BLOG, this.featuredHash)\r\n .then(res => {\r\n if (this.debug) console.log(res);\r\n if (!res.status) {\r\n console.log('Error Blog! logFeaturedContentClick()')\r\n }\r\n })\r\n .finally(() => {\r\n this.busy = false\r\n this.gotoBlogPost(this.featuredBlog.id)\r\n })\r\n .catch(e => console.log(e))\r\n },\r\n },\r\n created() {\r\n // console.log(this.mb)\r\n this.featuredClass = this.fc || null\r\n this.featuredPodcast = this.fp || null\r\n this.featuredBlog = this.fb || null\r\n this.featuredHash = this.fh || null\r\n console.log(`vpfeaturedcontent hash: ${this.featuredHash}`)\r\n },\r\n mounted() {\r\n // console.log('vpfeaturedcontent mounted')\r\n },\r\n beforeDestroy() {\r\n // console.log('vpfeaturedcontent beforeDestroy')\r\n }\r\n}\r\n</script>\r\n\r\n\r\n<style scoped>\r\n\r\n\r\n</style>\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/VpFeaturedContent.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.featuredClass !== null)?_c('div',[_c('b-row',{staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoFeaturedClass()}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.featuredClass.photo}}),_vm._v(\" \"),_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"FEATURED\")])],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.featuredClass.className))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.featuredClass.name)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(_vm.featuredClass.companyName)+\"\\n \"),_c('br'),_vm._v(_vm._s(_vm.featuredClass.credits)+\" CEU (Self-Study)\\n \")]),_vm._v(\" \"),(false)?_c('div',{staticClass:\"mt-2\"},[_c('b-button',{attrs:{\"to\":{ path: '/classroom/'+_vm.featuredClass.hash }}},[_vm._v(\"Enter Classroom\")])],1):_vm._e()]),_vm._v(\" \"),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"mt-2 class-details\",staticStyle:{\"width\":\"95%\"}},[_vm._v(_vm._s(_vm.featuredClass.blurb))])])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.featuredPodcast !== null)?_c('div',[_c('b-row',{staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoFeaturedPodcast()}}},[_c('b-col',{staticClass:\"text-center\",attrs:{\"cols\":\"4\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.featuredPodcast.photo}}),_vm._v(\" \"),_c('div',{staticClass:\"text-center completed\"},[_vm._v(\"FEATURED\")])],1),_vm._v(\" \"),_c('b-col',{staticStyle:{\"margin-left\":\"-20px\"},attrs:{\"cols\":\"8\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(_vm.featuredPodcast.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.featuredPodcast.speakerName)+\"\\n \"),_c('br'),_vm._v(\"Sponsor: \"+_vm._s(_vm.featuredPodcast.companyName)+\"\\n \"),(_vm.featuredPodcast.credits > 0)?_c('br'):_vm._e(),(_vm.featuredPodcast.credits > 0)?_c('span',[_vm._v(_vm._s(_vm.featuredPodcast.credits)+\" CEU (Self Study)\")]):_vm._e(),_vm._v(\" \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(_vm.featuredPodcast.durationSec))+\"\\n \")],1)])],1)],1):_vm._e(),_vm._v(\" \"),(_vm.featuredBlog !== null)?_c('div',[_c('b-row',{staticClass:\"mt-2 mb-2 pointer\",on:{\"click\":function($event){return _vm.gotoFeaturedBlogPost()}}},[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('div',{staticClass:\"class-title\"},[_c('b-icon',{attrs:{\"icon\":\"caret-right-fill\"}}),_vm._v(\" \"),(_vm.featuredBlog.featured)?_c('span',{staticClass:\"txt-blog-featured\"},[_vm._v(\"Featured\")]):_vm._e(),_vm._v(_vm._s(_vm.featuredBlog.title)+\"\\n \")],1),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n \"+_vm._s(_vm.featuredBlog.blurb)+\"\\n \")])])],1)],1):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-54ece922\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/VpFeaturedContent.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-54ece922\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./VpFeaturedContent.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./VpFeaturedContent.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./VpFeaturedContent.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-54ece922\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./VpFeaturedContent.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-54ece922\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/VpFeaturedContent.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n\r\n <div class=\"text-center mt-3 mb-3\">\r\n <h2>Congratulations! <h3>You've earned CE credit.</h3></h2>\r\n <p style=\"margin: 0; font-size: 1.2em;\">\r\n Your Exam Grade: {{ examScore }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"text-center mt-3 mb-3\">\r\n <h5>\r\n If you have a moment, check out the latest podcasts on\r\n the popular <nobr>Dr. Klein Dental Podcast Show</nobr>\r\n </h5>\r\n </div>\r\n\r\n <!-- Show featured podcast. -->\r\n <div v-if=\"haveFeaturedPodcast\" class=\"div-section-body\" style=\"padding: 0 2px 0 3px;\">\r\n <div class=\"mt-2\">\r\n <b-row>\r\n <b-col>\r\n <div class=\"class-title ml-2\">Featured Podcast: {{ podcasts[featuredPodcastIx].title }}</div>\r\n <b-row class=\"pb-2\" @click.stop.prevent=\"activateRow(podcasts[featuredPodcastIx].hash, featuredPodcastIx)\">\r\n <b-col cols=\"4\" lg=\"2\" class=\"text-center ml-3 mt-2\">\r\n <b-img fluid v-bind:src=\"podcasts[featuredPodcastIx].photo\" />\r\n </b-col>\r\n <b-col cols=\"6\" lg=\"8\" class=\"mt-3\">\r\n\r\n <div class=\"class-details\">\r\n Guest: {{ podcasts[featuredPodcastIx].speakerName }}\r\n <br><b-icon icon=\"clock\"></b-icon> {{ podcasts[featuredPodcastIx].durationSec | prettySeconds }}\r\n </div>\r\n <b-link @click.stop.prevent=\"play(featuredPodcastIx)\">\r\n <b-icon v-if=\"!isRowPlaying(featuredPodcastIx)\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"isRowPlaying(featuredPodcastIx)\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col md=\"6\" offset-md=\"3\">\r\n <div class=\"mt-2 ml-2\">\r\n <div class=\"txt-class-blurb\" v-html=\"podcasts[featuredPodcastIx].featuredBlurb\"></div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div-section-header mb-2\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle\">More Podcast Episodes</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- recent episodes -->\r\n <div class=\"div-section-body\">\r\n <div v-for=\"(row, ix) in podcasts\" v-bind:key=\"row.id\" class=\"mt-2 mb-2 pointer\">\r\n <template v-if=\"ix != featuredPodcastIx\">\r\n <b-row @click.stop.prevent=\"activateRow(row.hash, ix)\" class=\"pb-2\">\r\n <b-col cols=\"2\" lg=\"1\" :class=\"['text-center', { active: isActiveRow(row.hash) }]\">\r\n <b-link @click.stop.prevent=\"play(ix)\">\r\n <b-icon v-if=\"!isRowPlaying(ix)\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"isRowPlaying(ix)\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n </b-col>\r\n <b-col cols=\"10\" lg=\"11\" style=\"margin-left: -10px;\" :class=\"{ active: isActiveRow(row.hash) }\">\r\n <div class=\"class-title\">{{ row.title }}</div>\r\n <div class=\"class-details\">\r\n Guest: {{ row.speakerName }}\r\n <br><b-icon icon=\"clock\"></b-icon> {{ row.durationSec | prettySeconds }}\r\n </div>\r\n </b-col>\r\n </b-row>\r\n <div v-if=\"ix < numPodcasts-1\" class=\"w-100\" style=\"margin-left:-5px; border-bottom: 1px solid #CCC;\"></div>\r\n </template>\r\n </div>\r\n </div>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport EventBus from '@/plugins/eventbus'\r\nimport { integer } from \"vuelidate/lib/validators\"\r\n\r\nexport default {\r\n name: 'LobbyExam', // Used with passed exam page.\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n busy: false,\r\n success: false,\r\n loading: true,\r\n classObj: null,\r\n studentData: null,\r\n podcasts: [],\r\n podcastHash: null,\r\n podcastShowHash: null,\r\n featuredPodcastIx: -1,\r\n featuredPodcastClicks: 0,\r\n curPodcastIx: -1, // less than zero to init\r\n playing: false\r\n }\r\n },\r\n props: {\r\n classHash: { // classes.hash\r\n type: String,\r\n default: null\r\n },\r\n podcastHash: { // podcast.hash\r\n type: String,\r\n default: null\r\n },\r\n studentHash: { // students.hash\r\n type: String,\r\n default: null\r\n },\r\n examScore: { // examScore (0-100)\r\n type: Number,\r\n default: 0\r\n }\r\n },\r\n computed: {\r\n haveFeaturedPodcast() {\r\n return (this.featuredPodcastIx >= 0)\r\n },\r\n numPodcasts() {\r\n return this.podcasts.length\r\n }\r\n },\r\n methods: {\r\n isRowPlaying(ix) {\r\n let aout = (ix == this.curPodcastIx) && this.playing\r\n return aout\r\n },\r\n isActiveRow(hash) {\r\n return (this.podcastHash == hash)\r\n },\r\n activateRow(hash, ix) {\r\n this.podcastHash = hash\r\n this.curpodcastIx = ix\r\n },\r\n play(ix) { // this.podcasts[ix]\r\n if (this.debug) console.log(`playing ix: ${ix} cur: ${this.curPodcastIx}`)\r\n\r\n if (this.curPodcastIx == ix) {\r\n // toggle play on current ix\r\n if (!this.playing) {\r\n // play\r\n if (ix == this.featuredPodcastIx) ++this.featuredPodcastClicks\r\n EventBus.$emit('podcast-play',null)\r\n } else {\r\n // pause\r\n this.pause()\r\n }\r\n }\r\n else { // playing new podcast\r\n if (this.curPodcastIx >= 0 && this.playing) {\r\n this.pause() // pause existing podcast\r\n }\r\n this.curPodcastIx = ix\r\n this.podcastHash = this.podcasts[ix].hash\r\n if (ix == this.featuredPodcastIx) ++this.featuredPodcastClicks\r\n\r\n // log play of new podcast\r\n let data = {\r\n title: this.podcasts[ix].title,\r\n mp3: this.podcasts[ix].mp3\r\n }\r\n EventBus.$emit('podcast-play',data)\r\n }\r\n },\r\n pause() {\r\n EventBus.$emit('podcast-pause', null)\r\n },\r\n logPlay() {\r\n\r\n // only first featured podcast listen(click) is logged to VPAdLog table.\r\n let logFeaturedPodcast = (this.curPodcastIx == this.featuredPodcastIx) && (this.featuredPodcastClicks == 1)\r\n\r\n // when logFeaturedPodcast is true will log both the podcast isten and a\r\n service\r\n .podcastView(this.podcastHash, this.studentHash, logFeaturedPodcast, 'exam')\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // not much to do...?\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = 'Error logging podcast play.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n if (this.debug) console.log(`finally logPlay...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System error. Logging API failure.'\r\n console.log(e)\r\n })\r\n }\r\n },\r\n created() {\r\n if (this.debug) {\r\n console.log(`Created LobbyExam`)\r\n console.log( `classHash: ${this.classHash} podcastHash: ${this.podcastHash} studentHash: ${this.studentHash} examScore ${this.examScore}`)\r\n }\r\n\r\n this.curPodcastIx = -1\r\n this.featuredPodcastIx = -1\r\n this.featuredPodcastClicks = 0\r\n\r\n EventBus.$on( 'podcast-play-event', (function () {\r\n if (this.debug) console.log(`podcast-play-event`)\r\n this.playing = true\r\n this.logPlay()\r\n }).bind(this))\r\n\r\n EventBus.$on( 'podcast-pause-event', (function () {\r\n if (this.debug) console.log(`podcast-pause-event`)\r\n this.playing = false\r\n }).bind(this))\r\n\r\n this.loading = true\r\n service\r\n .getWebinarLobby(this.classHash, this.podcastHash, this.studentHash, 'exam')\r\n .then(\r\n (res => {\r\n // console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.podcasts = res.data\r\n // console.log(`podcastHash ${this.podcastHash} plen: ${this.podcasts.length}`)\r\n for(let ix=0; ix < this.podcasts.length; ix++) {\r\n // console.log(`testing podcastHash ${this.podcastHash} phash: ${this.podcasts[ix].hash}`)\r\n if (this.podcasts[ix].lobbyTypeId == 1) {\r\n // console.log(`this.featuredPodcastIx ${this.featuredPodcastIx}`)\r\n this.featuredPodcastIx = ix // set featured ix\r\n break\r\n }\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Server error. Try later.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (!this.playing && this.featuredPodcastIx >= 0) {\r\n if (this.debug) console.log(`Autoplay: ${this.featuredPodcastIx}`)\r\n this.play(this.featuredPodcastIx)\r\n }\r\n else {\r\n if (this.debug) console.log(`NO Autoplay: ${this.featuredPodcastIx}`)\r\n }\r\n if (this.debug) console.log(`finally LobbyExam...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n },\r\n mounted() {\r\n if (this.debug) console.log(`Mounted LobbyExam`)\r\n // this.busy = false\r\n // this.success = false\r\n },\r\n beforeDestroy() {\r\n if (this.debug) console.log(`BeforeDestroy LobbyExam`)\r\n this.featuredPodcastIx = -1\r\n this.featuredPodcastClicks = 0\r\n this.curPodcastIx = -1\r\n EventBus.$off( 'podcast-play-event')\r\n EventBus.$off( 'podcast-pause-event')\r\n // this.podcastShow = {status: false}\r\n // this.podcasts = []\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/LobbyExam.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('div',{staticClass:\"text-center mt-3 mb-3\"},[_c('h2',[_vm._v(\"Congratulations! \"),_c('h3',[_vm._v(\"You've earned CE credit.\")])]),_vm._v(\" \"),_c('p',{staticStyle:{\"margin\":\"0\",\"font-size\":\"1.2em\"}},[_vm._v(\"\\n Your Exam Grade: \"+_vm._s(_vm.examScore)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"text-center mt-3 mb-3\"},[_c('h5',[_vm._v(\"\\n If you have a moment, check out the latest podcasts on\\n the popular \"),_c('nobr',[_vm._v(\"Dr. Klein Dental Podcast Show\")])],1)]),_vm._v(\" \"),(_vm.haveFeaturedPodcast)?_c('div',{staticClass:\"div-section-body\",staticStyle:{\"padding\":\"0 2px 0 3px\"}},[_c('div',{staticClass:\"mt-2\"},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"class-title ml-2\"},[_vm._v(\"Featured Podcast: \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].title))]),_vm._v(\" \"),_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateRow(_vm.podcasts[_vm.featuredPodcastIx].hash, _vm.featuredPodcastIx)}}},[_c('b-col',{staticClass:\"text-center ml-3 mt-2\",attrs:{\"cols\":\"4\",\"lg\":\"2\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.podcasts[_vm.featuredPodcastIx].photo}})],1),_vm._v(\" \"),_c('b-col',{staticClass:\"mt-3\",attrs:{\"cols\":\"6\",\"lg\":\"8\"}},[_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Guest: \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].speakerName)+\"\\n \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(_vm.podcasts[_vm.featuredPodcastIx].durationSec))+\"\\n \")],1),_vm._v(\" \"),_c('b-link',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(_vm.featuredPodcastIx)}}},[(!_vm.isRowPlaying(_vm.featuredPodcastIx))?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.isRowPlaying(_vm.featuredPodcastIx))?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\",\"offset-md\":\"3\"}},[_c('div',{staticClass:\"mt-2 ml-2\"},[_c('div',{staticClass:\"txt-class-blurb\",domProps:{\"innerHTML\":_vm._s(_vm.podcasts[_vm.featuredPodcastIx].featuredBlurb)}})])])],1)],1)],1)],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header mb-2\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"More Podcast Episodes\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.podcasts),function(row,ix){return _c('div',{key:row.id,staticClass:\"mt-2 mb-2 pointer\"},[(ix != _vm.featuredPodcastIx)?[_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateRow(row.hash, ix)}}},[_c('b-col',{class:['text-center', { active: _vm.isActiveRow(row.hash) }],attrs:{\"cols\":\"2\",\"lg\":\"1\"}},[_c('b-link',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(ix)}}},[(!_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1)],1),_vm._v(\" \"),_c('b-col',{class:{ active: _vm.isActiveRow(row.hash) },staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\",\"lg\":\"11\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Guest: \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1)])],1),_vm._v(\" \"),(ix < _vm.numPodcasts-1)?_c('div',{staticClass:\"w-100\",staticStyle:{\"margin-left\":\"-5px\",\"border-bottom\":\"1px solid #CCC\"}}):_vm._e()]:_vm._e()],2)}),0)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-00ddb028\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/LobbyExam.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-00ddb028\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./LobbyExam.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LobbyExam.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LobbyExam.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-00ddb028\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./LobbyExam.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-00ddb028\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/LobbyExam.vue\n// module id = null\n// module chunks = ","<template>\r\n <b-overlay :show=\"loading\">\r\n\r\n <div class=\"text-center mt-3 mb-3\">\r\n <h4>While you wait, check out our recent podcast episodes!</h4>\r\n </div>\r\n\r\n <!--\r\n <div class=\"mt-2 mb-3\">\r\n <div class=\"d-block d-sm-none\">\r\n <img src=\"@/art/dentaltalk_sm_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-sm-block d-md-none\">\r\n <img src=\"@/art/dentaltalk_lg_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-md-block d-lg-none\">\r\n <img src=\"@/art/dentaltalk_sm_landscape.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-lg-block d-xl-none\">\r\n <img src=\"@/art/dentaltalk_lg_portrait.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n <div class=\"d-none d-xl-block\">\r\n <img src=\"@/art/dentaltalk_lg_landscape.png\" alt=\"DentalTalk Podcast-Earn CE\" class=\"img-fluid\" />\r\n </div>\r\n </div>\r\n -->\r\n\r\n <!-- Show featured podcast. -->\r\n <div v-if=\"haveFeaturedPodcast\" class=\"div-section-body\" style=\"padding: 0 2px 0 3px;\">\r\n <div class=\"mt-2\">\r\n <b-row>\r\n <b-col>\r\n <div class=\"class-title ml-2\">Featured Podcast: {{ podcasts[featuredPodcastIx].title }}</div>\r\n <b-row class=\"pb-2\" @click.stop.prevent=\"activateRow(podcasts[featuredPodcastIx].hash, featuredPodcastIx)\">\r\n <b-col cols=\"4\" lg=\"2\" class=\"text-center ml-3 mt-2\">\r\n <b-img fluid v-bind:src=\"podcasts[featuredPodcastIx].photo\" />\r\n </b-col>\r\n <b-col cols=\"6\" lg=\"8\" class=\"mt-3\">\r\n\r\n <div class=\"class-details\">\r\n Guest: {{ podcasts[featuredPodcastIx].speakerName }}\r\n <br><b-icon icon=\"clock\"></b-icon> {{ podcasts[featuredPodcastIx].durationSec | prettySeconds }}\r\n </div>\r\n <b-link @click.stop.prevent=\"play(featuredPodcastIx)\">\r\n <b-icon v-if=\"!isRowPlaying(featuredPodcastIx)\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"isRowPlaying(featuredPodcastIx)\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n\r\n </b-col>\r\n </b-row>\r\n <b-row>\r\n <b-col md=\"6\" offset-md=\"3\">\r\n <div class=\"mt-2 ml-2\">\r\n <div class=\"txt-class-blurb\" v-html=\"podcasts[featuredPodcastIx].featuredBlurb\"></div>\r\n </div>\r\n </b-col>\r\n </b-row>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n </div>\r\n\r\n <div class=\"div-section-header mb-2\">\r\n <b-row>\r\n <b-col cols=\"12\">\r\n <span class=\"txt-section-subtitle\">More Podcast Episodes</span>\r\n </b-col>\r\n </b-row>\r\n </div>\r\n\r\n <!-- recent episodes -->\r\n <div class=\"div-section-body\">\r\n <div v-for=\"(row, ix) in podcasts\" v-bind:key=\"row.id\" class=\"mt-2 mb-2 pointer\">\r\n <template v-if=\"ix != featuredPodcastIx\">\r\n <b-row @click.stop.prevent=\"activateRow(row.hash, ix)\" class=\"pb-2\">\r\n <b-col cols=\"2\" lg=\"1\" :class=\"['text-center', { active: isActiveRow(row.hash) }]\">\r\n <b-link @click.stop.prevent=\"play(ix)\">\r\n <b-icon v-if=\"!isRowPlaying(ix)\" icon=\"play-fill\" font-scale=\"2.5\"></b-icon>\r\n <b-icon v-if=\"isRowPlaying(ix)\" icon=\"pause-fill\" font-scale=\"2.5\"></b-icon>\r\n </b-link>\r\n </b-col>\r\n <b-col cols=\"10\" lg=\"11\" style=\"margin-left: -10px;\" :class=\"{ active: isActiveRow(row.hash) }\">\r\n <div class=\"class-title\">{{ row.title }}</div>\r\n <div class=\"class-details\">\r\n Guest: {{ row.speakerName }}\r\n <br><b-icon icon=\"clock\"></b-icon> {{ row.durationSec | prettySeconds }}\r\n <!--\r\n <br>{{ row.releaseDateUTC | prettyDate }}<span v-if=\"row.credits > 0\"> - {{ row.credits }} CEU (Self\r\n Study)</span>\r\n <br><b-icon icon=\"clock\"></b-icon> {{ row.durationSec | prettySeconds }}\r\n -->\r\n </div>\r\n <!--\r\n <div v-show=\"isActiveRow(row.hash)\">\r\n <div v-if=\"row.credits !== 0.0 && !row.examTaken\">\r\n <b-button :to=\"{ path: '/eval-podcast/' + row.hash }\" size=\"sm\" class=\"mt-3\">Take\r\n Exam</b-button>\r\n </div>\r\n <div v-if=\"row.examTaken\">\r\n <div class=\"class-details\">\r\n <span class=\"red\">Exam Completed on {{ row.examDateLocal | prettyDate }}.</span>\r\n </div>\r\n <certbutton :c=\"buildClass(row)\" :s=\"buildStudentData(row)\" alignment=\"text-left\">\r\n </certbutton>\r\n </div>\r\n <div class=\"txt-class-blurb mt-2\" v-html=\"row.blurb\"></div>\r\n </div>\r\n -->\r\n </b-col>\r\n </b-row>\r\n <div v-if=\"ix < numPodcasts-1\" class=\"w-100\" style=\"margin-left:-5px; border-bottom: 1px solid #CCC;\"></div>\r\n </template>\r\n </div>\r\n </div>\r\n </b-overlay>\r\n</template>\r\n\r\n<script>\r\n'use strict'\r\n/* eslint-disable */\r\n\r\nimport service from \"@/service/service\"\r\nimport utils from \"@/utils/utils\"\r\nimport EventBus from '@/plugins/eventbus'\r\n\r\nexport default {\r\n name: \"LobbyLive\", // Used with ClassroomLive\r\n data() {\r\n return {\r\n debug: false,\r\n error: false,\r\n errorMsg: null,\r\n busy: false,\r\n success: false,\r\n loading: true,\r\n classObj: null,\r\n studentData: null,\r\n podcasts: [],\r\n podcastHash: null,\r\n podcastShowHash: null,\r\n featuredPodcastIx: -1,\r\n featuredPodcastClicks: 0,\r\n curPodcastIx: -1, // less than zero to init\r\n playing: false\r\n }\r\n },\r\n props: {\r\n c: { // classObj object\r\n type: Object,\r\n default: {}\r\n },\r\n s: { // studentData object\r\n type: Object,\r\n default: {}\r\n }\r\n },\r\n computed: {\r\n haveFeaturedPodcast() {\r\n return (this.featuredPodcastIx >= 0)\r\n },\r\n numPodcasts() {\r\n return this.podcasts.length\r\n }\r\n },\r\n methods: {\r\n isRowPlaying(ix) {\r\n let aout = (ix == this.curPodcastIx) && this.playing\r\n return aout\r\n },\r\n isActiveRow(hash) {\r\n return (this.podcastHash == hash)\r\n },\r\n activateRow(hash, ix) {\r\n this.podcastHash = hash\r\n this.curpodcastIx = ix\r\n },\r\n play(ix) { // this.podcasts[ix]\r\n if (this.debug) console.log(`playing ix: ${ix} cur: ${this.curPodcastIx}`)\r\n\r\n if (this.curPodcastIx == ix) {\r\n // toggle play on current ix\r\n if (!this.playing) {\r\n // play\r\n if (ix == this.featuredPodcastIx) ++this.featuredPodcastClicks\r\n EventBus.$emit('podcast-play',null)\r\n } else {\r\n // pause\r\n this.pause()\r\n }\r\n }\r\n else { // playing new podcast\r\n if (this.curPodcastIx >= 0 && this.playing) {\r\n this.pause() // pause existing podcast\r\n }\r\n this.curPodcastIx = ix\r\n this.podcastHash = this.podcasts[ix].hash\r\n if (ix == this.featuredPodcastIx) ++this.featuredPodcastClicks\r\n\r\n // log play of new podcast\r\n let data = {\r\n title: this.podcasts[ix].title,\r\n mp3: this.podcasts[ix].mp3\r\n }\r\n EventBus.$emit('podcast-play',data)\r\n }\r\n },\r\n pause() {\r\n EventBus.$emit('podcast-pause', null)\r\n },\r\n logPlay() {\r\n\r\n // only first featured podcast listen(click) is logged to VPAdLog table.\r\n let logFeaturedPodcast = (this.curPodcastIx == this.featuredPodcastIx) && (this.featuredPodcastClicks == 1)\r\n\r\n // when logFeaturedPodcast is true will log both the podcast isten and a\r\n service\r\n .podcastView(this.podcastHash, this.studentHash, logFeaturedPodcast, 'webinar')\r\n .then(\r\n (res => {\r\n if (this.debug) console.log(res)\r\n if (res.status) {\r\n // not much to do...?\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = 'Error logging podcast play.'\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n if (this.debug) console.log(`finally logPlay...`)\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = 'System error. Logging API failure.'\r\n console.log(e)\r\n })\r\n }\r\n },\r\n created() {\r\n if (this.debug) console.log(`Created LobbyLive`)\r\n this.classObj = this.c || {status: false} // represents class or podcast\r\n this.studentData = this.s || {status: false, hash: null, name: null, credits: 0, ceTypeId: 0} // student data\r\n\r\n this.curPodcastIx = -1\r\n this.featuredPodcastIx = -1\r\n this.featuredPodcastClicks = 0\r\n\r\n EventBus.$on( 'podcast-play-event', (function () {\r\n if (this.debug) console.log(`podcast-play-event`)\r\n this.playing = true\r\n this.logPlay()\r\n }).bind(this))\r\n\r\n EventBus.$on( 'podcast-pause-event', (function () {\r\n if (this.debug) console.log(`podcast-pause-event`)\r\n this.playing = false\r\n }).bind(this))\r\n\r\n this.loading = true\r\n service\r\n .getWebinarLobby(this.classObj.hash, null, this.studentData.hash, 'webinar')\r\n .then(\r\n (res => {\r\n // console.log(`back from getPodcastShow!`);\r\n if (this.debug) console.log(res)\r\n if (res.status && res.rowCount !== 0) {\r\n this.podcasts = res.data\r\n // console.log(`podcastHash ${this.podcastHash} plen: ${this.podcasts.length}`)\r\n for(let ix=0; ix < this.podcasts.length; ix++) {\r\n // console.log(`testing podcastHash ${this.podcastHash} phash: ${this.podcasts[ix].hash}`)\r\n if (this.podcasts[ix].lobbyTypeId == 1) {\r\n // console.log(`this.featuredPodcastIx ${this.featuredPodcastIx}`)\r\n this.featuredPodcastIx = ix // set featured ix\r\n break\r\n }\r\n }\r\n }\r\n else {\r\n this.error = true\r\n this.errorMsg = \"Server error. Try later.\"\r\n }\r\n }).bind(this)\r\n )\r\n .finally(e => {\r\n this.loading = false\r\n if (!this.playing && this.featuredPodcastIx >= 0) {\r\n if (this.debug) console.log(`Autoplay: ${this.featuredPodcastIx}`)\r\n this.play(this.featuredPodcastIx)\r\n }\r\n else {\r\n if (this.debug) console.log(`NO Autoplay: ${this.featuredPodcastIx}`)\r\n }\r\n if (this.debug) console.log(`finally LobbyLive...`);\r\n })\r\n .catch(e => {\r\n this.error = true\r\n this.errorMsg = \"Error accessing API.\"\r\n console.log(e)\r\n })\r\n },\r\n mounted() {\r\n if (this.debug) console.log(`Mounted LobbyLive`)\r\n // this.busy = false\r\n // this.success = false\r\n },\r\n beforeDestroy() {\r\n if (this.debug) console.log(`BeforeDestroy LobbyLive`)\r\n this.featuredPodcastIx = -1\r\n this.featuredPodcastClicks = 0\r\n this.curPodcastIx = -1\r\n EventBus.$off( 'podcast-play-event')\r\n EventBus.$off( 'podcast-pause-event')\r\n // this.podcastShow = {status: false}\r\n // this.podcasts = []\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\n\n\n\n// WEBPACK FOOTER //\n// src/components/LobbyLive.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.loading}},[_c('div',{staticClass:\"text-center mt-3 mb-3\"},[_c('h4',[_vm._v(\"While you wait, check out our recent podcast episodes!\")])]),_vm._v(\" \"),(_vm.haveFeaturedPodcast)?_c('div',{staticClass:\"div-section-body\",staticStyle:{\"padding\":\"0 2px 0 3px\"}},[_c('div',{staticClass:\"mt-2\"},[_c('b-row',[_c('b-col',[_c('div',{staticClass:\"class-title ml-2\"},[_vm._v(\"Featured Podcast: \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].title))]),_vm._v(\" \"),_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateRow(_vm.podcasts[_vm.featuredPodcastIx].hash, _vm.featuredPodcastIx)}}},[_c('b-col',{staticClass:\"text-center ml-3 mt-2\",attrs:{\"cols\":\"4\",\"lg\":\"2\"}},[_c('b-img',{attrs:{\"fluid\":\"\",\"src\":_vm.podcasts[_vm.featuredPodcastIx].photo}})],1),_vm._v(\" \"),_c('b-col',{staticClass:\"mt-3\",attrs:{\"cols\":\"6\",\"lg\":\"8\"}},[_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Guest: \"+_vm._s(_vm.podcasts[_vm.featuredPodcastIx].speakerName)+\"\\n \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(_vm.podcasts[_vm.featuredPodcastIx].durationSec))+\"\\n \")],1),_vm._v(\" \"),_c('b-link',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(_vm.featuredPodcastIx)}}},[(!_vm.isRowPlaying(_vm.featuredPodcastIx))?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.isRowPlaying(_vm.featuredPodcastIx))?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1)],1)],1),_vm._v(\" \"),_c('b-row',[_c('b-col',{attrs:{\"md\":\"6\",\"offset-md\":\"3\"}},[_c('div',{staticClass:\"mt-2 ml-2\"},[_c('div',{staticClass:\"txt-class-blurb\",domProps:{\"innerHTML\":_vm._s(_vm.podcasts[_vm.featuredPodcastIx].featuredBlurb)}})])])],1)],1)],1)],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"div-section-header mb-2\"},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"txt-section-subtitle\"},[_vm._v(\"More Podcast Episodes\")])])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"div-section-body\"},_vm._l((_vm.podcasts),function(row,ix){return _c('div',{key:row.id,staticClass:\"mt-2 mb-2 pointer\"},[(ix != _vm.featuredPodcastIx)?[_c('b-row',{staticClass:\"pb-2\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.activateRow(row.hash, ix)}}},[_c('b-col',{class:['text-center', { active: _vm.isActiveRow(row.hash) }],attrs:{\"cols\":\"2\",\"lg\":\"1\"}},[_c('b-link',{on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.play(ix)}}},[(!_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"play-fill\",\"font-scale\":\"2.5\"}}):_vm._e(),_vm._v(\" \"),(_vm.isRowPlaying(ix))?_c('b-icon',{attrs:{\"icon\":\"pause-fill\",\"font-scale\":\"2.5\"}}):_vm._e()],1)],1),_vm._v(\" \"),_c('b-col',{class:{ active: _vm.isActiveRow(row.hash) },staticStyle:{\"margin-left\":\"-10px\"},attrs:{\"cols\":\"10\",\"lg\":\"11\"}},[_c('div',{staticClass:\"class-title\"},[_vm._v(_vm._s(row.title))]),_vm._v(\" \"),_c('div',{staticClass:\"class-details\"},[_vm._v(\"\\n Guest: \"+_vm._s(row.speakerName)+\"\\n \"),_c('br'),_c('b-icon',{attrs:{\"icon\":\"clock\"}}),_vm._v(\" \"+_vm._s(_vm._f(\"prettySeconds\")(row.durationSec))+\"\\n \")],1)])],1),_vm._v(\" \"),(ix < _vm.numPodcasts-1)?_c('div',{staticClass:\"w-100\",staticStyle:{\"margin-left\":\"-5px\",\"border-bottom\":\"1px solid #CCC\"}}):_vm._e()]:_vm._e()],2)}),0)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a3c4202\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/LobbyLive.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a3c4202\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./LobbyLive.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LobbyLive.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./LobbyLive.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a3c4202\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./LobbyLive.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-0a3c4202\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/LobbyLive.vue\n// module id = null\n// module chunks = ","'use strict'\r\n\r\n/* eslint-disable */\r\n\r\n// serve with hot reload at localhost:8080\r\n//#npm run dev\r\n// build for production with minification\r\n//#npm run build\r\n\r\n// The Vue build version to load with the `import` command\r\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\r\n\r\n// polyfill all `core-js` features:\r\nimport \"core-js\";\r\n// import 'babel-polyfill'\r\n// import '@babel/polyfill'\r\n// import 'mutationobserver-shim'\r\n\r\nimport Vue from 'vue'\r\nimport '@/plugins/bootstrap-vue'\r\nimport '@/plugins/globals'\r\n// import EventBus from '@/plugins/eventbus'\r\nimport App from './App'\r\nimport router from './router'\r\nimport axios from 'axios'\r\nimport VueYoutube from 'vue-youtube'\r\nimport VuePlyr from 'vue-plyr'\r\nimport { BIconVolumeDown } from \"bootstrap-vue\";\r\nimport constants from \"@/config/constants\"\r\nimport utils from \"@/utils/utils\"\r\nimport SearchBar from \"@/components/SearchBar\"\r\nimport SearchSidebar from \"@/components/SearchSidebar\"\r\nimport CertButton from \"@/components/CertButton\"\r\nimport QueueButton from \"@/components/QueueButton\"\r\nimport MobileAd from \"@/components/MobileAd\"\r\nimport MobileAdTest from \"@/components/MobileAdTest\"\r\nimport VpFeaturedContent from \"@/components/VpFeaturedContent\"\r\nimport LobbyExam from '@/components/LobbyExam'\r\nimport LobbyLive from '@/components/LobbyLive'\r\n\r\n// console.log(`defined in webpack.[dev,prod].conf.js?`)\r\n// __VERSION__ defined in package.json\r\nconsole.log(`process.env ${process.env} __VERSION__ ${__VERSION__} __BUILD__ ${__BUILD__}` )\r\n\r\n// import '@/plugins/bootstrap-vue'\r\n\r\n// https://bootstrap-vue.js.org/docs/\r\n// https://developer.okta.com/blog/2018/02/15/build-crud-app-vuejs-node\r\n/// import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'\r\n/// import 'bootstrap/dist/css/bootstrap.css'\r\n/// import 'bootstrap-vue/dist/bootstrap-vue.css'\r\n\r\n/// import { library } from '@fortawesome/fontawesome-svg-core'\r\n/// import { faUserSecret, faKey, faMask, faCat, faAngry, faBell } from '@fortawesome/free-solid-svg-icons'\r\n/// import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'\r\n\r\n/* eslint-disable no-new */\r\n\r\n/// Vue.use(BootstrapVue)\r\n// Optionally install the BootstrapVue icon components plugin\r\n/// Vue.use(IconsPlugin)\r\n\r\nVue.config.productionTip = false\r\n\r\n// https://github.com/anteriovieira/vue-youtube\r\nVue.use(VueYoutube)\r\n\r\n// https://github.com/redxtech/vue-plyr\r\n// https://plyr.io/#audio\r\n// https://github.com/sampotts/plyr\r\n// The second argument is optional and sets the default config values for every player.\r\n// see readme.md for custom tweaks to vue-plyr.mjs et al\r\nVue.use(VuePlyr, {\r\n plyr: {\r\n fullscreen: { enabled: true },\r\n speed: { selected: 1, options: [0.5, 0.75, 1, 1.5, 2] }\r\n },\r\n // statechange is youtube only\r\n emit: ['statechange','ready','canplay','canplaythrough','error','progress','playing','play','pause','ended']\r\n})\r\n\r\n// https://v1.vuejs.org/guide/custom-filter.html\r\n// replace newline with <br>\r\nVue.filter('nl2br', function (value) {\r\n // here `input` === `this.userInput`\r\n return (value) ? value.replace(/\\r\\n/g,'<br>') : value\r\n})\r\n\r\n// Converts seconds to HH:MM:SS\r\nVue.filter('prettyDate', dt => utils.prettyDate(dt))\r\nVue.filter('prettyDateTime', dt => utils.prettyDateTime(dt))\r\nVue.filter('prettySeconds', seconds => utils.prettySeconds(seconds))\r\nVue.filter('prettyNumber', num => utils.prettyNumber(num))\r\nVue.filter('prettyCEType', typeId => {\r\n // Tried to put this into utils. Turbulence.\r\n // console.log(`prettyCEType typeId ${typeId} home ${typeId == constants.CE_TYPEID.HOME_STUDY} live ${constants.CE_TYPEID.PARTICIPATORY}`)\r\n let aout = 'undefined'\r\n if (typeId == constants.CE_TYPEID.HOMESTUDY) {\r\n aout = 'Self-Study'\r\n }\r\n else if (typeId == constants.CE_TYPEID.PARTICIPATORY) {\r\n aout = 'Live, Interactive'\r\n }\r\n return aout\r\n })\r\n\r\n// TBD add to config\r\n// https://github.com/axios/axios\r\n// https://blog.jscrambler.com/build-a-task-management-app-using-vue-js-and-a-node-js-backend/\r\n\r\nconst hostMap = {\r\n defaultRunMode: 'prod',\r\n sites: {\r\n local: {\r\n hosts: ['localhost'],\r\n api: 'http://localhost:3000',\r\n desktopUrl: 'http://vivalearning.local'\r\n },\r\n test: {\r\n hosts: ['m.vivalearning.viva9.us','vp-mobile-test.azurewebsites.net'],\r\n api: 'https://appapi.vivalearning.viva9.us',\r\n desktopUrl: 'https://vivalearning.viva9.us'\r\n // api: 'https://vp-mobile-api-test.azurewebsites.net'\r\n },\r\n prod: {\r\n hosts: ['m.vivalearning.com','vp-mobile.azurewebsites.net'],\r\n api: 'https://appapi.vivalearning.com',\r\n desktopUrl: 'https://vivalearning.com'\r\n // api: 'https://vp-mobile-api.azurewebsites.net'\r\n }\r\n}}\r\n\r\nconst RUN_MODE_FORCED = '' // set to local, test, prod to force backend choice\r\n// console.log(Object.keys(hostMap.sites))\r\nlet runMode = utils.getRunMode(location.host, hostMap, RUN_MODE_FORCED)\r\n\r\n// Define a global accessible via this.$desktopUrl\r\n// Maybe not the best way to do it, but used for example.\r\nVue.prototype.$desktopUrl = hostMap.sites[runMode].desktopUrl\r\n\r\n// let runMode = 'prod'\r\nlet baseUrl = utils.getApiBaseUrl(runMode, hostMap)\r\n// console.log(`runMode: ${runMode} baseUrl: ${baseUrl}`)\r\naxios.defaults.baseURL = baseUrl\r\n\r\n// https://github.com/FortAwesome/vue-fontawesome\r\n// add the \"solid\" icons to the core library\r\n/// library.add(faUserSecret, faKey, faMask, faCat, faAngry, faBell)\r\n/// Vue.component('font-awesome-icon', FontAwesomeIcon)\r\n\r\nVue.component('searchbar', SearchBar)\r\nVue.component('searchsidebar', SearchSidebar)\r\nVue.component('certbutton', CertButton)\r\nVue.component('queuebutton', QueueButton)\r\nVue.component('mobilead', MobileAd)\r\nVue.component('mobilead-test', MobileAdTest)\r\nVue.component('vpfeaturedcontent', VpFeaturedContent)\r\nVue.component('lobby-exam', LobbyExam)\r\nVue.component('lobby-webinar', LobbyLive)\r\n\r\n\r\n// Global Data\r\n// var data = {\r\n// token: '', // student token students.hash\r\n// studentId: 0,\r\n// studentHash: '',\r\n// studentName: '',\r\n// studentEmail: '',\r\n// desktopUrl: this.runMode.desktop,\r\n// classId: 0,\r\n// classHash: '',\r\n// testval: 'TESTVAL',\r\n// version: __VERSION__,\r\n// build: __BUILD__,\r\n// searchDisplay: null,\r\n// searchModel: {\r\n// path: '/search',\r\n// catId: '',\r\n// compId: '',\r\n// query: ''\r\n// }\r\n// }\r\n\r\nvar vm = new Vue({\r\n el: '#app',\r\n data() {\r\n return {\r\n token: '', // student token students.hash\r\n studentId: 0,\r\n studentHash: '',\r\n studentName: '',\r\n studentEmail: '',\r\n classId: 0,\r\n classHash: '',\r\n testval: 'TESTVAL',\r\n version: __VERSION__,\r\n build: __BUILD__,\r\n searchDisplay: null,\r\n searchModel: {\r\n path: '/search',\r\n catId: '',\r\n compId: '',\r\n query: ''\r\n }\r\n }\r\n },\r\n router,\r\n components: { App },\r\n template: '<App/>',\r\n methods: {\r\n getToken() {\r\n return this.token || localStorage.getItem('id_token') || ''\r\n },\r\n setToken(token) {\r\n this.token = token\r\n localStorage.setItem('id_token', token) // used by router(temporarily) and to provide persistence\r\n },\r\n getStudentName() {\r\n return this.studentName || localStorage.getItem('student_name') || ''\r\n },\r\n setStudentName(title, firstname, lastname) {\r\n this.studentName = `${title} ${firstname} ${lastname}`\r\n localStorage.setItem('student_name', this.studentName) // used by certs etc...\r\n },\r\n getStudentEmail() {\r\n return this.studentEmail || localStorage.getItem('student_email') || ''\r\n },\r\n setStudentEmail(email) {\r\n this.studentEmail = email\r\n localStorage.setItem('student_email', this.studentEmail) // used by certs etc...\r\n },\r\n getSearchDisplay() {\r\n // console.log(`getSearchDisplay: ${this.searchDisplay}`)\r\n return this.searchDisplay\r\n },\r\n setSearchDisplay(val) {\r\n // console.log(`setSearchDisplay: ${this.searchDisplay}`)\r\n this.searchDisplay = val\r\n },\r\n setSearchModel(model) {\r\n this.searchModel = {...this.searchModel, ...model}\r\n // console.log(`setSearchModel: ${this.searchModel.path}`)\r\n // console.log(this.searchModel)\r\n },\r\n hasToken() {\r\n // console.log(`hasToken: ${this.getToken()} Len: ${this.getToken().length}`)\r\n return (this.getToken().length !== 0)\r\n },\r\n getVersion() { return this.version },\r\n getBuild() { return this.build },\r\n getStudentId () { return this.studentId },\r\n setStudentId (studentId) { this.studentId = parseInt(studentId) },\r\n getStudentHash () { return this.studentHash },\r\n setStudentHash (hash) { this.studentHash = hash },\r\n getClassId() { return this.classId },\r\n setClassId(classId) { this.classId = parseInt(classId) },\r\n getClassHash() { return this.classHash },\r\n setClassHash(hash) { this.classHash = hash },\r\n processLogin(data) {}\r\n // getCompanyName () { return this.companies[this.companyId].name }, // return name of selected company\r\n // getCompanies () { return Object.values(this.companies); },\r\n // setCompanies (companies) {\r\n // let obj = {};\r\n // companies.forEach((comp)=>{\r\n // obj[comp.id] = comp;\r\n // });\r\n // this.companies = obj;\r\n // },\r\n // getReportTypeId () { return this.reportTypeId; },\r\n // setReportTypeId (reportTypeId) { this.reportTypeId = reportTypeId },\r\n // getReportParts () { return this.reportParts; },\r\n // setReportParts (reportParts) { this.reportParts = reportParts; }\r\n }\r\n})\r\n\r\n// Old stuff - does it need to be converted to GA4?\r\n// Handled in router.afterEach?\r\n// ga('set', 'page', '/index.asp')\r\n// ga('send', 'pageview')\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","module.exports = __webpack_public_path__ + \"static/img/dentaltalk_lg_landscape.befa7b5.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/dentaltalk_lg_landscape.png\n// module id = OVwT\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/blog_lg_landscape.263757f.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/blog_lg_landscape.png\n// module id = OkcC\n// module chunks = 1","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/home_ce_laptop_icon.png\n// module id = QKxU\n// module chunks = 1","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/twitter2_150x150.png\n// module id = QPKz\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/dentaltalk_sm_portrait.2e59c93.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/dentaltalk_sm_portrait.png\n// module id = iZ6Q\n// module chunks = 1","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAACXBIWXMAAAsSAAALEgHS3X78AAAB/klEQVRoge2aS0sCURTHT6biI7TUsggNQoRyEUQQJCTkyp3RY9mqh7h0XS36AH2ANn2DENtLbtq3KCrKkjCwNLM0RenBBdvVzCEdZ+Z0f9v5c8784HrunRm75jYSvQAQB4AA0CQFAGENcUlousU1xCW/CWiUcR/Sw0WpwUWpoVWyz6DdBE67UTBzcllA1VKcKJOLLvty074Bi1arEbZsEowcimYUI9pj0kFkYTwf8rsdAOBsd31FiDLJvc3Ak9NmdEjVQxHDqClpk7KH7KJr82MlqSVBblG2ZBeDo/pO9JJVdHZyqIqdrK0iq2jI7853qpesU9frsqKm7M39a24/ce5kh4PyW+NPvWQVxSxbJrm6c9Tyvirb0vW4LKjcQTKNC4ogm6jZqEPlsg+Vtgwr/phGDS5KDf6GoR2wLeS36epxWVEdxHKVagOu7l5E60gqur0+lRnuN4+0UiO65BO8nn2sZFa2kqI9VL90S+U6ykH1ohe3zx+YnOpFC6Ua6oioetGzdLEPk1O9KJu6GFQvitlaQO2ilWqjiM1Kuo+eXhdZ/cxP1wz6boPdahB9oC6Uarla/b0mUB/1G2X/YfjEBNvNhNcOu7EZ0aqx3WP09xUh+KGeGlyUGlyUGlyUGlyUGlyUGlyUGlyUGlyUGv9KNKWA+5CaFBMNE5dNAUD4C1qOcQQp43iEAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/facebook_150x150.png\n// module id = j5mj\n// module chunks = 1","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/logo.png\n// module id = li2B\n// module chunks = 1","/* eslint-disable */\r\n\r\n'use strict'\r\n\r\nconst VIVA_COOKIE_NAME = 'viva-cookie'\r\n\r\nfunction hasVivaCookie () {\r\n let aout = localStorage && (localStorage[VIVA_COOKIE_NAME] !== undefined)\r\n console.log(`hasVivaCookie aout: ${aout} localStorage: ${localStorage} cookie: ${localStorage[VIVA_COOKIE_NAME]} `)\r\n return aout\r\n}\r\nfunction setVivaCookie () {\r\n if (localStorage) {\r\n localStorage[VIVA_COOKIE_NAME] = (new Date).toString() // set to current date.\r\n }\r\n}\r\n\r\n/* Escape newlines with <br> - also a filter*/\r\nfunction nl2br(val) {\r\n let aout = (val) ? val.replace(/\\r\\n/gi, '<br>') : ''\r\n return aout;\r\n}\r\n\r\n// Date object\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse\r\n\r\n// The \"pretty\" functions are used to format date values for display.\r\n// Returns blank if invalid data. Coding originally checked for\r\n// specific data validity, but seemed quicker to wrap in try blocks\r\n// and bail on any errors.\r\nfunction prettyDateTime(dateStr) {\r\n let aout = ''\r\n try {\r\n let d = new Date(dateStr)\r\n aout = `${prettyDate(d)} at ${prettyTime(d)} (local)`\r\n }\r\n catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction prettyDate(arg) {\r\n let aout = ''\r\n try {\r\n let d = (isString(arg)) ? new Date(arg) : arg\r\n aout = `${getDayShort(d.getDay())} ${getMonthShort(d.getMonth())} ${d.getDate()}, ${d.getFullYear()}`\r\n } catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction prettyTime(arg) {\r\n let aout = ''\r\n try {\r\n let d = (isString(arg)) ? new Date(arg) : arg\r\n let hr = parseInt(d.getHours())\r\n let mn = ('0'+d.getMinutes()).slice(-2)\r\n aout = `${(hr > 12) ? hr-12: hr}:${mn} ${(hr >= 12) ? 'PM' : 'AM'}`\r\n }\r\n catch(e) {}\r\n return aout\r\n}\r\n\r\nfunction getDayShort(day) {\r\n let days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\r\n return days[day]\r\n}\r\n\r\nfunction getMonthShort(month) {\r\n let months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']\r\n return months[month]\r\n}\r\n\r\nfunction getDateTimeZ(d) { // d is a date object\r\n // Takes date object and converts to string YYYYMMNNTHHMMSSZ <-- T and Z are literals, SS must be present\r\n var aout = ''\r\n try {\r\n aout = d.getFullYear()\r\n + ('0' + (d.getMonth() + 1)).slice(-2)\r\n + ('0' + d.getDate()).slice(-2)\r\n + 'T'\r\n + ('0' + d.getHours()).slice(-2)\r\n + ('0' + d.getMinutes()).slice(-2)\r\n + '00Z'\r\n } catch(e) {}\r\n return aout\r\n }\r\n\r\nfunction isString(arg) {\r\n return (typeof arg === 'string')\r\n}\r\n\r\nconst SECONDS_IN_MINUTE = 60\r\nconst MINUTES_IN_HOUR = 60\r\nconst SECONDS_IN_HOUR = 3600 // 3600 seconds per hour\r\nconst SECONDS_IN_DAY = 24*SECONDS_IN_HOUR\r\n\r\nfunction prettySeconds(durationSeconds) {\r\n // console.log('prettySeconds')\r\n let aout = \"00:00:00\"\r\n try {\r\n let secs = parseInt(durationSeconds)\r\n let hours = Math.floor(secs/SECONDS_IN_HOUR)\r\n let minutes = Math.floor( (secs % SECONDS_IN_HOUR)/MINUTES_IN_HOUR )\r\n let seconds = (secs % SECONDS_IN_HOUR) % SECONDS_IN_MINUTE\r\n aout = (hours > 0)\r\n ? `${twoDigits(hours)}:${twoDigits(minutes)}:${twoDigits(seconds)}`\r\n : `${twoDigits(minutes)}:${twoDigits(seconds)}`\r\n }\r\n catch (e) { console.log(e) }\r\n return aout\r\n}\r\n\r\n/* Converts 1234 to 1,234 in locale-sensitive way. */\r\nfunction prettyNumber(num) {\r\n let aout = 0\r\n try {\r\n aout = num.toLocaleString()\r\n }\r\n catch (e) { console.log(e) }\r\n return aout\r\n}\r\n\r\nfunction prettyCountdown(deltaSeconds) {\r\n let aout = `ERROR: ${deltaSeconds}`\r\n try {\r\n let secs = parseInt(deltaSeconds)\r\n if (secs <= 0) {\r\n aout = 'Webinar in Progress...'\r\n }\r\n else {\r\n // console.log(`prettyCountdown secs ${secs}`)\r\n let days = Math.floor(secs/SECONDS_IN_DAY) // 24*3600 seconds in day\r\n let hours = Math.floor((secs-(days*SECONDS_IN_DAY))/SECONDS_IN_HOUR) // 3600 seconds per hour\r\n let minutes = Math.floor( (secs % SECONDS_IN_HOUR)/SECONDS_IN_MINUTE )\r\n let seconds = (secs % SECONDS_IN_HOUR) % SECONDS_IN_MINUTE\r\n aout = ''\r\n if (days > 0) {\r\n aout = aout.concat(`${days} Day${plural(days,'s')}, `)\r\n }\r\n if (hours > 0) {\r\n aout = aout.concat(`${hours} Hour${plural(hours,'s')}`)\r\n }\r\n if (aout !== '' || minutes > 0) {\r\n if (hours > 0) aout = aout.concat(' and ')\r\n aout = aout.concat(`${minutes} Minute${plural(minutes,'s')}`)\r\n }\r\n // if (aout === '' && seconds > 0) {\r\n if (days === 0 && hours === 0 && minutes < 5 && seconds > 0) {\r\n if (minutes > 0) aout = aout.concat(' and ')\r\n aout = aout.concat(`${seconds} Second${plural(seconds,'s')}`)\r\n }\r\n if (aout === '') {\r\n aout = 'Webinar in Progress...'\r\n }\r\n }\r\n }\r\n catch (e) { console.log(e) }\r\n // console.log(`prettyCountdown: ${aout}`)\r\n return aout\r\n}\r\n\r\n// Given integer val returns 2 digit string. Useful for HH:MM:SS\r\nfunction twoDigits(val) {\r\n return ('00'+val.toString()).slice(-2)\r\n}\r\n\r\n// Returns suffix if integer val is not equal to 1.\r\nfunction plural(val, suffix) {\r\n return (val === 1) ? '' : suffix\r\n}\r\n\r\n// Extracts youtube code from these templates:\r\n// https://www.youtube.com/watch?v=SR4Eec9F89M&list=RDmg7netw1JuM\r\n// https://youtu.be/SR4Eec9F89M?list=RDmg7netw1JuM\r\n// Extracts code: SR4Eec9F89M\r\nfunction getYoutubeCode( url ) {\r\n var arr = url.match(/(?:https?:\\/{2})?(?:w{3}\\.)?youtu(?:be)?\\.(?:com|be)(?:\\/watch\\?v=|\\/)([^\\s&]+)/);\r\n var code = arr[1];\r\n // console.log( `getYoutubeCode: ${code}`);\r\n return code;\r\n}\r\n\r\n// Builds YouTube Url from code.\r\n// Suitable for b-embed and vue-plyr\r\nfunction getYoutubeUrl( videoId, autoplay ) {\r\n var url = `https://www.youtube.com/embed/${videoId}?iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1&origin=${getHost()}`\r\n url += (autoplay) ? '&autoplay=1' : ''\r\n // console.log( `getYoutubeUrl: ${url}`);\r\n return url\r\n }\r\n\r\n// Returns http://domain or https://domain or https://domain:8080\r\nfunction getHost() {\r\n // includes port if non-standard\r\n let host = `${window.location.protocol}//${window.location.host}`\r\n // console.log(`host: ${host}`)\r\n return host\r\n}\r\n\r\n/* Parses val, returns defaultVal if val cannot be parsed. */\r\nfunction safeParseInt(val, defaultVal) {\r\n const parsed = parseInt(val)\r\n let aout = ((defaultVal) ? defaultVal : 0)\r\n if (!isNaN(parsed)) { aout = parsed }\r\n return aout;\r\n}\r\n\r\n// Processes a search string for safety.\r\nconst MAX_SEARCH_LENGTH = 30\r\nfunction safeSearch(q) {\r\n let aout = null\r\n if (isString(q) && q.length > 0) {\r\n q = q.replace(\"'\",\"\")\r\n if (q.length > 2) {\r\n aout = q.slice(0,MAX_SEARCH_LENGTH)\r\n }\r\n else {\r\n // safe 2 letter words.\r\n let arr = ['3m']\r\n if (arr.includes(q.toLowerCase())) {\r\n aout = q\r\n }\r\n }\r\n }\r\n return aout\r\n}\r\n\r\nfunction ifNull(exp, value) {\r\n return ( exp != null ) ? exp : value\r\n}\r\n\r\n// returns local, test, prod\r\n// forced optional setting overrides hostVal (created using location.host)\r\n// hostVal may have port number; eg domain:port, localhost:8080\r\nfunction getRunMode(hostVal, hostMap, forcedMode) {\r\n let aout = hostMap.defaultRunMode\r\n if (forcedMode && forcedMode.length !== 0) {\r\n aout = forcedMode //\r\n }\r\n else if (hostVal && hostVal.length !== 0) {\r\n let host = hostVal.split(':')[0].toLowerCase()\r\n // Wanted to use Object.keys(hostMap.sites) but got error.\r\n // In array put prod first for faster production search.\r\n for(let siteName of ['prod','test','local'] ) {\r\n if (hostMap.sites[siteName].hosts.includes(host)) {\r\n aout = siteName\r\n break\r\n }\r\n }\r\n }\r\n return aout\r\n}\r\n\r\n// Helper function that assists injecting ads into a set of items.\r\n// itemCnt: number of main list items, such as list of classes or podcasts\r\n// adCnt: number of ads to be injected\r\n// adStartPos: 1-based index of ad placement among \"items\"\r\n// Resultant array is of length itemCnt. The value of an array element\r\n// is either -1 or the index(0 to adCnt-1) of an ad to display.\r\nfunction getAdIndexArray( itemCnt, adCnt, adStartPos, adInterval ) {\r\n let arr = new Array()\r\n let adCurPos = adStartPos\r\n let adCurIx = 0 // index of ad.\r\n for(let ix=0; ix <= itemCnt; ix++) {\r\n // console.log(`processing ${ix} adCurPos: ${adCurPos} len: ${arr.length}`)\r\n if ( adCurPos == ix && adCurIx < adCnt ) {\r\n arr[ix] = adCurIx\r\n adCurIx++\r\n adCurPos += adInterval\r\n }\r\n else {\r\n arr[ix] = -1\r\n }\r\n }\r\n return arr\r\n}\r\n\r\n// uses runMode to extract baseUrl from hostMap\r\nfunction getApiBaseUrl(runModeArg, hostMap) {\r\n let runMode = runModeArg || hostMap.defaultRunMode\r\n let baseUrl = hostMap.sites[runMode].api\r\n return baseUrl\r\n}\r\n\r\n// The first element in a b-form-select list.\r\nfunction initSelectArray() {\r\n return {value: undefined, text: '-- select one --'}\r\n}\r\n\r\n// data: array of values.\r\n// Returns [{data: data[ix], value: data[ix]}]\r\nfunction prepSelectArray(data) {\r\n var arr = []\r\n if (data) {\r\n for( var ix=0; ix < data.length; ix++) {\r\n arr.push({value: data[ix], text: data[ix]})\r\n }\r\n }\r\n return arr\r\n}\r\n\r\nfunction isApple() { return (/iPhone|iPod|iPad/i).test(navigator.userAgent) }\r\nfunction isAndroid() { return (/Android/i).test(navigator.userAgent) }\r\nfunction isMobile() { return this.isApple() || this.isAndroid() }\r\nfunction isDesktop() { return !this.isMobile() }\r\n\r\n// return the first few words of str that fit in maxlen\r\nfunction leadingWords (str, maxlen) {\r\n var aout = \"\";\r\n\r\n if (str.length > maxlen) {\r\n var words = str.split(' ');\r\n var idx = 0;\r\n while (aout.length <= maxlen - 3) {\r\n aout += ' ' + words[idx];\r\n idx++;\r\n }\r\n aout = aout.trim() + \"...\";\r\n }\r\n else {\r\n aout = str;\r\n }\r\n\r\n return aout;\r\n}\r\n\r\n\r\n/* Define module */\r\nlet utils = {\r\n nl2br: nl2br,\r\n prettyDateTime: prettyDateTime,\r\n prettyDate: prettyDate,\r\n prettyTime: prettyTime,\r\n prettySeconds: prettySeconds,\r\n prettyNumber: prettyNumber,\r\n prettyCountdown: prettyCountdown,\r\n getDateTimeZ: getDateTimeZ,\r\n isString: isString,\r\n getYoutubeCode: getYoutubeCode,\r\n getYoutubeUrl: getYoutubeUrl,\r\n safeParseInt: safeParseInt,\r\n safeSearch: safeSearch,\r\n ifNull: ifNull,\r\n getRunMode: getRunMode,\r\n getApiBaseUrl: getApiBaseUrl,\r\n getAdIndexArray: getAdIndexArray,\r\n initSelectArray: initSelectArray,\r\n prepSelectArray: prepSelectArray,\r\n isApple: isApple,\r\n isAndroid: isAndroid,\r\n isMobile: isMobile,\r\n isDesktop: isDesktop,\r\n leadingWords: leadingWords,\r\n hasVivaCookie,\r\n setVivaCookie\r\n}\r\n\r\nmodule.exports = utils\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/utils.js","module.exports = __webpack_public_path__ + \"static/img/dentaltalk_sm_landscape.c9ebf98.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/dentaltalk_sm_landscape.png\n// module id = oN14\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/blog_sm_landscape.8d98c8c.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/blog_sm_landscape.png\n// module id = rxw0\n// module chunks = 1","module.exports = \"data:image/png;base64,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\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/instagram_150x150.png\n// module id = wKWT\n// module chunks = 1","module.exports = __webpack_public_path__ + \"static/img/blog_lg_portrait.13f4cdc.png\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/art/blog_lg_portrait.png\n// module id = x8qc\n// module chunks = 1","'use strict'\r\n/* eslint-disable */\r\n\r\nconst NUM_EVAL_QUESTIONS = 10\t// count of required questions.\r\nconst EXAM_MIN_SCORE_TO_PASS = 80 // min score to pass exam\r\n\r\n// Constants used in logEvent()\r\nconst VIVA_EVENT_LOGIN = 1\r\nconst VIVA_EVENT_LOGOUT = 2\r\nconst VIVA_EVENT_VIEW_CLASS = 3\r\nconst VIVA_EVENT_EVALUATION = 4\r\nconst VIVA_EVENT_FAIL_EXAM = 5\r\nconst VIVA_EVENT_PASS_EXAM = 6\r\nconst VIVA_EVENT_VIEW_MOVIE = 19\r\nconst VIVA_EVENT_VIEW_PODCAST = 20\r\n\r\nconst VPAD_LOGIN = 1\r\nconst VPAD_TOP = 2\r\nconst VPAD_SLIDER = 3\t\t// Old home page slides\r\nconst VPAD_HOMESLIDE = 4 \t// New home page slider.\r\nconst VPAD_RIGHT = 5\r\nconst VPAD_LEFT = 6\t\t\t// Left side banner ad.\r\nconst VPAD_CONTENT_TOP = 7\r\nconst VPAD_CONTENT_LIST1 = 8\t// Pos 1 of 4\r\nconst VPAD_CAT_TOP = 9\r\nconst VPAD_CAT_LIST1 = 10\t\t// see 2,3,4 below\r\nconst VPAD_TRENDING = 11\r\nconst VPAD_CE = 12\t\t\t\t// Uses classes.isVpFeatured\r\nconst VPAD_TIP = 13\t\t\t // Uses tips.isVpFeatured\r\nconst VPAD_PRODUCT = 14\t\t\t// Uses classes.isVpFeatured (tutorials)\r\nconst VPAD_PROMOTION = 15\r\nconst VPAD_NEW_PRODUCT = 16\t\t// Used for uploading photo.\r\nconst VPAD_PRESS = 17\r\nconst VPAD_ACTIVITY = 18\t\t// Ad on user activity pages.\r\nconst VPAD_CAT_ALT_TOP = 19\t\t// Alternate small banner ad on classroom page.\r\nconst VPAD_CAT_ALT_LIST = 20\t// Alternate small banner ad on classroom page.\r\nconst VPAD_CESPOTLIGHT = 21\t\t// Left side on home page. Uses classes.isCeSpotlight\r\nconst VPAD_EXAMBLURBLINK = 22\t// Click tracking for exam blurb links\r\nconst VPAD_PODCAST_PROMOTION = 23\t// Click tracking for Podcast Special Offers\r\nconst VPAD_EXAM = 24\t\t\t// Click tracking for exam ads\r\nconst VPAD_EXAMEMAIL = 25\t\t// Tracking for exam emails.\r\nconst VPAD_LEFTCONTENT = 26\t\t// Tracking for left side content\r\nconst VPAD_CONTENT_LIST2 = 27\t// Pos 2 of 4\r\nconst VPAD_CONTENT_LIST3 = 28\t// Pos 3 of 4\r\nconst VPAD_CONTENT_LIST4 = 29\t// Pos 4 of 4\r\nconst VPAD_CAT_LIST2 = 30\t\t// see 1 above\r\nconst VPAD_CAT_LIST3 = 31\r\nconst VPAD_CAT_LIST4 = 32\r\nconst VPAD_EBOOK = 33\r\nconst VPAD_EBOOK_THUMBNAIL = 34\t // Thumbnail used on VP ebook page\r\nconst VPAD_RIGHT_INTERNAL = 35\t\t // Right Internal\r\nconst VPAD_FEATURED_CLASS = 36\t\t // Featured CE Class for a category\r\nconst VPAD_FEATURED_PODCAST = 37\t\t// Featured CE Podcast for a category\r\n\r\nconst constants = {\r\n CANONICAL_BASE: \"https://m.vivalearning.com\",\r\n CLASS_TYPE: {\r\n UNDEFINED: 0,\r\n PDF: 10,\r\n LIVE: 20,\r\n ARCHIVE: 30,\r\n PRODUCED: 40,\t\t // regular flash class and produced live classes\r\n PRODUCED_ARCHIVE: 50,\t// produced classes from live classes (old style)\r\n MOVIE: 55,\t\t // WMV, MP3 or MOV\r\n LUNCHLEARN: 60,\r\n PRODUCED_PLAYBACK: 70,\t// playback classes from live classes (kerman style)\r\n SLIDESHOW: 80,\t\t\t// TBD\r\n SEMINAR: 90\t\t\t // Edge Endo Seminar - live CE\r\n },\r\n CE_TYPEID: {\r\n NONCE: 0, // Placeholder for NON-CE tutorials\r\n HOMESTUDY: 1, // Self-Study\r\n PARTICIPATORY: 2 // Live Interactive\r\n },\r\n VPAD_SLOT_TYPE: {\r\n VPAD_LOGIN: 1,\r\n VPAD_TOP: 2,\r\n VPAD_SLIDER: 3,\t\t// Old home page slides\r\n VPAD_HOMESLIDE: 4, \t// New home page slider.\r\n VPAD_RIGHT: 5,\r\n VPAD_LEFT: 6,\t\t\t// Left side banner ad.\r\n VPAD_CONTENT_TOP: 7,\r\n VPAD_CONTENT_LIST1: 8,\t// Pos 1 of 4\r\n VPAD_CAT_TOP: 9,\r\n VPAD_CAT_LIST1: 10,\t\t// see 2,3,4 below\r\n VPAD_TRENDING: 11,\r\n VPAD_CE: 12,\t\t\t\t// Uses classes.isVpFeatured\r\n VPAD_TIP: 13,\t\t\t // Uses tips.isVpFeatured\r\n VPAD_PRODUCT: 14,\t\t\t// Uses classes.isVpFeatured (tutorials)\r\n VPAD_PROMOTION: 15,\r\n VPAD_NEW_PRODUCT: 16,\t\t// Used for uploading photo.\r\n VPAD_PRESS: 17,\r\n VPAD_ACTIVITY: 18,\t\t// Ad on user activity pages.\r\n VPAD_CAT_ALT_TOP: 19,\t\t// Alternate small banner ad on classroom page.\r\n VPAD_CAT_ALT_LIST: 20,\t// Alternate small banner ad on classroom page.\r\n VPAD_CESPOTLIGHT: 21,\t\t// Left side on home page. Uses classes.isCeSpotlight\r\n VPAD_EXAMBLURBLINK: 22,\t// Click tracking for exam blurb links\r\n VPAD_PODCAST_PROMOTION: 23,\t// Click tracking for Podcast Special Offers\r\n VPAD_EXAM: 24,\t\t\t// Click tracking for exam ads\r\n VPAD_EXAMEMAIL: 25,\t\t// Tracking for exam emails.\r\n VPAD_LEFTCONTENT: 26,\t\t// Tracking for left side content\r\n VPAD_CONTENT_LIST2: 27,\t// Pos 2 of 4\r\n VPAD_CONTENT_LIST3: 28,\t// Pos 3 of 4\r\n VPAD_CONTENT_LIST4: 29,\t// Pos 4 of 4\r\n VPAD_CAT_LIST2: 30,\t\t// see 1 above\r\n VPAD_CAT_LIST3: 31,\r\n VPAD_CAT_LIST4: 32,\r\n VPAD_EBOOK: 33,\r\n VPAD_EBOOK_THUMBNAIL: 34,\t // Thumbnail used on VP ebook page\r\n VPAD_RIGHT_INTERNAL: 35,\t\t // Right Internal\r\n VPAD_FEATURED_CLASS: 36,\t\t // Featured CE Class for a category\r\n VPAD_FEATURED_PODCAST: 37\t\t// Featured CE Podcast for a category\r\n },\r\n VPAD_EVENTID: {\r\n VIEW: 1, // View of VP Ad\r\n CLICK: 2 // Click of VP Ad\r\n },\r\n PATHS: {\r\n ON_DEMAND_BASE: \"/on-demand-dental-ce-course\",\r\n PODCAST_BASE: \"/dental-podcasts\",\r\n }\r\n}\r\n\r\nmodule.exports = constants\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/config/constants.js"],"sourceRoot":""}