{"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        &nbsp;&nbsp;&bull;&nbsp;&nbsp;\r\n        <b-link to=\"/terms\">Terms &amp; 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        &copy; {{(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        &nbsp;&nbsp;&bull;&nbsp;&nbsp;\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        &nbsp;&nbsp;&bull;&nbsp;&nbsp;\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        &nbsp;&nbsp;&bull;&nbsp;&nbsp;\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 &raquo;</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>&nbsp;</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\">&times;</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>&nbsp;{{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                        &nbsp;&nbsp;\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                    &nbsp;&nbsp;\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}}&nbsp;{{ 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>&nbsp;\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>&nbsp;{{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>&nbsp;{{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 }}&nbsp;</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 }}&nbsp;</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                      &nbsp;\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                            &nbsp;\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>&nbsp;{{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 &raquo;</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 &raquo;</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 &raquo;</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>&nbsp;{{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 &raquo;</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\">&nbsp;{{ row.buttonText || \"Get eBook\" }}&nbsp;</span>\r\n                        <span style=\"font-size:60%;vertical-align: middle;\">&nbsp;&#x25BA;</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\">&times;</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>&nbsp;<!-- 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>&nbsp;{{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>&nbsp;{{ 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>&nbsp;{{ 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>&nbsp;{{ 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>&nbsp;{{ 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>&nbsp;{{ 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,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAUP0lEQVR4nO2dfXAc5X3Hv7/dvTu9WZZsWTZGssHGGEyIEQRi0jYEJ5gEz6RpYZIMnYakNG8tTSkFEtL+kdImTTLAuDOdhEKTiZMMjUsSJkMmoTAprwZT8BtgO8bGBmxkWZJtSeh0L3u7v/6x++w+J92b7va0z5325/HdR3t7+/rs7/M8u8/eUt/WcSYQRDAA8t5nvuaPgQpYfkfwzAyQOw9GwzGDIAhNxIYoVGKX+UUM3krnsxgij1mOZzPuLJnIXyVCw7F/2Mn7ofHZkHeTnA/8XTfza7OJOuaqpghmQGQud0hTsOaumbOzGGD3b3/HUR6D3VTOXBH7BRJ1YW8e7nwbjiFvo+Zhw3G9u7P8l+JB4vOZua0Qi3zH3pBgmch/F6vXSDy7rdk4rIk/OC8blAqW3suzvOHqwYVWqtHY317Nw4ZQn5+J5I8L1Gw8Z7qDyzH59TegDsxOs4Ld+TUci+3rtW6bgw0qoj9JkHlDvC/P8rCs21HvqZz8RWwk9lamuVhDkWAvN+TzbIPr/DoX86jnK0tr0kysOY2UQkWHwPBrXoKdcdl5r4D9aaEuzMyedRuRRfjbqjk4UmHY7K1Mc3GkwpBf662ksNjwBxHADPYOKEd/zlHls/zujFWOCWCpBRQwew0rdtej0Zj8q4ViuzUDG/m+ykvOKCQh78Sk+3cl7GT/OrE4EPzBDcX+FqamYkeFXsXLf3fylBhN3gDslkmuiBmQvhk8w5tnAzP7EmkW1ry07Kytt8KM4uxvnPI8fbqBszgouDGZwdJlnubhSIUhswrailRYgOHNs4FZIYUFxZEKQ2YVtBWpMFJhw3CkQhVYIYUFxZEKQ2YVtBWpMFJhw3CkQhVYIYUFxQYAsNRDgCGuBeYZ0mf2i5u/aYqzM31250vBM/nLLa9D47BzpLO3Ls3Bhr/7AZFpAHFhtAgXLHFFWATViwmN/QrkVUGahDUvhXmlwflfNBuRr8uKWGQYRl1YzGd2pV0x9lekaVjzC47IVdJIhYLFzqXKeNo0g2ZxQDC4QVnsj+biSIWhvyJ0bdWDIxWqwAopLCiOVBg6i/3RXBypMPRXhK6tenCkQhVYIYUFxZEKQ2exP5qLIxWG/orQtVUPjlSoAiuksKDYKKRC+Tr1jODp41fC9VVh+Nf7ynN3nNAZ19ARc7ZJMseYzAKjGfeCPbN3tDcDRyqswysBWNKi4QNn6fiDZTouXqyjt5WQ0AkJ3Vn0rAVkbcZoirHvjI1nB3N49oSFkZS8fuqobbZM/VvHGe5RJWeq4mXGv3OXvc1YgplA5JZoBM9OxzIFdOby2i4NX1gXx4f7dCxqKfoLBgVjLMN4ajCHH+zPYu8p29EKSbqskAnAh/sMHJ2w8cZE9dOphal/64RnSFEsnPRdZPNJOq04pO4ugTPB043zSTi8okPDbesT+JNVBjQiqdCjJBeL376dwz17sjg0Zjk7SrS6SnBMA67o1XHHJQn0tBI++mgSkzlU9N2gWRkVXn22gf8btpA0Kxvf53DFp4HwiXMN3HVZAsva/AwlCk+lPD2uWxnDhqU6vrs7i22HTViyT6apZ2EMuLrPwGfOj+OSHg0xnXDvngySObGJ5l6FhigFxVVI+Sz9iAW72aIkM4HcI1hszOnc20r4zpUteHbQwm3b02XHl9nZN+HoTyfg1vfGccvFceha8UJSbSxq0fCtDQms7dLwzZ0ZZG2xCE7Wu7xXx+aVBq7pN9DX4Rfq4ZSNnx0y/QmFoEIlWoXXrzawrE3DDasJQ1Nx3Ls3C4uLjy9zWK3CuEb4h8sS+NwFsYqUN1sViiAAn70ghu4WwoP7sli3SMOGpQauWq5jcYuUCKRp/furWZycsn09ic/nU6uQiPDp8+Ief+k9cbxrAg/sz8Lm0t8NS4UaCF8dSOAmqVCJ5a+Wy8XHzzFw3QoDcb30d3YM5fDTg2Yo+pM59BOka7s0nNvpH8EGAXcMxPH5C2PKniD943MN/OW6GPRZFIxaQyMqW6iGpmzc+UIaOUZ+K2s+niC96mx9xixiGuHrlyUAAA8eMEtqca5VuLpTw91XtECrQX+zUWGlMZYBvvRUGkcn7Bl66ogRJs15psKBHt3b0NM1ceelCXTGCVteycK0i01n7iSoEeHOgQS6EsHobzYqLBWn04wvP53CrlHLm2ZCJ5zXpeGT58VwfJLx4P6smOmcqDDUVmFcJ/S1a95RPH0cg4C/ujiOs9o1fPWFNEw73Fbh+3t1fKTPe66VEnFozMKt29N49ZQNjYD1izVsPNvA1X0GLuzWsO+0jXv3TPlfmLNWobv9CDQz0xTYzsRwCg47H5Vl9/uFjtRWHehuoaIZCwB0ADesjmHlAsLfPZfG25PIH4fhzMSr6NePb14XL1vPmcvYM2rhvw+buLbfwJ0DOgZ6dHTG/eU7k2H87XMpTGTcGnRA+q6EDac8McBuFnAzF4lSyK4eXRb3q7K0fUtxoRwoOKYT2o3KdtTlvQb+a1Mbvr4jjacHLX86XsmVRq4DL2snbCxQHwwz3rNIwyUbWgp+ljQZt29P4+iEyPD+Z3PBGuBkK/IK0cwCJDO5kiPvX2mW25zTWQOga/mV2FLc36HhP69uxW3r44h57VlvjLrypn4DIlkxs7dstXItYRQ5KZuzGd/amcETx3PS0DofedNYy987nrccZnhFxGNxXcht95djUTcThU3mjMWYyPop1Jl1aU7ohFvXJ/CLj7ZhoEf39z1TXfmPzspvZATFQYfNjG/vyuAnr5sVH7D1YE2o0GkuinwCV4VwCofExTJZMfZjZibI2HCawVXEJT06frapDXcMxNGdcJ0r5hcwtxvAmi61NFgo0jnGd3dn8eB+09lvc6w/mUNVYcYCTiS56qOjzSDccnEcj3ysDX+6yphWnwuOF8QJy9sIQekvKBXKkc4xvvFSBt97LSutwdzqT+ZQVQgAu6VzL86sZ8+rOjVs+cNWPHpdGzb1G4hpwaqwO0FoMYLTX9AqHJ6y8bn/TeGh17Oh6k/mUFUIAC8MWQgq3tuj4/6rWvDwtW3YfI6BjhgCUWGLwhZ8edjCJx9PYbu7HcPUn8yhqhBg7ByxMJqyvYWq9kgRijE0wkCPhu99sAW/uq4NX7k4jiWtYq2r12KQ+gtShT88kMWRCVsaEp7+ZA5ZhQSLgW2H/b5D1WqxkG7WLNRx+0ACL17fjh9tbMUNq2NYKgrZLFRocbD6C1KFCxNU9cFYTw71BKngXxzJ4TNr41gQr31DFwpDI2zsM7Cxz8CZDGP3iIWnB3PYPmRhMGljUuoTV+ggPJ1m5Gwuet4o7FBFfzK7F6HJr09JBYjgFxTBfrW7spTI7itLQ6bzoXEbvzxi4qYL4qj2UkKha5GFuCsObOwzcPXZOmwGjk0yDo3b2DNq4cAZC6+P2Tg26fedAJyeAaNpxtLW8tOfLdeatZw+a2roT2YjL3nkqRBSFvPZKXRuRgPKMpGobfnzKMRbXsliY5+B/o7q+o1Xo1CdgHM6Ced0arim37+4nLUYx5OME0kbwynnJK5Gtc2rHFcbp9Jc9cFYT1ZChQDhVJrxTy9lcP9VLaErJ64TVnU6pzFUD4vV0Z/MobcKZf6fYyb+Y59/LqaaVmGjca1xOm1DFf3JHGqrsEUn9LdrecPv2ZPFjw+aM+of1bQKG4FrCWbGcKr6Kxf15FBPkPa0EH69uR13X5HAum4NMc1J7f+yM4MH9pvI2bUf0c0c41nnspgq+pM51FahzUBnHLhpbQw3ronhwBkbz53IYfeojZ++nsU7SRt3DiTQESt/Z3GQLbW55Fqy1qk0YyqX1/pShkNtFaYtp5fjklYNcR1Y36NjfU/h6yf1aBWqxNXEiSkbqZw6LUGZQ1XhpMkYmop0V228MW67O9QfpgqH2irM2owDZ+xAKo2qtPLmslW473TRW5dC59CvFT4zmAtEJ6q08uayVfjqKadHgyotQZlD7zbz1GDOrYBGMZtImoyDY07GUkV/Mod+gnQ8y/jtW36n/0iFlcWuEQv+8aiG/mQOXYUEwtaDWaRzfjPcW5pIhUVju9RBUhX9yRy6CgHG3lEbv35LvlUpilKRtRjPD/nbSxX9yRy6ChmADeC+PRkMp6pvIaqitrlQ4YkppzXthxr6k1kJFRKA40nGP76YyVucSIWF44ljOa/qAKijP5mVUKGIx97O4f59WVg1VGqbPWxmPPZ2ThnlFWMlVOgz4949WWz9vdNXOFLhzDgyYeO10xZUUV4xVkaFgk0b+OeXM/i3vRnInRsiFTrxyJEcpkw1u8rIrJQKBVsM3Lc3i9ufT2MkJVdS53fkbMbP33CyuSrKK8aKqdBnG4yfH8nh+sem8Oib5X/gQhW11VOFjx/L4YR30V4N5RVj6v/RuH95nP3PGQC5f8vsFDqquNsMqkj3hWL9Yg1fvCiOq5YbdbtNTOXIWow/eyKFF4ctr6ohkoGKrMzNFNNZdwu0U89i7D1l46+fSWNZG+FjKwxsPsfAZUt070dmmz12nLTw0oh/tl0V5RVjJe4rLMSXLjHwtUvjGJpy7umzbaAjTljSQljWRlixQMt7Zo3QSqNxJRV4y2b84EAW+T211VBeMVbmvsLpvGvEwsoFGi7vLX0LVqEWViNyqXh60MIzg1ZeQVSdlWwVAoDFjB//Pr/SPh8jZzO2vJKBZavZU7QYK9sqZAAPHTJxcmpmC2o+tQp/dTSHPaPq9hQtxsqdIJV5NM2475XsjLrIfDlBOpKycc+ejPe3Kic/K2FlVSj4kSMmnjg2/7rU2MzYste5BU6EKpqrhJVWIcP5ZeW7dmRwfLL0j7OporagVPjMoOX+bpgaapstK61CwSNpxs1PpvDOpOjj3dwqHMsw7tqRRtZS/5pgMVZehYIPnLHx+adSeHOiua8dmhbj7pfTeCfp7gdF1DZbVl6FMr922sKnHp/Cy8Mz+3urorZaVbjtsIlfHgnviRJBcUOoUOYTU4xPPT6Ff92ZxliG66KnsFS4YyiHb+50zlmJUEVts+WGUaHMpg18f5+Jj/8miW2HsjiTKV4JbpQ4NmnjK8+lkTQb60RoMab+rePsZSpmZyizpz2voGHmMw0rCQYKTCU4JhD62gmbVhjYvDKG9Yudn0NyVlCda4LFmIhwOs246XdT2HvK9veBvD8akKlv64SXWERics1XNJzx5WJWCYtCFixPjzYDuLBbw5qFOvo6CH++1n3WjqIxnmV84ckUXjgZ3IMUVIi8pwUShPKkAoj8Heq8i1oPl2Vfo36hDZLFMrl/ImkCO4ctnMkwNq9swcJ44UqyCpHMAbc8IwpVgZVpYDZEEfAsCAIRu3+TVxH3W43uRMB+578SzORmLJKyV4AMJtfezkwNDbh+lYG7LktgcYu6P047aTL+5tkUnpZ7LbjrQWh8NkQ+cnaO2GHk65CE1BzOy2Ci0JRgP6guLDIrEeGKXh1fuzSB9/Uq/PAbAMMpp9PiiyfF82/8dWoWbngVahrhokUavnxRHB/pM5DQ1VUfABx9l/HFp1LOL8XIy6mIwua9CnUCNizT8dkLYvjQ2QZaFHoIeLF47kQOf789jcEku9safutQEYUFxQ2lwpgGnL9Qx7UrDHxiVQwrOygvDasaOZvx/dey2PJKFqaNPH3L783EyqqQQFgQAxYlCBct1vGBZTquXKqjv0NDQvePdJW1BzjP6vnGSxn87ngOtpvxZXt4oYjCGlaF1/QZOL+LMJxylmIsA3TEAEMDOmKExQnC8nYN/QsIy9s0nNVGiBXRnOrZ6uHDJr6zO4OTU87TI/wTpH5LNlKhy7Wq8Ml3cuiKG7h9IIHl7VogZ65ViwNnLHx7VwZPvlNZqy9sbdWDqX/rhO8SSVuiZBRSISThleO8aQIe97Rq+IsLnQcHdCeo6oKlUgynGA/sz2LbIRMTWa7IHl4oorCgmPq2jrOvQk+MngpnZAjnD2cqXJ7LXepZ3ka4eV0cN66JoT2mXvapJE6nbfzwgImHDpkYSXHeCdtyPD3zNgsrc62wp4Vw45oYPr0mhr72/NSqogqZGYfHbTz8homfHDSRnH/d8ktGaCosxgvihA8uN3DD6hiu6NWdJ9GLURRQ4VjW6Te17bCJF09aSJqVKS9S4RyrsBSvXKDhQ8sNbFph4MqlemgPyEzlGM8PWfjNWya2D1lu3/vymotU6G7AMFVYjhfEgPcv1bFhqYH39eo4t1NDVzy/RRJUDE3ZODphY9eIhe1DFl4etpBurl4tdQ/lVFgJGxqhK0Ho6yBc2K1jVaeGFR3OD4V0JwhxDYjpzmWfmNTBwWLAtJ1fsDEtRspyWnLHJ228OWHj8ISNg2M2hqdsTJiAbdemufmswoa8VmgyMJpmjKZt7B6x8xQT14H2GNBhOF1o2qRrCzkGpkyna3Myx3g3i9KqcrdSEMorq0KQY4om4YZRYTGOQs1Q9lphpaxA1o9UWIA1UYtwMzTYS2kQA/KYxI51lVeOmcj5LqEu7GhF3L/YgCwNayZuqG4zhVhk1rCvjdXCYc+/HhypMGT2QpUFilRIXgkLXWe1sALailRYgCMVqsmRCkNmL1RZoEiF5JWw0HVWCyugrUiFBThSoZocqTBk9kKVBYpUSF4JC11ntbAC2opUWIAjFarJkQpDZi9UWaBIheSVsNB1VgsroK1IhQU4UqGaHKkwZPZClQWKVEheCQtdZ7WwAtqKVFiAIxWqyZEKQ2YvVFmgSIXklbDQdVYLK6CtSIUFOFKhmhypMGT2QpUFilRIXgkLXWe1sALailRYgCMVqsmRCkNmL1RZoEiF5JWw0HVWCyugrUiFBThSoZocqTBk9kKVBYpUSF4JC11ntbAC2opUWIAjFarJkQpDZi9UWaBIheSVsNB1VgsroK1IhQU4UqGaHKkwZPZClQWKVEheCQtdZ7WwAtqqB/8/CKpHTc+FupwAAAAASUVORK5CYII=\"\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":""}