{"version":3,"sources":["webpack://Packs.[name]/./app/assets/javascripts/v2/modules/core/user-cookie-helper.ts","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/controllers/site-navigation-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/controllers/top-navigation-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/directives/partner-switcher-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/directives/user-profile-edit-modal.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/head-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/layout-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/lti-confirm-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/partner_notification_controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/static-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers/subscriptions-controller.js.coffee","webpack://Packs.[name]/./app/assets/images/default/small/user.jpg","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/courses_placeholder.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/levelnew-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/levelbuilding-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/level1-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/level2-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/level3-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/level4-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/mastery-avatar.png","webpack://Packs.[name]/./app/assets/images/v2/memory-bank/location-pin.png","webpack://Packs.[name]/./node_modules/moment/locale sync ar|de|es|fr|ja","webpack://Packs.[name]/./app/javascript/packs/layout-app.js","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/cerego-layout-app.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank-app.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/resources sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/resources/facets_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/resources/memory-bank-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/resources/my-memories-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-bank-asset-helper.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-storage.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/hc-helper.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/progress-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/difficulty-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/timeline-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/total-time-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-bank-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-bank-level.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-bank.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/memory-bank/memory-bank-demo.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation-app.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/resources sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/resources/V3DeloitteAutoLogInResource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/resources/my_profile_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/resources/partners_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/resources/v3_partners_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/context-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/course-context-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/my_partners_service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/product_service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/site-navigation-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/user-manager.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/controllers sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/site-navigation/directives sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/signup-app.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/signup/resources sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/signup/resources/pro_pilot_offer_resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/signup/controllers sync nonrecursive \\.js$","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/signup/controllers/upgrade-pro-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/workload-calculator-app.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/workload-calculator/directives/workload-review-visual.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/workload-calculator/workload-calculator-controller.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/resources/v3-lti-confirmation-mailer-resource.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/edit-partners-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/module_drop_down.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/set-export-service.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/tileable.js.coffee","webpack://Packs.[name]/./app/assets/javascripts/v2/modules/layout/controllers sync nonrecursive ^\\.\\/.*$","webpack://Packs.[name]/./app/assets/javascripts/v3/modules/common/resources/v3-session-resource.js.coffee"],"names":["$cookies","locale","key","rawCookie","JSON","parse","get","this","session_expires_at","sessionExpiresAt","Date","UserCookie","setCookie","stringify","value","options","sameSite","secure","Cookies","set","siteNavigationApp","controller","$scope","$location","DebugHelper","localStorageService","ExternalLinkHelper","SiteNavigationService","myPartnersService","UserManager","$filter","reactNavigationService","$window","WindowHelper","register","_","assignIn","returnPath","Packs","iKnowRoutes","v3_dashboard_path","routes","uiState","shouldShowMobileNav","defaultPartnerImage","selectProduct","product","setProduct","setCurrentSubNav","tab","currentSubNav","selectNav","nav","currentNav","setUIState","context_type","showContentInspiration","showHelpCenter","setReferralLink","window","location","href","match","staticWithContext","context","staticWithoutContext","ceregoAdmin","data","coursesWithPlusPartner","coursesWithContextAndSubNav","coursesWithoutContext","subcontext_type","courseWithPartnerUser","coursesWithCourseContext","proAdminWithGroupMember","groups","createWithContext","createWithoutContext","createWithSetContext","createWithSeriesContext","setCreateVisibleTabs","learnShowBackInstructional","setInstructionalReturnPath","learnShowBackHome","learnWithoutBothContextAndSubNav","learnWithSetContext","learnWithSeriesContext","learnWithCourseContext","learnWithAssignmentContext","proAdminWithPeople","proAdminWithDashboard","currentProductPartner","proAdminWithPartner","new_version","learn_version","create","shouldShowItems","scorm_package_id","shouldShowSeries","shouldShowEdit","can_edit","shouldShowDistractors","isBBC","shouldShowCollab","partner_id","shouldShowHistory","shouldShowquickEntry","shouldShowBulkUpload","shouldShowCSV","getCurrentPartner","attributes","buildNameString","toggleLeftNavMobile","setCurrentPath","currentPath","path","type","v3_learn_set_instructional_items_path","v3_learn_series_instructional_items_path","v3_learn_course_instructional_items_path","currentUser","includes","vertical","segment","id","showReferralLink","name","nameString","goToV4Nav","document","cookie","getBaseReactUrl","$on","event","$event","current","previous","reset","locals","$product","$nav","$tab","$watch","initialize","then","partnerLibraries","forceV3Nav","pathname","startsWith","currentPartner","currentProPartner","inIframe","updatePrimaryPartner","$routeParams","productService","FreeTrialModalService","params","email","showPartnerSwitcher","dropdown","urls","stateUI","initNavigationUrls","currentProduct","currentPlusPartner","chooseProduct","proAdmin","v3_partner_dashboard_path","slug","proCourses","v3_courses_path","partnerId","proCreate","v2_sets_path","basicLearn","basicCreate","plusCourses","setContext","contextType","contextId","v3_course_path","v2_create_set_path","v2_create_series_path","expandMobileLeftNav","console","log","$root","$broadcast","initClassAndProduct","expireDays","daysUntilExpiration","productTitle","ceregoIconClass","productTextClass","userString","hideAllDropDowns","shouldShowProductDropDown","shouldShowUserDropDown","toggleUserDropDown","preventDefault","stopPropagation","dropdownState","toggleProductDropDown","loadUser","user","relationships","image","showImage","newVal","oldVal","shouldDisplayFreeTrialExpiredModal","displayFreeTrialExpiredModal","getPaginatedPartners","results","partitions","plus_partners","partition","p","pro_partners","shouldShowPartnerSwitcher","length","dismissDropdownHandler","$apply","angular","element","click","unbind","$timeout","$document","V3ModelHelper","query","direction","currentPage","partnerOrders","desc","asc","default_direction","defaultUserImage","toggleSortDirection","getPage","num","order_by","result","totalCount","meta","partners","nextPageLinks","links","currentPartnerImage","imageForPartner","partner","setCurrentPartner","hadActivePartner","chooseProductPartner","loadPage","closeModal","focus","UsersResource","EmailsResource","LanguagesResource","TimezonesResource","MyProfileResource","MyGroupsResource","V3OAuthResource","bootstrapData","currentTab","member_ids","toggles","available_locales","user_min_password_len","addEmail","clearStatus","email_address","new_email","success","emails","push","response","setStatus","error","deleteEmail","filter","em","confirmEmail","confirm_email","email_id","setPrimaryEmail","primary","make_primary","flag","status","dirty","message","updateUser","manual_timezone","timezone","native_language_id","language","code","save","setLocale","write","reload","updatePassword","pick","current_password","password","password_confirmation","fetchTimeZone","timezones","find","languageDBCodeFromLocaleCode","fetchLanguages","native_languages","locales","map","native_name","parseInt","hasAuth","arg","buildMemberIDHash","partner_member_ids","member_id_partners","member_partner","member_id","toString","user_id","partner_name","partner_slug","partner_settings","member_id_slug","updateMemberIDs","updateUserMemberId","pm_id","user_partner_member_ids","showSuccess","showError","disconnectable","disconnectGoogle","confirm","provider","logError","getGroupPartners","filteredGroups","group","uniqBy","member_id_enabled","loadGroupInfo","with_partner_info","url","icon_image_id","ceregoLayoutApp","tagline","title","$titleTag","$compile","$mdToast","toastHelper","$q","ModalService","showSpinnerLoader","loading","layout","userLoading","returnHome","v3_root_path","showModal","modalOptions","modal","createElement","attr","el","body","append","showToast","signedIn","showSignin","showSignup","setCurrentProduct","header","$headerTheme","hideFooter","lti_inactivity_logout_v3_static_path","isLTI","$isLTI","embed","hasClass","isMHE","fixedFooter","$fixedFooter","$showSignup","contentModifierClass","$contentModifierClass","isV4Embed","theme","segmentation","getSegmentation","role","getRole","pingSegment","parent","postMessage","V3LtiConfirmationMailerResource","state","sendEmail","client_id","external_user_id","submitToken","e","getElementById","submit","isValid","buildFormData","searchParams","search","request_path","formData","FormData","PartnersResource","V2GroupContextService","SubscriptionsResource","debug","toggleNotification","subscriptions","update","partner_email_settings","subscription","subscriptionKeys","isUndefined","keys","$route","learnMore","visible","bowser","msie","setMessage","interval","cancel","group_id","token","destroy","keysFor","module","exports","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","Object","resolve","config","localStorageServiceProvider","$routeProvider","setStorageCookie","when","v2_partner_notifications_path","templateUrl","partners_v2_templates_path","v2_unsubscribe_path","v2_template_path","v2_partner_unsubscribe_path","workload_v2_static_path","static_v2_templates_path","static_v3_templates_path","upgrade_v2_browser_path","browsers_v2_templates_path","v3_lti_users_confirm_path","lti_users_v3_templates_path","otherwise","template","v3_signin_path","forEach","memoryBank","run","amMoment","changeLocale","moment","relativeTimeThreshold","factory","$resource","method","isArray","APIRoutes","v2_facets_path","v2_facet_path","v2_item_facets_path","item_id","delete","userModules","v2_user_goals_memory_bank_path","userAggregate","v2_user_aggregate_memory_bank_path","userSetFacets","v2_user_set_items_memory_bank_path","module_id","userSeriesFacets","v2_user_series_items_memory_bank_path","userSeriesGoals","v2_user_series_goals_memory_bank_path","userSetAggregate","v2_user_set_aggregate_memory_bank_path","userSeriesAggregate","v2_user_series_aggregate_memory_bank_path","setAggregate","v2_set_aggregate_memory_bank_path","groupUserModules","v2_group_user_goals_memory_bank_path","groupSetUsers","v2_group_set_items_memory_bank_path","groupSeriesUsers","v2_group_series_items_memory_bank_path","groupGoalStanding","v2_group_set_standing_memory_bank_path","groupSeriesStanding","v2_group_series_standing_memory_bank_path","v2_my_memories_path","$rootScope","$new","defaultModuleOrb","defaultUserOrb","level_slug","MemoryBankResource","cache","cacheKey","constraints","aggregate","my_group_id","lastStudyTime","module_type","loadMemAgg","user_guid","collection_ids","deferred","defer","userMemAgg","promise","getLastConstraints","lastConstraints","setLastConstraints","load","resource","need_set_score","timeout","memories","reject","service","MemoryBankLevelsService","threshold","isFacet","aggregatorFn","reverse","bins","groupBy","max","bin","grid","sums","x","col","sum","levels","$interval","BOX_SIZE","SVG_WIDTH","MOBILE_TOP_PADDING","width","STAR_SIZE","STAR_CONTAINER_SIZE","isIE","msedge","orbRetention","d","orb_type","current_retention","average_current_retention","updateLine","selection","class_name","level","copy","animate","levelLine","selectAll","isEmpty","initial_x","level_options","old_score","classed","select","string","levelLineHeight","node","getBoundingClientRect","height","x_position","xScale","viewBox","y","y1","y2","x1","x2","rx","ry","text","transform","shape","class","star_shape","points","textContent","updateGoalLine","scoring_goal","scoring_goal_slug","updateLevelLine","score","animateLevelLine","isNull","roundedScore","intervalChunk","scoreText","clearInterval","transition","delay","duration","ease","animateGoalStar","starFinishedAnimateInMS","remove","updateGoalStar","updateIEGoalStar","addGoalLines","goal_achieved","last","intLevel","progress","updateAxis","updateScales","svgDimensions","radius","isHC","bb","left","right","top","bottom","Math","ceil","lastIntLevel","floor","domain","concat","range","times","i","continousXScale","d3","scale","linear","continousYScale","yDomain","quantizedYScale","quantize","xDomain","quantizedXScale","yScale","flatten","count","target","opacityScale","calculateFinalPosition","setSourcePosition","preload","each","finalPosition","hasOwnProperty","setTargetPosition","createNode","hcAnimate","random","style","hcHelper","shouldPerformCollisions","bucket","quantile","sortBy","difficulty_bucket","areaScale","pow","min","offset","shouldCollide","a","b","collisionForce","l","r","alpha","sqrt","delayMult","field","TRANSITION_DURATION","now","accessor","formatter","d3Formatter","timeFormat","multi","getMinutes","getHours","getDay","getDate","getMonth","xAxis","svg","axis","timeScale","ticks","orient","tickFormat","call","xGrid","tickSize","nowLine","padding","dateAdd","date","days","setDate","dates","time","index","indexOf","pos","timelineFaded","timeHelper","round","tickValues","msecToString","xPadding","directive","restrict","scope","orbs","mode","selectedOrb","isDemo","progressVisual","difficultyVisual","timelineVisual","totalTimeVisual","lockedLevelSize","moveToFront","parentNode","appendChild","moveToPosition","visual","tick","force","on","startTick","weight","performInitialCollisions","wiggle","enforceFullBoundingBox","quadtree","geom","nodes","nx1","nx2","ny1","ny2","visit","quad","point","dx","dy","stop","onMouseOver","$emit","onMouseOut","pulse","circle","repeat","updateData","keyFn","learning_engine_guid","oldPositions","oldPos","px","py","createOrb","disabled","remixed","has_image","parentOrb","that","$","hoverIntent","cx","cy","preserveAspectRatio","unclickable","resetAnimation","fixed","linkDistance","linkStrength","doAnimate","generateAdjacencyMatrix","source","start","background","selected","updateSVG","totalLevels","totalLevelsExcludeUnstarted","slugLevel","enter","exit","gravity","charge","friction","chargeDistance","size","link","attrs","defs","$watchCollection","oldData","toggle","orbId","oldMode","hourInMsec","dayInMsec","monthInMsec","eighthour","oneday","fivedays","threeweeks","threemonths","ninemonths","minLevel","locked","minimumReviewInterval","maximumReviewInterval","minDaysPermanence","maxDaysPermanence","getLevelFromPermanence","review_interval","first","binContinuousLevel","checkpoint_level","slice","myGroup","demo","eligibleItemsCount","showDashboard","showHeader","forceAssignmentContext","memoryBankModal","allowStanding","memory_bank_v2_templates_path","$analytics","MemoryStorage","StudyItemsService","PassageHighlightingService","MemoryBankAssetHelper","FacetsResource","MySetsResource","MySeriesResource","MyMemoriesResource","unlockedLevels","themes","currentTheme","drop","facetsByGuid","forMobile","showStandingInstruction","viewModes","label","helpLevels","description_html","frequency","detail","study_time_item","study_time_set","study_duration","helpModes","description","helpModeClasses","classes","currentHelpMode","setCurrentHelpMode","setCurrentTheme","setCurrentMode","eventTrack","category","clearTooltip","previousMode","currentMode","reloadData","prepareDashboard","currentModule","setCurrentUser","forceSpinner","setCurrentModule","in_schedule","showScoringGoal","facetForGuid","guid","sample","getOrbCta","orb","studied_items_count","up_for_review","getOrbCtaClasses","getOrbNextReviewText","getLeftHeaderText","dashboardOrbs","union","orbsByLevel","unstarted","callback","cta","ctaClasses","nextReviewText","anchor","facet","missingGuids","difference","loadContentForGuids","prepareFacet","dateInFuture","see_next_at","launchStudySession","moduleType","loadStudyItem","studyItem","learnPath","prepareModule","module_path","v3_learn_series_path","v3_learn_set_path","prepareUser","username","icon_image","finalizeLoad","optionalCallback","unstarted_items_count","items_count","memories_count","maxLevelShown","header_locked","unlockedByDefault","reduce","memo","aggregateStats","active_count","fading_count","unstarted_count","eligible_items_count","studied_items","hasEligibleItems","some","loadingOrb","dataRequestId","level_new","level_building","level_1","level_2","level_3","level_4","mastered","my_memories","fadingMemories","studied_since","recentMemories","recentGuids","m","fading_only","series_id","set_id","loadData","loadModuleAgg","toggleSchedule","tooltipOrb","fromTooltip","addToSchedule","removeFromSchedule","reloadTimer","removing","levelClasses","themeClasses","classModifier","tooltipFacet","tooltipDirty","stopTooltipTimer","tooltipTimer","startTooltipTimer","revealTooltip","tooltipRevealed","prepareTooltipFacets","facets","image_map_node","region","cloze_node","text_html","cloze_text","sequence_node","position","concept","association","guids","values","levelsBySlug","keyBy","allowDirectModuleSelection","orbOnLeft","tooltipStyle","toggleClass","runOnce","allLevels","initializeDemo","addClass","step","slideUp","show","learn","learn_v3_deloitte_autologin_sessions_path","courses","courses_v3_deloitte_autologin_sessions_path","v3_my_profile_path","v2_my_partner_path","v2_partner_path","sets","v2_partner_sets_path","series","v2_partner_series_index_path","series_save","my_partners","v2_partners_path","v3_partner_path","v3_partners_path","v3_my_partners_path","SetsResource","SeriesResource","LtiService","V3CoursesResource","hasLoadedAtLeastOnce","fromPreview","loadContext","loadGroup","onError","paymentRequired","hasOverride","override","overrides","dataContextId","context_id","dataContextType","setId","seriesId","course","getCourseId","course_id","checkForRefresh","resetCourse","refreshRequired","fetchCourse","markRefreshRequired","childRefreshRequired","removeChildRefreshRequired","include","V3PartnersResource","CourseContextService","moduleContextService","VERSION","fetchFromLocalStorage","fromJson","persistInLocalStorage","toJson","finishInitialization","myPartnersServiceInitialized","deferredLoadPartner","currentProPartnerId","today","startOf","diff","choosePlusPartner","chooseProPartner","showPartnerModuleDetails","getPartnerIdFromRoute","loadPreviousProPartner","deferredLoadPrevious","loadPartner","loadedMatchingPartner","loadedPartner","failure","loadCourse","loadModule","permissions","editable","loadDefault","paginatedDeferred","page_number","paginationOrder","paginationQuery","sort","paginated_partners","tryResolve","resolved","setCourseId","courseId","lastCourseContext","isLearn","isCreate","sameOrigin","host","split","Keepalive","V3SessionResource","V3DeloitteAutoLogInResource","AmplitudeService","tryClearLocalStorage","clearAll","initialized","loadDeloitteUser","signOutClicked","signOut","resetUser","isAdmin","isCeregoInternal","showPrototype","isNewNav","stage","is_paid","is_mooc","is_courseware","is_new_nav","addHotJar","innerHTML","async","charset","getElementsByTagName","integrations","traits","analytics","identify","page","trackSegment","event_name","track","pingAmplitude","created_at","amplitude","Identify","unauthenticatedRedirect","getTimezoneOffset","ping","setUsername","setUserId","setUserProperties","dimension1","dimension2","dimension3","amplitudeSessionId","_sessionId","logEvent","zE","isFunction","hide","isCAISUser","featureFlagSiteAdminOnly","primary_partner_id","$promise","signupApp","v3_pro_pilot_offer_path","ProPilotOffersResource","StripeService","selectPlan","plan","currentPlan","stripeHandler","stripeOptions","panelLabel","amount","cost","configureHandler","offer_token","pilotOffer","customCopy","partnerName","workloadCalculatorApp","yLabel","stackY","layers","stack","yStackMax","layer","margin","ordinal","rangeRoundBands","colorScale","n","strokeScale","numTicks","rangeExtent","tickPadding","yAxis","yGrid","rect","rangeBand","minStudyPerItem","maxDays","itemsEligible","averageIntervals","itemsAtLevel","schedule","initialItems","initialItemFrequencyWeeks","initialItemDurationWeeks","initialInterval","minimumInterval","targetRetention","targetLevel","ticksToTarget","incorrectFactors","correctFactors","numeric","timeFor","getTime","addNewItem","reviewTick","madlibMinutes","madlibItems","madlibWeeks","planNewItems","newItems","planWeeks","planRetentionMinutes","validDays","outerSum","innerSum","average","isNaN","planRetentionWeeks","weeks","runSimulation","cumItemsAtLevel","levelFor","reduceRight","bestLevel","isString","items","item","countBy","study","factor","val","debouncedRun","simulationRunning","v3_lti_confirmation_mailer_path","updatePartner","doSuccess","doError","V3SetClonesResource","SetExportService","setLearnURLService","editModulePath","export_status","showExport","showDelete","showCreatorTool","showAddToSeries","cloneOptions","getPreviewUrl","getUrl","version","studyType","preview","returnURL","shouldShowCreatorTools","onCloneSetSuccess","target_set_id","cloneSet","cloneGoalType","goal_type","isScorm","shouldShowAddToSeries","isV3","getCloneOptions","shouldShowDelete","is_owner","shouldShowExport","deleteModule","exportCSV","setExport","settings","library_subscription_state","addToLibrary","removeFromLibrary","initializeStateUI","initializeModuleAttributes","edit_details_v2_create_set_path","edit_details_v2_create_series_path","SetExportsResource","export","onSuccess","job_finished_at","notify","$element","$attrs","$transclude","innerScope","clone","empty","$destroy","transclude","collection","tileSize","ModulePermissionsHelper","$parent","batchSize","maxBatches","batchWidth","elementSize","offsetPadding","rows","rowTiles","$index","take","computeBatchSize","containerSize","innerWidth","currentTile","vIndex","hIndex","trigger","isCurrentTile","tile","arrowStyle","selectTile","getEditText","getTileIconClass","shouldShowDetails","bind","ceregoCommon","v3_sessions_path"],"mappings":"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","file":"js/layout-app-b4a5fdf8f230eb142508.chunk.js","sourcesContent":["import Cookies from 'js-cookie';\n\nexport default class UserCookie {\n public locale?: string = null;\n public sessionExpiresAt: Date;\n private $cookies: ng.cookies.ICookiesService;\n private key = '_cerego_user';\n\n constructor($cookies) {\n const rawCookie = JSON.parse($cookies.get(this.key) || '{}');\n\n this.$cookies = $cookies;\n if (rawCookie.locale) {\n this.locale = rawCookie.locale;\n }\n if (rawCookie.session_expires_at) {\n this.sessionExpiresAt = new Date(rawCookie.session_expires_at);\n }\n }\n\n public setLocale(locale: string): UserCookie {\n this.locale = locale;\n return this;\n }\n\n public write() {\n return setCookie(\n this.key,\n JSON.stringify({\n locale: this.locale,\n session_expires_at: this.sessionExpiresAt\n })\n );\n }\n}\n\nexport function setCookie(key, value) {\n const options = process.env.RAILS_ENV === 'development' ? {} : { sameSite: 'None', secure: true };\n\n return Cookies.set(key, value, options);\n}\n","import defaultSmallUserImage from 'images/default/small/user.jpg'\n\nsiteNavigationApp.controller('siteNavigationCtrl', ['$scope', '$location', 'DebugHelper', 'localStorageService', 'ExternalLinkHelper', 'SiteNavigationService', 'myPartnersService', 'UserManager', '$filter', 'reactNavigationService', '$window', 'WindowHelper', ($scope, $location, DebugHelper, localStorageService, ExternalLinkHelper, SiteNavigationService, myPartnersService, UserManager, $filter, reactNavigationService, $window, WindowHelper) ->\n DebugHelper.register(\"siteNavigationCtrl\", $scope)\n\n _.assignIn $scope, {\n returnPath: Packs.iKnowRoutes.v3_dashboard_path()\n myPartnersService: myPartnersService\n routes: Packs.iKnowRoutes\n SiteNavigationService: SiteNavigationService\n ExternalLinkHelper: ExternalLinkHelper\n uiState:\n shouldShowMobileNav: false\n defaultPartnerImage: defaultSmallUserImage\n\n selectProduct: (product) ->\n if product\n SiteNavigationService.setProduct(product)\n $scope.product = product\n\n # this should be replaced with a breadcrumb type of thing when we have multiple nesting\n setCurrentSubNav: (tab) ->\n $scope.currentSubNav = tab\n\n selectNav: (nav) ->\n $scope.currentNav = nav\n\n setUIState: () ->\n $scope.returnPath = Packs.iKnowRoutes.v3_dashboard_path()\n\n $scope.uiState =\n shouldShowMobileNav: false\n unless SiteNavigationService.context_type\n if $scope.product == 'create'\n $scope.uiState.showContentInspiration = true\n $scope.uiState.showHelpCenter = true\n $scope.setReferralLink()\n\n switch $scope.product\n when \"static\"\n $scope.uiState.showHelpCenter = false\n $scope.uiState.showContentInspiration = false\n if window.location.href.match(\"cards\")\n $scope.uiState.staticWithContext = true\n $scope.uiState.context = \"cards\"\n else if window.location.href.match(\"tis\")\n $scope.uiState.staticWithContext = true\n $scope.uiState.context = \"tis\"\n else\n $scope.uiState.staticWithoutContext = true\n when \"cerego_admin\"\n $scope.uiState.ceregoAdmin = true\n when \"courses\"\n if myPartnersService.currentProductPartner?.relationships?.account?.data\n $scope.uiState.coursesWithPlusPartner = true\n\n if !SiteNavigationService.context_type\n $scope.uiState.coursesWithoutContext = true\n else if SiteNavigationService.context_type && !!$scope.currentSubNav\n $scope.uiState.coursesWithContextAndSubNav = true\n\n if SiteNavigationService.context_type == \"course\" && SiteNavigationService.subcontext_type == \"learner\"\n $scope.uiState.courseWithPartnerUser = true\n else if SiteNavigationService.context_type == 'course'\n $scope.uiState.coursesWithCourseContext = true\n\n when \"groups\"\n if SiteNavigationService.context_type == \"group\" && SiteNavigationService.subcontext_type == \"member\"\n $scope.uiState.proAdminWithGroupMember = true\n else\n $scope.uiState.groups = true\n\n when \"create\"\n if !SiteNavigationService.context_type\n $scope.uiState.createWithoutContext = true\n else\n $scope.uiState.createWithContext = true\n\n if SiteNavigationService.context_type == \"set\"\n $scope.uiState.createWithSetContext = true\n else if SiteNavigationService.context_type == \"series\"\n $scope.uiState.createWithSeriesContext = true\n\n $scope.setCreateVisibleTabs() if SiteNavigationService.context\n\n when \"learn\"\n if SiteNavigationService.subcontext_type == \"instructional_content\"\n if SiteNavigationService.context_type && $scope.currentSubNav\n $scope.uiState.learnShowBackInstructional = true\n $scope.returnPath = $scope.setInstructionalReturnPath()\n break\n else\n break\n else if SiteNavigationService.context_type && $scope.currentSubNav\n $scope.uiState.learnShowBackHome = true\n else\n $scope.uiState.learnWithoutBothContextAndSubNav = true\n\n if SiteNavigationService.context_type == \"set\"\n $scope.uiState.learnWithSetContext = true\n else if SiteNavigationService.context_type == \"series\"\n $scope.uiState.learnWithSeriesContext = true\n else if SiteNavigationService.context_type == \"course\"\n $scope.uiState.learnWithCourseContext = true\n else if SiteNavigationService.context_type == \"assignment\"\n $scope.uiState.learnWithAssignmentContext = true\n\n when \"pro_admin\"\n if SiteNavigationService.context_type == \"partner\" && SiteNavigationService.subcontext_type == \"people\"\n $scope.uiState.proAdminWithPeople = true\n else if SiteNavigationService.context_type == \"partner\" && SiteNavigationService.subcontext_type == \"dashboard\"\n $scope.uiState.proAdminWithDashboard = true\n else if myPartnersService.currentProductPartner\n $scope.uiState.proAdminWithPartner = true\n\n setCreateVisibleTabs: ->\n new_version = SiteNavigationService.context.learn_version == 4\n $scope.uiState.create = {\n shouldShowItems: !SiteNavigationService.context.scorm_package_id\n shouldShowSeries: !SiteNavigationService.context.scorm_package_id && !new_version\n shouldShowEdit: SiteNavigationService.can_edit\n shouldShowDistractors: SiteNavigationService.can_edit && myPartnersService.isBBC() && !new_version\n shouldShowCollab: SiteNavigationService.can_edit && !SiteNavigationService.context.partner_id\n shouldShowHistory: !SiteNavigationService.context.scorm_package_id && SiteNavigationService.can_edit\n shouldShowquickEntry: SiteNavigationService.can_edit && !SiteNavigationService.context.scorm_package_id && !new_version\n shouldShowBulkUpload: SiteNavigationService.can_edit && !SiteNavigationService.context.scorm_package_id && !new_version\n shouldShowCSV: SiteNavigationService.can_edit && !SiteNavigationService.context.scorm_package_id && !new_version\n }\n\n\n getCurrentPartner: ->\n if myPartnersService.currentProductPartner?.attributes[\"account-type\"] == 'plus'\n $scope.buildNameString()\n\n toggleLeftNavMobile: () ->\n $scope.uiState.shouldShowMobileNav = !$scope.uiState.shouldShowMobileNav\n\n setCurrentPath: () ->\n $scope.currentPath = $location.path()\n\n setInstructionalReturnPath: () ->\n if SiteNavigationService.context?.type == \"sets\"\n Packs.iKnowRoutes.v3_learn_set_instructional_items_path(SiteNavigationService.context)\n else if SiteNavigationService.context?.type == \"series\"\n Packs.iKnowRoutes.v3_learn_series_instructional_items_path(SiteNavigationService.context)\n else if SiteNavigationService.context_type == \"course\"\n Packs.iKnowRoutes.v3_learn_course_instructional_items_path(SiteNavigationService.context)\n\n setReferralLink: () ->\n if myPartnersService.currentProductPartner && $scope.currentUser && !['K12','K-12'].includes(myPartnersService.currentProductPartner.attributes.vertical) && myPartnersService.currentProductPartner.attributes.segment == 'Education'\n if $scope.currentUser.id % 2 == 0\n $scope.uiState.showReferralLink = 'referralLinkA'\n else\n $scope.uiState.showReferralLink = 'referralLinkB'\n\n buildNameString: () ->\n if !myPartnersService.currentProductPartner?.attributes?.name\n $scope.nameString = $filter(\"translate\", \"js.top_nav.me\")\n else\n $scope.nameString = $filter('nameInitialHtml')(myPartnersService.currentProductPartner.attributes.name)\n\n goToV4Nav: () ->\n if !($window.location.href.includes('navigationOverride=v3') || $window.location.href.includes('browser/upgrade')) # TODO: Remove first clause after full rollout\n $window.document.cookie = \"use_v4_nav=true; max-age=#{ 60 * 60 * 24 * 365 }; path=/;secure;\";\n $window.location.href = reactNavigationService.getBaseReactUrl() + '/app/nav/dashboard'\n }\n\n $scope.$on \"toggleLeftNavMobile\", (event) ->\n $scope.toggleLeftNavMobile()\n\n $scope.$on '$routeChangeSuccess', ($event, current, previous) ->\n # TODO: Add logic for different products here\n SiteNavigationService.reset()\n $scope.selectProduct(current.locals.$product)\n $scope.selectNav(current.locals.$nav)\n $scope.setCurrentSubNav(current.locals.$tab)\n $scope.getCurrentPartner()\n $scope.setCurrentPath()\n $scope.setUIState()\n\n SiteNavigationService.$watch \"context_type\", (current, previous) ->\n $scope.setUIState()\n\n $scope.$watch 'myPartnersService.currentProductPartner', (current, previous) ->\n $scope.setUIState()\n\n myPartnersService.initialize().then () ->\n $scope.currentUser = UserManager.currentUser\n $scope.partnerLibraries = $scope.currentUser?.relationships?[\"visible-libraries\"]?.data\n $scope.getCurrentPartner()\n\n forceV3Nav = $scope.product == 'cerego_admin' # Some site admin tools still use V3 nav, so don't redirect them to V4 nav\n forceV3Nav ||= $window.location.pathname.startsWith('/lti') # Don't do any redirecting if this is an LTI path\n currentPartner = myPartnersService.currentProPartner || $scope.currentUser?.relationships?['primary-partner']?.data\n if currentPartner?.attributes[\"partner-settings\"]?['show-new-nav'] && !WindowHelper.inIframe() && !forceV3Nav\n UserManager.updatePrimaryPartner(currentPartner.id).then () ->\n $scope.goToV4Nav()\n\n\n $scope.$on \"siteNav:updateUI\", (event) ->\n $scope.setUIState()\n\n $scope\n])\n","siteNavigationApp.controller('topNavigationCtrl', ['$scope', '$routeParams', '$filter', 'DebugHelper', 'localStorageService', 'UserManager', 'SiteNavigationService', 'myPartnersService', 'productService', 'FreeTrialModalService', ($scope, $routeParams, $filter, DebugHelper, localStorageService, UserManager, SiteNavigationService, myPartnersService, productService, FreeTrialModalService) ->\n DebugHelper.register(\"topNavigationCtrl\", $scope)\n\n _.assignIn $scope, {\n myPartnersService: myPartnersService\n UserManager: UserManager\n params: $routeParams\n routes: Packs.iKnowRoutes\n email: \"\"\n showPartnerSwitcher: false\n dropdown: {}\n urls: {}\n stateUI: {}\n\n initNavigationUrls: ->\n if $scope.currentProduct == 'learn' || !(myPartnersService.currentPlusPartner || myPartnersService.currentProPartner)\n myPartnersService.chooseProduct('basic')\n\n if myPartnersService.currentProPartner\n $scope.urls.proAdmin = Packs.iKnowRoutes.v3_partner_dashboard_path(myPartnersService.currentProPartner.attributes.slug)\n $scope.urls.proCourses = Packs.iKnowRoutes.v3_courses_path(partnerId: myPartnersService.currentProPartner.id)\n $scope.urls.proCreate = Packs.iKnowRoutes.v2_sets_path(partnerId: myPartnersService.currentProPartner.id)\n\n $scope.urls.basicLearn = Packs.iKnowRoutes.v3_dashboard_path()\n $scope.urls.basicCreate = Packs.iKnowRoutes.v2_sets_path(partnerId: \"\")\n\n if myPartnersService.currentPlusPartner\n $scope.urls.plusCourses = Packs.iKnowRoutes.v3_courses_path(partnerId: myPartnersService.currentPlusPartner.id)\n\n setContext: (contextType, contextId) ->\n switch contextType\n when \"courses\"\n if myPartnersService.currentProPartner\n $scope.urls.proCourses = Packs.iKnowRoutes.v3_course_path(contextId, partnerId: myPartnersService.currentProPartner.id)\n if myPartnersService.currentPlusPartner\n $scope.urls.plusCourses = Packs.iKnowRoutes.v3_course_path(contextId, partnerId: myPartnersService.currentPlusPartner.id)\n when \"sets\", \"set\"\n $scope.urls.basicCreate = Packs.iKnowRoutes.v2_create_set_path(contextId, partnerId: \"\")\n if myPartnersService.currentProPartner\n $scope.urls.proCreate = Packs.iKnowRoutes.v2_create_set_path(contextId, partnerId: myPartnersService.currentProPartner.id)\n when \"series\"\n $scope.urls.basicCreate = Packs.iKnowRoutes.v2_create_series_path(contextId, partnerId: \"\")\n if myPartnersService.currentProPartner\n $scope.urls.proCreate = Packs.iKnowRoutes.v2_create_series_path(contextId, partnerId: myPartnersService.currentProPartner.id)\n else\n # NOOP - URLs already set by initNavigationUrls are correct\n\n expandMobileLeftNav: () ->\n console.log(\"broadcasting toggleLeftNavMobile\")\n $scope.$root.$broadcast(\"toggleLeftNavMobile\") # is this bad?\n\n initClassAndProduct: () ->\n $scope.currentProduct = productService.currentProduct\n\n $scope.initNavigationUrls()\n\n if myPartnersService.currentProductPartner\n $scope.stateUI.expireDays = myPartnersService.daysUntilExpiration(myPartnersService.currentProductPartner)\n\n switch $scope.currentProduct\n when 'cerego_admin'\n $scope.productTitle = 'js.top_nav.admin'\n $scope.ceregoIconClass = \"cerego-basic-icon\"\n $scope.productTextClass = \"font-product-basic\"\n when 'pro_admin', 'groups'\n $scope.productTitle = \"js.top_nav.admin\"\n $scope.ceregoIconClass = \"cerego-pro-icon\"\n $scope.productTextClass = \"font-product-pro\"\n when 'courses'\n if myPartnersService.currentProductPartner?.attributes['account-type'] == 'pro'\n $scope.productTitle = \"js.top_nav.courses\"\n $scope.ceregoIconClass = \"cerego-pro-icon\"\n $scope.productTextClass = \"font-product-pro\"\n else\n $scope.ceregoIconClass = \"cerego-plus-icon\"\n $scope.productTitle = \"js.top_nav.courses\"\n $scope.productTextClass = \"font-product-plus\"\n when 'create'\n if myPartnersService.currentProductPartner && myPartnersService.currentProductPartner.attributes['account-type'] == 'pro'\n $scope.productTitle = \"js.top_nav.create\"\n $scope.ceregoIconClass = \"cerego-pro-icon\"\n $scope.productTextClass = \"font-product-pro\"\n else\n $scope.productTitle = \"js.top_nav.create\"\n $scope.ceregoIconClass = \"cerego-basic-icon\"\n $scope.productTextClass = \"font-product-basic\"\n else\n $scope.productTitle = \"js.top_nav.learn\"\n $scope.ceregoIconClass = \"cerego-basic-icon\"\n $scope.productTextClass = \"font-product-basic\"\n\n buildNameString: () ->\n if !$scope.currentUser.attributes.name\n $scope.userString = $filter('translate')(\"js.top_nav.me\")\n else\n $scope.userString = $filter('nameInitialHtml')($scope.currentUser.attributes.name)\n\n hideAllDropDowns: () ->\n $scope.dropdown.shouldShowProductDropDown = false\n $scope.dropdown.shouldShowUserDropDown = false\n\n toggleUserDropDown: ($event) ->\n $event.preventDefault()\n $event.stopPropagation()\n dropdownState = $scope.dropdown.shouldShowUserDropDown\n $scope.hideAllDropDowns()\n $scope.dropdown.shouldShowUserDropDown = !dropdownState\n\n toggleProductDropDown: ($event) ->\n $event.preventDefault()\n $event.stopPropagation()\n dropdownState = $scope.dropdown.shouldShowProductDropDown\n $scope.hideAllDropDowns()\n $scope.dropdown.shouldShowProductDropDown = !dropdownState\n\n }\n\n $scope.$on '$routeChangeSuccess', ($event, current, previous) ->\n myPartnersService.initialize().then () ->\n $scope.initClassAndProduct()\n\n UserManager.loadUser(true).then (user) ->\n $scope.currentUser = user\n if $scope.currentUser.attributes.email\n $scope.email = $scope.currentUser.attributes.email\n if $scope.currentUser.relationships.image.data\n $scope.showImage = true\n else\n $scope.showImage = false\n $scope.buildNameString()\n\n myPartnersService.initialize().then () ->\n $scope.initClassAndProduct()\n\n SiteNavigationService.$watch \"context\", (newVal, oldVal) ->\n $scope.setContext(SiteNavigationService.context?.type || SiteNavigationService.context_type, SiteNavigationService.context?.id)\n\n if FreeTrialModalService.shouldDisplayFreeTrialExpiredModal(user.attributes['all-partners-expired'], $scope.currentProduct, myPartnersService.currentProPartner)\n FreeTrialModalService.displayFreeTrialExpiredModal()\n\n # TODO: cache this in local storage\n myPartnersService.getPaginatedPartners().then (results) ->\n partitions = _.partition(results.data, (p) -> p.attributes['account-type'] == 'plus')\n plus_partners = partitions[0]\n pro_partners = partitions[1]\n $scope.shouldShowPartnerSwitcher = plus_partners.length > 1 || pro_partners.length > 1\n\n $scope.dismissDropdownHandler = (event) ->\n $scope.$apply ->\n $scope.dropdown = {}\n\n angular.element(\"body\").click $scope.dismissDropdownHandler\n\n $scope.$on '$destroy', ->\n angular.element(\"body\").unbind('click', $scope.dismissDropdownHandler)\n])\n","import defaultSmallUserImage from 'images/default/small/user.jpg'\n\nsiteNavigationApp.controller(\"partnerSwitcherModal\", ['$scope', '$location', '$filter', '$timeout', '$document', '$window', 'myPartnersService', 'DebugHelper', 'localStorageService', 'SiteNavigationService', 'productService', 'V3ModelHelper', 'UserManager', ($scope, $location, $filter, $timeout, $document, $window, myPartnersService, DebugHelper, localStorageService, SiteNavigationService, productService, V3ModelHelper, UserManager) ->\n DebugHelper.register(\"partnerSwitcher\", $scope)\n\n _.assignIn $scope,\n stateUI:\n query: \"\"\n direction: \"desc\"\n\n myPartnersService: myPartnersService\n dropdown: {}\n currentPage: 1\n partnerOrders: [\n name: \"js.filters.name\"\n direction:\n desc: \"name\"\n asc: \"-name\"\n default_direction: \"desc\"\n ]\n defaultUserImage: defaultSmallUserImage\n\n toggleSortDirection: ($event) ->\n $event.preventDefault()\n $scope.stateUI.direction = if $scope.stateUI.direction == 'asc' then 'desc' else 'asc'\n $scope.getPage(1)\n\n getPage: (num) ->\n myPartnersService.getPaginatedPartners(num, $scope.order_by.direction[$scope.stateUI.direction], $scope.stateUI.query).then (result) ->\n $scope.currentPage = num\n $scope.totalCount = result.meta['total-count']\n $scope.partners = V3ModelHelper.parse(result)\n $scope.nextPageLinks = result.links\n\n currentPartnerImage: () ->\n $scope.imageForPartner(myPartnersService.currentProductPartner)\n\n imageForPartner: (partner) ->\n partner?.relationships?.image?.data?.attributes\n\n setCurrentPartner: ($event, partner) ->\n $event.preventDefault()\n if partner\n hadActivePartner = !!myPartnersService.currentProductPartner\n\n UserManager.updatePrimaryPartner(partner.id).then () ->\n myPartnersService.chooseProductPartner(partner)\n myPartnersService.chooseProduct('basic') unless hadActivePartner\n $scope.loadPage(partner)\n $scope.closeModal()\n\n loadPage: (partner) ->\n # TODO: revisit this logic, it leads to some weird UX\n if productService.currentProduct == \"courses\"\n $window.location.href = Packs.iKnowRoutes.v3_courses_path({partnerId: partner.id})\n else if productService.currentProduct == \"create\"\n $window.location.href = Packs.iKnowRoutes.v2_sets_path({partnerId: partner.id})\n else if productService.currentProduct == \"pro_admin\" || productService.currentProduct == \"groups\"\n $window.location.href = Packs.iKnowRoutes.v3_partner_dashboard_path(partner.attributes.slug)\n else\n $window.location.href = Packs.iKnowRoutes.v3_dashboard_path()\n\n $scope.order_by = $scope.partnerOrders[0]\n\n myPartnersService.initialize().then () ->\n $scope.getPage(1)\n $timeout () ->\n angular.element(\"#partner-search-input\").focus()\n])\n","import UserCookie from 'javascripts/v2/modules/core/user-cookie-helper'\n\nsiteNavigationApp.controller(\"userProfileEditModal\", ['$scope', '$routeParams', '$window', '$filter', '$cookies', 'DebugHelper', 'UserManager', 'UsersResource', 'EmailsResource', 'LanguagesResource', 'TimezonesResource', 'MyProfileResource', 'MyGroupsResource', 'V3OAuthResource', ($scope, $routeParams, $window, $filter, $cookies, DebugHelper, UserManager, UsersResource, EmailsResource, LanguagesResource, TimezonesResource, MyProfileResource, MyGroupsResource, V3OAuthResource) ->\n DebugHelper.register(\"userProfileEditModal\", $scope)\n\n bootstrapData = angular.element(\"#top-nav--product-switcher\").data()\n _.assignIn $scope,\n currentTab: \"account\"\n member_ids: {}\n toggles: {}\n defaultUserImage: bootstrapData.defaultUserImage\n available_locales: AVAILABLE_LOCALES # global vars passed in via webpack.DefinePlugin\n user_min_password_len: USER_MIN_PASSWORD_LEN\n\n addEmail: ->\n $scope.clearStatus(true)\n EmailsResource.create { email_address: $scope.user.new_email }\n , (success) ->\n $scope.emails.push(success.response)\n $scope.user.new_email = null\n $scope.setStatus(true, \"js.user_profile.edit_user.email_added_message\")\n , (error) ->\n $scope.setStatus(false, error.data.response)\n\n deleteEmail: (email) ->\n $scope.clearStatus(true)\n\n $scope.emails = _.filter $scope.emails, (em) ->\n email.id != em.id\n EmailsResource.delete { id: email.id }\n , (success) ->\n $scope.setStatus(true, \"js.user_profile.edit_user.email_removed_message\")\n , (error) ->\n $scope.setStatus(false, error.data.response)\n\n confirmEmail: (email) ->\n $scope.clearStatus(true)\n\n EmailsResource.confirm_email { email_id: email.id }\n , (success) ->\n $scope.setStatus(true, \"js.user_profile.edit_user.email_confirmation_message\")\n , (error) ->\n $scope.setStatus(false, error.data.response)\n\n setPrimaryEmail: (email) ->\n for e in $scope.emails\n e.attributes.primary = false\n email.attributes.primary = true #show immediate feedback\n $scope.clearStatus(true)\n\n EmailsResource.make_primary { id: email.id }\n , (success) ->\n $scope.setStatus(true, \"js.user_profile.edit_user.email_changes_message\")\n , (error) ->\n $scope.setStatus(false, error.data.response)\n\n clearStatus: (flag) ->\n $scope.status =\n dirty: flag\n success: false\n message: null\n\n setStatus: (success, message) ->\n $scope.status =\n dirty: false\n success: success\n message: message\n\n updateUser: ->\n $scope.clearStatus(true)\n params =\n name: $scope.user.attributes.name\n manual_timezone: $scope.user.timezone && $scope.user.timezone.name\n native_language_id: $scope.user.language && $scope.user.language.id\n locale: $scope.user.locale.code\n\n UsersResource.save({ id: $scope.user.id }, params, (success) ->\n cookie = new UserCookie($cookies)\n cookie.setLocale(success.response.locale).write()\n $scope.setStatus(true, \"js.user_profile.edit_user.profile_saved_message\")\n $window.location.reload()\n , (error) ->\n $scope.setStatus(false, error.data.response)\n )\n\n updatePassword: ->\n $scope.clearStatus(true)\n params = _.pick($scope.user, ['id', 'password', 'current_password', 'password_confirmation'])\n UsersResource.save { id: $scope.user.id }, params\n , (result) ->\n $scope.user.current_password = null\n $scope.user.password = null\n $scope.user.password_confirmation = null\n $scope.setStatus(true, \"js.user_profile.edit_user.password_saved_message\")\n , (error) ->\n $scope.setStatus(false, error.data.response)\n\n fetchTimeZone: ->\n TimezonesResource.query {}, (result) ->\n $scope.timezones = result.response\n if $scope.user.attributes.timezone\n $scope.user.timezone = _.find($scope.timezones, name: $scope.user.attributes.timezone)\n\n languageDBCodeFromLocaleCode: (locale) ->\n if locale == 'zh-TW'\n 'zh-Hant'\n else if locale == 'zh-CN'\n 'zh-Hans'\n else\n locale\n\n fetchLanguages: ->\n LanguagesResource.query {}, (result) ->\n $scope.native_languages = result.response\n $scope.locales = _.map $scope.available_locales, (locale) ->\n name: _.find($scope.native_languages, code: $scope.languageDBCodeFromLocaleCode(locale)).native_name\n code: locale\n\n $scope.user.locale = _.find($scope.locales, code: $scope.user.attributes.locale || DEFAULT_LOCALE)\n\n if $scope.user.relationships.language.data\n $scope.user.language = _.find($scope.native_languages, id: parseInt($scope.user.relationships.language.data.id))\n\n hasAuth: (arg) ->\n return false unless $scope.user\n switch arg\n when \"google\"\n $scope.user.relationships[\"google-auth\"].data\n when \"password\"\n $scope.user.attributes[\"has-password\"]\n else\n false\n\n buildMemberIDHash: () ->\n $scope.user.partner_member_ids = _.map $scope.member_id_partners, (partner) ->\n member_partner = _.find $scope.user.relationships[\"user-partner-member-ids\"].data, (member_id) -> member_id.relationships.partner.data.id == partner.id.toString()\n {\n user_id: $scope.user.id\n partner_id: partner.id\n member_id: (member_partner && member_partner.attributes[\"member-id\"]) || \"\"\n partner_name: partner.name\n partner_slug: partner.partner_settings.member_id_slug\n }\n\n updateMemberIDs: ->\n #TODO - this should only take one call\n for pm_id in $scope.user.partner_member_ids\n unless pm_id.member_id.length == 0\n $scope.updateUserMemberId(pm_id)\n\n updateUserMemberId: (pm_id)->\n #TODO - errors should be per member id since we allow mass update\n UsersResource.save { id: $scope.user.id }, { user_partner_member_ids: pm_id }\n , (success) ->\n $scope.showSuccess = true\n , (error) ->\n $scope.showError = true\n\n disconnectable: ->\n $scope.hasAuth('password')\n\n disconnectGoogle: ->\n if $window.confirm($filter('translate')(\"js.user_profile.edit_user.unlink_google_confirm\"))\n V3OAuthResource.delete\n provider: \"google\"\n , (success) ->\n $scope.user.relationships[\"google-auth\"].data = null\n , DebugHelper.logError\n\n\n getGroupPartners: ->\n filteredGroups = _.filter $scope.groups, (group) ->\n !!group.partner\n\n $scope.partners = _.map filteredGroups, (group) ->\n group.partner\n\n $scope.partners = _.uniqBy($scope.partners, 'id')\n $scope.member_id_partners = _.filter $scope.partners, (partner) ->\n partner.partner_settings?.member_id_enabled\n\n loadGroupInfo: ->\n MyGroupsResource.query { with_partner_info: true }\n , (success) ->\n $scope.groups = success.response\n $scope.getGroupPartners()\n $scope.buildMemberIDHash()\n $scope.emails = $scope.user.relationships.emails.data\n $scope.fetchTimeZone()\n $scope.fetchLanguages()\n\n UserManager.loadUser().then (currentUser) ->\n $scope.user = currentUser\n if $scope.user.relationships.image.data\n $scope.user.image =\n id: $scope.user.relationships.image.data.id\n url: $scope.user.relationships.image.data.attributes.url\n $scope.loadGroupInfo()\n\n $scope.$watch \"user.image\", (newVal, oldVal) ->\n if newVal != oldVal\n icon_image_id = $scope.user.image && $scope.user.image.id\n UsersResource.save\n id: $scope.user.id\n icon_image_id: icon_image_id\n , (success) ->\n console.log(\"image is updated\")\n])\n","ceregoLayoutApp.controller('headCtrl', ['$scope', '$routeParams', '$filter', ($scope, $routeParams, $filter) ->\n _.assignIn $scope,\n tagline: \"The standard for personalized learning\"\n meta: {}\n\n $scope.$on '$routeChangeSuccess', ($event, current, previous) ->\n $scope.meta.title = ($filter('translate')(current.locals.$titleTag) || current.locals.$titleTag || $scope.tagline) + \" | Cerego\"\n])\n","ceregoLayoutApp.controller('layoutCtrl', ['$scope', '$routeParams', '$cookies', '$window', '$compile', '$mdToast', '$location', 'DebugHelper', 'UserManager', 'productService', 'toastHelper', '$q', 'ModalService', 'SiteNavigationService', ($scope, $routeParams, $cookies, $window, $compile, $mdToast, $location, DebugHelper, UserManager, productService, toastHelper, $q, ModalService, SiteNavigationService) ->\n DebugHelper.register(\"layoutCtrl\", $scope)\n _.assignIn $scope,\n showSpinnerLoader: true\n loading: true\n layout: {}\n userLoading: true\n UserManager: UserManager\n\n returnHome: () ->\n $window.location.href = Packs.iKnowRoutes.v3_root_path()\n\n showModal: (name, options) ->\n $scope.modalOptions = options\n modal = angular.element(document.createElement('v3-modal')).attr(\"modal-name\", name).attr(\"modal-options\", \"modalOptions\")\n el = $compile(modal)($scope)\n angular.element(document.body).append(el)\n false\n\n showToast: toastHelper.showToast\n\n UserManager.loadUser().then (currentUser) ->\n $scope.userLoading = false\n $scope.layout.user = currentUser\n $scope.layout.signedIn = !!currentUser\n $scope.layout.showSignin = !$scope.layout.showSignup && !$scope.layout.signedIn\n\n $scope.$on \"moduleDropDown:remixProcessing\", (event) ->\n $scope.showSpinnerLoader = true\n\n $scope.$on \"moduleDropDown:processingError\", (event) ->\n $scope.showSpinnerLoader = false\n\n $scope.$on '$routeChangeSuccess', ($event, current, previous) ->\n productService.setCurrentProduct(current.locals.$product) #handle fallbacks in service\n $scope.showSpinnerLoader = false\n $scope.layout.header = current.locals.$headerTheme || \"default\"\n $scope.layout.hideFooter = $location.path() == Packs.iKnowRoutes.lti_inactivity_logout_v3_static_path()\n $scope.layout.isLTI ||= !!current.locals.$isLTI || $routeParams.embed || angular.element(\"body\").hasClass(\"lti\")\n $scope.layout.isMHE ||= $routeParams.embed == \"mhe\"\n $scope.layout.fixedFooter = current.locals.$fixedFooter || false\n $scope.layout.showSignup = !!current.locals.$showSignup\n $scope.layout.showSignin = false if $scope.layout.showSignup\n $scope.layout.contentModifierClass = current.locals.$contentModifierClass\n isV4Embed = SiteNavigationService.isV4Embed()\n $scope.layout.isV4Embed = isV4Embed\n theme = \"theme-\" + $scope.layout.header\n if $scope.layout.isLTI\n theme= \"theme-lti\"\n if $scope.layout.isV4Embed\n theme = \"theme-v4-embed\"\n $scope.layout.theme = theme\n\n if $scope.layout.user\n partner = $scope.layout.user.relationships['primary-partner']\n partner_id = partner?.data?.id || 0\n segmentation = UserManager.getSegmentation($scope.layout.user)\n role = UserManager.getRole($scope.layout.user)\n unless _.includes(process.env.RAILS_ENV, 'govcloud')\n UserManager.pingSegment(partner_id, segmentation, role, $scope.layout.user)\n\n if isV4Embed\n window.parent.postMessage({ pathname: window.location.pathname }, '*')\n $scope.loading = false\n])\n","ceregoLayoutApp.controller('ltiConfirmCtrl', ['$scope', '$window', 'DebugHelper', 'V3LtiConfirmationMailerResource', '$location', ($scope, $window, DebugHelper, V3LtiConfirmationMailerResource, $location) ->\n DebugHelper.register(\"ltiConfirmCtrl\", $scope)\n\n _.assignIn $scope,\n uiState:\n state: \"sendEmail\"\n sendEmail: () ->\n V3LtiConfirmationMailerResource.create\n client_id: $scope.client_id\n external_user_id: $scope.external_user_id\n , (success) ->\n $scope.uiState.state = \"submitToken\"\n , (error) ->\n # TODO show some kind of error message\n DebugHelper.logError(error, \"Error sending token mailer to \" + $scope.email_address + \" for Oauth2Client \" + $scope.client_id)\n\n submitToken: (e) ->\n e.preventDefault()\n document.getElementById(\"ltiform\").submit()\n\n isValid: () ->\n $scope.formData['lti_confirmation_token']?.length > 0\n\n buildFormData: () ->\n\n searchParams = $location.search()\n\n $scope.email_address = searchParams['email_address']\n $scope.request_path = searchParams['request_path']\n $scope.client_id = searchParams['client_id']\n $scope.external_user_id = searchParams['external_user_id']\n\n # add check for client, add client to form data\n if $scope.email_address && $scope.request_path && $scope.client_id\n $scope.formData = new FormData()\n $scope.formData.url = $scope.request_path\n\n $scope.buildFormData()\n\n])\n","ceregoLayoutApp.controller('partnerNotificationsCtrl', ['$scope', '$location', 'myPartnersService', 'PartnersResource', 'V2GroupContextService', 'SubscriptionsResource', ($scope, $location, myPartnersService, PartnersResource, V2GroupContextService, SubscriptionsResource) ->\n window.debug = window.debug || {}\n window.debug[\"partnerNotificationCtrl\"] = $scope\n\n _.assignIn $scope,\n routes: Packs.iKnowRoutes\n\n toggleNotification: (key) ->\n $scope.subscriptions.email[key] = !$scope.subscriptions.email[key]\n params = $scope.subscriptions\n params.partner_id = $scope.partner.id\n SubscriptionsResource.update params\n\n # FIXME: THIS SHOULD SET PARTNER CONTEXT FROM URL\n V2GroupContextService.initialize().then () ->\n $scope.partner = myPartnersService.currentProductPartner\n if $scope.partner\n if !$scope.partner.meta.role #update in case their cache is not cleared and they do not get new role\n PartnersResource.get\n id: $scope.partner.id\n , (success) ->\n _.assignIn($scope.partner,success.response)\n else\n $location.url Packs.iKnowRoutes.v3_courses_path()\n SubscriptionsResource.query {}\n , (success) ->\n $scope.subscriptions = success.response.partner_email_settings.filter (subscription) ->\n subscription.partner_id = $scope.partner.id\n $scope.subscriptions = $scope.subscriptions[0]\n $scope.subscriptionKeys = if _.isUndefined($scope.subscriptions) then [] else _.keys($scope.subscriptions.email).filter (subscription) ->\n !subscription.includes('push_')\n $scope.dirty = false\n])\n","ceregoLayoutApp.controller('staticCtrl', ['$scope', '$route', 'UserManager', ($scope, $route, UserManager) ->\n _.assignIn $scope,\n routes: Packs.iKnowRoutes\n learnMore:\n visible: !bowser.msie\n\n UserManager.loadUser().then (currentUser) ->\n $scope.currentUser = currentUser\n])\n","ceregoLayoutApp.controller('subscriptionsCtrl', ['$scope', '$routeParams', '$timeout', 'DebugHelper', 'SubscriptionsResource', ($scope, $routeParams, $timeout, DebugHelper, SubscriptionsResource) ->\n DebugHelper.register(\"subscriptionsCtrl\", $scope)\n\n _.assignIn $scope,\n dirty: true\n routes: $routeParams\n\n setMessage: (message) ->\n $timeout.cancel($scope.interval) if $scope.interval\n $scope.message = message\n $scope.interval = $timeout ->\n $scope.message = null\n , 5000\n\n update: (group) ->\n $scope.dirty = true\n options = if group\n group_id: group.group_id\n email: group.email\n else if $routeParams.partner_id\n partner_id: $routeParams.partner_id\n email: $scope.subscriptions.email\n else\n email: $scope.subscriptions.email\n\n SubscriptionsResource.update\n token: $routeParams.token\n , options\n , (success) ->\n $scope.setMessage(\"js.subscriptions.update_success\")\n $scope.dirty = false\n\n destroy: ->\n $scope.dirty = true\n SubscriptionsResource.delete\n token: $routeParams.token\n , (success) ->\n $scope.setMessage(\"js.subscriptions.unsubscribe_success\")\n for key in $scope.subscriptionKeys\n $scope.subscriptions.email[key] = false\n $scope.dirty = false\n\n subscriptionKeys: ->\n\n keysFor: (group) ->\n _.keys(group.email)\n\n SubscriptionsResource.query\n token: $routeParams.token\n , (success) ->\n if $routeParams.partner_id\n $scope.subscriptions = success.response.partner_email_settings.filter (subscription) ->\n subscription.partner_id = $routeParams.partner_id\n $scope.subscriptions = $scope.subscriptions[0]\n $scope.subscriptionKeys = if _.isUndefined($scope.subscriptions) then [] else _.keys($scope.subscriptions.email).filter (subscription) ->\n !subscription.includes('push_')\n else\n $scope.subscriptions = success.response\n $scope.subscriptionKeys = _.keys($scope.subscriptions.email).filter (subscription) ->\n !subscription.includes('push_')\n\n $scope.dirty = false\n])\n","module.exports = __webpack_public_path__ + \"media/small/user-b03f1803.jpg\";","module.exports = __webpack_public_path__ + \"media/memory-bank/courses_placeholder-dc7175cd.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/levelnew-avatar-25ec6d89.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/levelbuilding-avatar-a946b4bb.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/level1-avatar-ab847019.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/level2-avatar-d498d881.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/level3-avatar-521919d1.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/level4-avatar-58c36175.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/mastery-avatar-923fa811.png\";","module.exports = __webpack_public_path__ + \"media/memory-bank/location-pin-27ccb03a.png\";","var map = {\n\t\"./ar\": 15,\n\t\"./ar-dz\": 16,\n\t\"./ar-dz.js\": 16,\n\t\"./ar-kw\": 17,\n\t\"./ar-kw.js\": 17,\n\t\"./ar-ly\": 18,\n\t\"./ar-ly.js\": 18,\n\t\"./ar-ma\": 19,\n\t\"./ar-ma.js\": 19,\n\t\"./ar-sa\": 20,\n\t\"./ar-sa.js\": 20,\n\t\"./ar-tn\": 21,\n\t\"./ar-tn.js\": 21,\n\t\"./ar.js\": 15,\n\t\"./de\": 22,\n\t\"./de-at\": 23,\n\t\"./de-at.js\": 23,\n\t\"./de-ch\": 24,\n\t\"./de-ch.js\": 24,\n\t\"./de.js\": 22,\n\t\"./es\": 25,\n\t\"./es-do\": 26,\n\t\"./es-do.js\": 26,\n\t\"./es-us\": 27,\n\t\"./es-us.js\": 27,\n\t\"./es.js\": 25,\n\t\"./fr\": 28,\n\t\"./fr-ca\": 29,\n\t\"./fr-ca.js\": 29,\n\t\"./fr-ch\": 30,\n\t\"./fr-ch.js\": 30,\n\t\"./fr.js\": 28,\n\t\"./ja\": 31,\n\t\"./ja.js\": 31\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 57;","// shim that gets loaded before apps using layout\nimport '../../assets/javascripts/v2/modules/cerego-layout-app.js';\n","require('./memory-bank-app.js')\nrequire('./site-navigation-app.js')\nrequire('./signup-app.js')\nrequire('./workload-calculator-app.js')\n\nwindow.ceregoLayoutApp = angular.module(\"cerego.layout\", [\n \"ngRoute\"\n \"cerego.common\"\n \"cerego.memoryBank\"\n \"cerego.navigations\"\n \"cerego.signup\"\n \"cerego.workloadCalculator\"\n])\n.config([\"localStorageServiceProvider\", \"$routeProvider\", (localStorageServiceProvider, $routeProvider) ->\n localStorageServiceProvider.setStorageCookie(1, '/')\n $routeProvider\n .when Packs.iKnowRoutes.v2_partner_notifications_path(\":partner_id\"),\n templateUrl : Packs.iKnowRoutes.partners_v2_templates_path(\"notifications\")\n controller : 'partnerNotificationsCtrl'\n .when Packs.iKnowRoutes.v2_unsubscribe_path(\":token\"),\n templateUrl : Packs.iKnowRoutes.v2_template_path(\"subscriptions\")\n controller : 'subscriptionsCtrl'\n resolve:\n $titleTag: -> (\"js.title_tags.manage_email_settings\")\n $headerTheme: -> 'minimal'\n .when Packs.iKnowRoutes.v2_partner_unsubscribe_path(\":partner_id\", \":token\"),\n templateUrl : Packs.iKnowRoutes.v2_template_path(\"partner_subscription\")\n controller : 'subscriptionsCtrl'\n resolve:\n $headerTheme: -> 'minimal'\n .when Packs.iKnowRoutes.workload_v2_static_path(),\n templateUrl : Packs.iKnowRoutes.static_v2_templates_path(\"workload\")\n controller : 'workloadCalculatorCtrl'\n resolve:\n $headerTheme: -> 'static'\n .when Packs.iKnowRoutes.lti_inactivity_logout_v3_static_path(),\n templateUrl : Packs.iKnowRoutes.static_v3_templates_path(\"lti_inactivity_logout\")\n resolve:\n $headerTheme: -> 'hidden'\n .when Packs.iKnowRoutes.upgrade_v2_browser_path(),\n templateUrl : Packs.iKnowRoutes.browsers_v2_templates_path(\"upgrade\")\n resolve:\n $titleTag: -> (\"js.title_tags.upgrade_browser\")\n $headerTheme: -> 'minimal'\n .when Packs.iKnowRoutes.v3_lti_users_confirm_path(),\n templateUrl : Packs.iKnowRoutes.lti_users_v3_templates_path(\"confirm\")\n controller : 'ltiConfirmCtrl'\n resolve:\n $headerTheme: -> 'hidden'\n $titleTag: -> \"js.title_tags.confirm_email\"\n .otherwise\n template : \"
\"\n controller: ['$window', ($window) ->\n $window.location.href = Packs.iKnowRoutes.v3_signin_path()\n ]\n])\n\nrequire('./layout/resources/v3-lti-confirmation-mailer-resource.js')\n\nrequire('./layout/edit-partners-service.js')\nrequire('./layout/module_drop_down.js')\nrequire('./layout/set-export-service.js')\nrequire('./layout/tileable.js')\n\n# replace these with explicit import\nreq = require.context('./layout/controllers', false)\nreq.keys().forEach(req)\n","require('jquery-hoverintent')\n\nwindow.memoryBank = angular.module(\"cerego.memoryBank\", [\n \"cerego.common\"\n \"angularMoment\"\n])\n.run(['amMoment', (amMoment) ->\n locale = angular.element(\"body\").data(\"locale\") || DEFAULT_LOCALE\n amMoment.changeLocale(locale)\n moment.relativeTimeThreshold(\"s\", 60)\n moment.relativeTimeThreshold(\"m\", 60)\n moment.relativeTimeThreshold(\"h\", 24)\n moment.relativeTimeThreshold(\"d\", 28)\n moment.relativeTimeThreshold(\"M\", 12)\n])\n\n# replace these with explicit import\nreq = require.context('./memory-bank/resources', false, /\\.js$/)\nreq.keys().forEach(req)\n\nrequire('./memory-bank/memory-bank-asset-helper.js')\nrequire('./memory-bank/memory-storage.js')\nrequire('./memory-bank/hc-helper.js')\n\nrequire('./memory-bank/progress-visual.js')\nrequire('./memory-bank/difficulty-visual.js')\nrequire('./memory-bank/timeline-visual.js')\nrequire('./memory-bank/total-time-visual.js')\n\nrequire('./memory-bank/memory-bank-visual.js')\nrequire('./memory-bank/memory-bank-level.js')\nrequire('./memory-bank/memory-bank.js')\nrequire('./memory-bank/memory-bank-demo.js')\n","var map = {\n\t\"./facets_resource.js\": 663,\n\t\"./memory-bank-resource.js\": 664,\n\t\"./my-memories-resource.js\": 665\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 662;","memoryBank.factory('FacetsResource', ['$resource', ($resource) ->\n $resource \"\", {},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_facets_path()\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_facet_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_item_facets_path(\":item_id\")\n params:\n item_id: \"@item_id\"\n save:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_facet_path(\":id\")\n params:\n id: \"@id\"\n delete:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_facet_path(\":id\")\n params:\n id: \"@id\"\n])\n","memoryBank.factory('MemoryBankResource', ['$resource', ($resource) ->\n $resource \"\",{},\n # USER => MODULES\n userModules:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_goals_memory_bank_path(\":user_id\")\n params:\n user_id: \"@user_id\"\n\n # USER => AGGREGATE\n userAggregate:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_aggregate_memory_bank_path(\":user_id\")\n params:\n user_id: \"@user_id\"\n\n # USER + MODULE => ITEMS\n userSetFacets:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_set_items_memory_bank_path(\":user_id\", \":module_id\")\n params:\n module_id: \"@module_id\"\n user_id: \"@user_id\"\n userSeriesFacets:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_series_items_memory_bank_path(\":user_id\", \":module_id\")\n params:\n module_id: \"@module_id\"\n user_id: \"@user_id\"\n\n # USER + SERIES => SETS\n userSeriesGoals:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_series_goals_memory_bank_path(\":user_id\", \":module_id\")\n params:\n module_id: \"@module_id\"\n user_id: \"@user_id\"\n\n # USER + SERIES => FACETS\n userSetAggregate:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_set_aggregate_memory_bank_path(\":user_id\", \":module_id\")\n params:\n module_id: \"@module_id\"\n user_id: \"@user_id\"\n userSeriesAggregate:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_user_series_aggregate_memory_bank_path(\":user_id\", \":module_id\")\n params:\n module_id: \"@module_id\"\n user_id: \"@user_id\"\n\n # SET => USERS\n setAggregate:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_set_aggregate_memory_bank_path(\":module_id\")\n params:\n module_id: \"@module_id\"\n\n # GROUP + USER => MODULES\n groupUserModules:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_user_goals_memory_bank_path(\":group_id\", \":user_id\")\n params:\n group_id: \"@group_id\"\n user_id: \"@user_id\"\n\n # GROUP + MODULE => USERS\n groupSetUsers:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_set_items_memory_bank_path(\":group_id\", \":module_id\")\n params:\n group_id: \"@group_id\"\n module_id: \"@module_id\"\n groupSeriesUsers:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_series_items_memory_bank_path(\":group_id\", \":module_id\")\n params:\n group_id: \"@group_id\"\n module_id: \"@module_id\"\n\n # Standing Knowledge Bank\n groupGoalStanding:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_set_standing_memory_bank_path(\":group_id\", \":set_id\")\n params:\n group_id: \"@group_id\"\n module_id: \"@set_id\"\n\n groupSeriesStanding:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_group_series_standing_memory_bank_path(\":group_id\", \":series_id\")\n params:\n group_id: \"@group_id\"\n module_id: \"@series_id\"\n\n])\n","memoryBank.factory('MyMemoriesResource', ['$resource', ($resource) ->\n $resource \"\",{},\n query:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_my_memories_path()\n])\n","import coursePlaceholderImage from 'images/v2/memory-bank/courses_placeholder.png'\nimport levelNewAvatarImage from 'images/v2/memory-bank/levelnew-avatar.png'\nimport levelBuildingAvatarImage from 'images/v2/memory-bank/levelbuilding-avatar.png'\nimport level1AvatarImage from 'images/v2/memory-bank/level1-avatar.png'\nimport level2AvatarImage from 'images/v2/memory-bank/level2-avatar.png'\nimport level3AvatarImage from 'images/v2/memory-bank/level3-avatar.png'\nimport level4AvatarImage from 'images/v2/memory-bank/level4-avatar.png'\nimport masteredAvatarImage from 'images/v2/memory-bank/mastery-avatar.png'\n\nmemoryBank.factory(\"MemoryBankAssetHelper\", ['$rootScope', ($rootScope) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"MemoryBankAssetHelper\"] = $scope\n\n _.assignIn $scope,\n defaultModuleOrb: () ->\n coursePlaceholderImage\n\n defaultUserOrb: (level_slug) ->\n switch level_slug\n when \"level_new\"\n levelNewAvatarImage\n when \"level_building\"\n levelBuildingAvatarImage\n when \"level_1\"\n level1AvatarImage\n when \"level_2\"\n level2AvatarImage\n when \"level_3\"\n level3AvatarImage\n when \"level_4\"\n level4AvatarImage\n when \"mastered\"\n masteredAvatarImage\n])\n","memoryBank.factory(\"MemoryStorage\", ['$rootScope', '$q', 'MemoryBankResource', ($rootScope, $q, MemoryBankResource) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"MemoryStorage\"] = $scope\n\n _.assignIn $scope,\n cache: {}\n\n reset: ->\n $scope.cache = {}\n\n cacheKey: (constraints) ->\n key = \"\"\n key += \"aggregate:\" if constraints.aggregate\n key += \"group:\" + constraints.group_id + \":\" if constraints.group_id\n key += \"my_group:\" + constraints.my_group_id + \":\" if constraints.my_group_id\n key += \"user:\" + constraints.user_id + \":\" if constraints.user_id\n key += \"lastStudyTime:\" + constraints.lastStudyTime if constraints.lastStudyTime\n key += constraints.module_type + \":\" + constraints.module_id + \":\" if constraints.module_id\n key\n\n loadMemAgg: (user_guid, collection_ids) ->\n $scope.deferred = $q.defer()\n MemoryBankResource.userMemAgg { user_id: user_guid, \"collection_ids[]\" : collection_ids }\n , (success) ->\n $scope.deferred.resolve(success.response)\n\n $scope.deferred.promise\n\n getLastConstraints: ->\n $scope.lastConstraints\n\n setLastConstraints: (constraints) ->\n $scope.lastConstraints = constraints\n\n load: (constraints) ->\n error = null\n type = null\n resource = null\n\n if constraints.group_id && !constraints.need_set_score\n # Group Knowledge Bank\n if constraints.module_id\n if constraints.user_id\n type = \"facets\"\n constraints.group_id = null # specifying group leads to 403 on backend !?\n if constraints.module_type == \"set\"\n resource = \"userSetFacets\"\n else\n resource = \"userSeriesFacets\"\n else\n type = \"users\"\n if constraints.module_type == \"set\"\n resource = \"groupSetUsers\"\n else\n resource = \"groupSeriesUsers\"\n else if constraints.user_id\n type = \"modules\"\n resource = \"groupUserModules\"\n else\n error = \"Group knowledge bank requires either module or user\"\n resource = null\n else if constraints.user_id\n # \"My\" Knowledge Bank\n if constraints.aggregate\n if constraints.module_id\n type = \"modules\"\n if constraints.module_type == \"set\"\n resource = \"userSetAggregate\"\n else\n resource = \"userSeriesAggregate\"\n else\n type = \"users\"\n resource = \"userAggregate\"\n else\n if constraints.module_id\n if constraints.module_type == \"seriesGoals\"\n type = \"modules\"\n resource = \"userSeriesGoals\"\n else\n type = \"facets\"\n if constraints.module_type == \"set\"\n resource = \"userSetFacets\"\n else\n resource = \"userSeriesFacets\"\n else\n type = \"modules\"\n resource = \"userModules\"\n else if constraints.module_id && constraints.aggregate\n # Admin set aggregate with users (like group)\n type = \"users\"\n resource = \"setAggregate\"\n else\n error = \"User knowledge bank requires user to be signed in\"\n null\n\n key = $scope.cacheKey(constraints)\n cache = $scope.cache[key] ||= {}\n\n $scope.setLastConstraints(constraints)\n\n if !cache.deferred\n cache.deferred = $q.defer()\n\n params = _.pick(constraints,[\"group_id\", \"module_id\", \"user_id\"])\n params.group_id ||= constraints.my_group_id\n\n if $scope.loading\n $scope.loading.resolve()\n $scope.loading = $q.defer()\n\n if resource\n MemoryBankResource[resource] params\n , timeout: $scope.loading.promise\n , (success) ->\n cache.data = success.response\n cache.deferred.resolve\n type: type\n memories: cache.data\n message: success.meta.message\n , cache.deferred.reject\n else\n cache.deferred.reject(error)\n\n cache.deferred.promise\n])\n","memoryBank.service(\"hcHelper\", ['$rootScope', 'MemoryBankLevelsService', ($rootScope, MemoryBankLevelsService) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"hcHelper\"] = $scope\n\n _.assignIn $scope,\n threshold: (isFacet) ->\n if isFacet then 600 else 300\n\n aggregate: (data, aggregatorFn, reverse) ->\n bins = _.groupBy(data, aggregatorFn)\n max = _.max(_.map(bins, (bin) -> bin.length))\n grid = {}\n sums = {}\n for x, col of bins\n grid[x] = _.groupBy(col,\"level_slug\")\n sums[x] = {}\n sum = 0\n levels = _.map(MemoryBankLevelsService.levels, \"slug\")\n if reverse\n levels = levels.reverse()\n for level_slug in levels\n sums[x][level_slug] = sum\n sum += (grid[x][level_slug] || []).length\n\n {\n max: max\n sums: sums\n grid: grid\n }\n])\n","memoryBank.service(\"progressVisual\", ['$rootScope', '$filter', '$window', '$timeout', '$interval', ($rootScope, $filter, $window, $timeout, $interval) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"progressVisual\"] = $scope\n\n NEEDS_REVIEW_RETENTION = .85\n HEADER_HEIGHT = 60\n LEFT_BORDER_WIDTH = 40\n RIGHT_BORDER_WIDTH = 0\n BOX_SIZE = 20\n SVG_WIDTH = 100\n RECT_WIDTH = 32\n MOBILE_TOP_PADDING = if angular.element($window).width() < 768 then 10 else 0\n \n STAR_CONTAINER_SIZE = 100\n STAR_SIZE = 50\n STAR_INITIAL_SCALE = 0.4\n STAR_Y_OFFSET = 10 + STAR_SIZE / 2\n STAR_X_OFFSET = STAR_CONTAINER_SIZE / 2\n\n _.assignIn $scope,\n $scope.isIE = bowser.msie || bowser.msedge # detect Edge and IE 11+\n\n orbRetention: (d) ->\n if d.orb_type == \"facet\" then d.current_retention else d.average_current_retention\n\n # TODO: put this in the dom. There is some race condition right now and doesn't calculate height correctly.\n updateLine: (selection, class_name, level, level_slug, copy, animate) ->\n levelLine = selection.selectAll(\".\" + class_name)\n\n return if !_.isEmpty(levelLine[0])\n initial_x = $scope.level_options.old_score || 0\n\n selection.append(\"svg\").classed(class_name, true).classed(level_slug, true)\n levelLine = selection.select(\".\" + class_name)\n levelLineHeight = selection.node().getBoundingClientRect().height - 40\n string = '0 0 100 ' + (levelLineHeight + 20)\n x_position = if initial_x > 0 then $scope.xScale(initial_x) - (SVG_WIDTH/2) else -100 #start off screen\n\n levelLine.attr\n width: SVG_WIDTH\n height: levelLineHeight + 20\n viewBox: string\n x: x_position\n y: 30 + MOBILE_TOP_PADDING\n\n levelLine.append(\"line\").attr\n y1: 60\n y2: levelLineHeight - 80\n x1: SVG_WIDTH/2\n x2: SVG_WIDTH/2\n\n levelLine.append(\"line\").attr\n y1: levelLineHeight + 10\n y2: levelLineHeight - 10\n x1: SVG_WIDTH/2\n x2: SVG_WIDTH/2\n\n levelLine.append(\"rect\")\n levelLine.select(\"rect\").attr\n width: 32\n height: 70\n rx: 5\n ry: 5\n x: (SVG_WIDTH/2) - (RECT_WIDTH/2)\n y: levelLineHeight - 80\n\n levelLine.append(\"text\").text(copy).classed(\"set-level-label\", true)\n levelLine.select(\"text\").attr\n x: -levelLineHeight + 45\n y: 55\n 'text-anchor': 'middle'\n transform: 'rotate(-90)'\n\n shape = levelLine.append(\"svg\")\n\n shape.classed(\"memory-bank-goal-shape\", true)\n shape.classed(\"transparent\", true) # so you can see the orbs behind the shape\n shape.attr\n y: 20\n x: 23\n shape.append(\"path\").attr\n d: \"M30.4,39.9c-1.8,2.8-4.8,2.8-6.6,0L0.8,5.1C-1,2.3,0.3,0,3.7,0h46.6c3.4,0,4.7,2.3,2.9,5.1L30.4,39.9z\"\n class: level_slug\n\n if class_name == \"memory-bank--scoring-goal-line\"\n star_shape = levelLine.append(\"svg\")\n star_shape.attr\n id: 'memory-bank--mini-star'\n\n star_shape.classed(\"memory-bank-goal-shape\", true)\n star_shape.attr\n x: STAR_X_OFFSET\n y: levelLineHeight - 100\n width: STAR_SIZE * STAR_INITIAL_SCALE\n height: STAR_SIZE * STAR_INITIAL_SCALE\n\n if $scope.isIE\n star_shape.classed(\"goal-mini-ie\", false)\n else\n star_shape.classed(\"goal-reached\", false).classed(\"goal-animating\", false).classed(\"goal-mini\", true)\n\n star_shape.append(\"polygon\").attr\n points: \"0,16.4 -16,25 -13,6.9 -26,-5.9 -8,-8.6 0,-25 8,-8.6 26,-5.9 13,6.9 16,25\"\n class: level_slug\n\n levelLine.append(\"text\").text($filter('levelRoundDown')(initial_x)).classed(\"current-set-level\", true).classed(level_slug, true)\n levelLine.select(\".current-set-level\").attr\n x: (SVG_WIDTH/2)\n y: 40\n 'text-anchor': 'middle'\n\n scoreText = levelLine.select(\".current-set-level\").node()\n scoreText.textContent = $filter('levelRoundDown')(level)\n\n updateGoalLine: (selection) ->\n $scope.updateLine(selection, \"memory-bank--scoring-goal-line\", $scope.level_options.scoring_goal, $scope.level_options.scoring_goal_slug, 'Set Goal', false)\n levelLine = selection.select(\".memory-bank--scoring-goal-line\")\n levelLine.attr\n x: $scope.xScale($scope.level_options.scoring_goal) - 50\n\n updateLevelLine: (selection) ->\n $scope.updateLine(selection, \"memory-bank--level-line\", ($scope.level_options.old_score || $scope.level_options.score), $scope.level_options.level_slug, 'Set Level', true)\n\n animateLevelLine: (selection) ->\n return if _.isUndefined($scope.level_options) || _.isNull($scope.level_options.score)\n initial_x = $scope.level_options.old_score || 0\n roundedScore = initial_x\n animateDuration = 1500\n intervalLength = 250\n level = $scope.level_options.score\n intervalChunk = (level - initial_x) / (animateDuration/intervalLength)\n levelLine = selection.select(\".memory-bank--level-line\")\n scoreText = levelLine.select(\".current-set-level\").node()\n\n if $scope.level_options.old_score\n interval = $interval( () ->\n return if roundedScore >= level\n roundedScore = roundedScore + intervalChunk\n scoreText.textContent = $filter('levelRoundDown')(roundedScore)\n , intervalLength)\n\n $timeout () ->\n clearInterval(interval)\n scoreText.textContent = $filter('levelRoundDown')(level)\n , 2500\n else if level\n scoreText.textContent = $filter('levelRoundDown')(level)\n\n levelLine.transition().delay(500).duration(animateDuration).attr(x: $scope.xScale(level) - (SVG_WIDTH/2)).ease('quad-out')\n\n animateGoalStar: (selection) ->\n animateMiniStarStartInMS = 1000\n miniStarAnimationLengthInMS = 2000\n starFinishedAnimateInMS = 2900\n\n star_shape = selection.select(\"#memory-bank--mini-star\")\n star_shape\n .transition()\n .delay(animateMiniStarStartInMS)\n .duration(1)\n .attr(class: 'goal-animating memory-bank-goal-shape')\n .transition()\n .delay(animateMiniStarStartInMS)\n .duration(miniStarAnimationLengthInMS)\n .attr(y: STAR_Y_OFFSET, x: STAR_X_OFFSET)\n .transition(miniStarAnimationLengthInMS)\n .delay(starFinishedAnimateInMS)\n .duration(1)\n .attr(class: 'goal-expanded goal-animated memory-bank-goal-shape')\n .ease('quad-out')\n\n selection.select(\".memory-bank--scoring-goal-line\").select(\"line\").transition().delay(starFinishedAnimateInMS).attr\n y1: STAR_SIZE\n\n $timeout () ->\n star_shape.classed(\"transparent\", true)\n , starFinishedAnimateInMS\n\n triangle_shape = selection.select(\".memory-bank--scoring-goal-line\").select(\"svg\")\n triangle_shape.transition().delay(starFinishedAnimateInMS).remove()\n\n updateGoalStar: (selection) ->\n star_shape = selection.select(\"#memory-bank--mini-star\")\n star_shape.attr(y: STAR_Y_OFFSET, x: STAR_X_OFFSET, class: 'goal-expanded memory-bank-goal-shape transparent')\n triangle_shape = selection.select(\".memory-bank--scoring-goal-line\").select(\"svg\")\n triangle_shape.remove()\n selection.select(\".memory-bank--scoring-goal-line\").select(\"line\").attr\n y1: STAR_SIZE\n\n updateIEGoalStar: (selection) ->\n star_shape = selection.select(\"#memory-bank--mini-star\")\n star_shape.attr(y: STAR_Y_OFFSET, x: STAR_X_OFFSET, class: 'goal-expanded memory-bank-goal-shape transparent')\n triangle_shape = selection.select(\".memory-bank--scoring-goal-line\").select(\"svg\")\n triangle_shape.remove()\n star_shape.select(\"polygon\").attr\n points: \"0,16.4 -16,25 -13,6.9 -26,-5.9 -8,-8.6 0,-25 8,-8.6 26,-5.9 13,6.9 16,25\"\n selection.select(\".memory-bank--scoring-goal-line\").select(\"line\").attr\n y1: STAR_SIZE\n\n addGoalLines: (selection) ->\n return if _.isUndefined($scope.level_options)\n goal_achieved = ($scope.level_options.score - $scope.level_options.scoring_goal) > 0\n if $scope.level_options.scoring_goal && (_.last($scope.levels).intLevel + 1 > $scope.level_options.scoring_goal)\n $scope.updateGoalLine(selection)\n if $scope.level_options.score\n $scope.updateLevelLine(selection)\n\n if !_.isUndefined($scope.level_options.old_score) && goal_achieved\n $scope.updateGoalStar(selection)\n else if $scope.isIE && goal_achieved\n $scope.updateIEGoalStar(selection)\n # Don't know the progress in the home knowledge bank..we don't know the context of the group\n else if !$scope.isIE && (($scope.level_options.progress == 1) || (_.isUndefined($scope.level_options.progress) && goal_achieved))\n $scope.animateGoalStar(selection)\n return true\n\n updateAxis: (selection) ->\n\n updateScales: (svgDimensions, data, radius, levels, options) ->\n if $scope.isHC\n radius = BOX_SIZE / 2\n\n $scope.bb =\n left: LEFT_BORDER_WIDTH + radius\n right: svgDimensions.x - RIGHT_BORDER_WIDTH - radius\n top: HEADER_HEIGHT + radius + 1\n bottom: svgDimensions.y - radius - 1\n\n $scope.level_options = options\n $scope.levels = levels\n\n # round highest attained score to the next largest integer so that the highest\n # scored orb isn't always on the right edge. This also prevents the situation where\n # if the highest scored orb increased its score, it would make other orbs in its level\n # look like they lost permanence because the scale would expand\n max = Math.ceil(_.max(_.map(data, (d) -> d.score || d.level)) || 0)\n if levels.length > 0\n scoring_goal = options && options.scoring_goal\n lastIntLevel = _.last(levels).intLevel\n if Math.floor(scoring_goal) == lastIntLevel\n max = Math.max(scoring_goal || 0, max)\n else\n max = Math.max(lastIntLevel || 0, max)\n domain = _.map(levels, \"minLevel\").concat(max)\n else\n domain = [0,max]\n range = [$scope.bb.left]\n _.times levels.length, (i) ->\n range.push($scope.bb.left + ($scope.bb.right - $scope.bb.left) * (i + 1) / levels.length)\n\n continousXScale = d3.scale.linear().domain(domain).range(range)\n continousYScale = d3.scale.linear().domain([1,NEEDS_REVIEW_RETENTION,0]).range([$scope.bb.top, .5 * ($scope.bb.bottom + $scope.bb.top), $scope.bb.bottom])\n\n if $scope.isHC\n yDomain = [continousYScale.range()[0], _.last(continousYScale.range())]\n quantizedYScale = d3.scale.quantize().domain(yDomain).range(d3.range($scope.bb.top, $scope.bb.bottom, BOX_SIZE))\n xDomain = [continousXScale.range()[0], _.last(continousXScale.range())]\n quantizedXScale = d3.scale.quantize().domain(xDomain).range(d3.range($scope.bb.left, $scope.bb.right, BOX_SIZE))\n\n $scope.yScale = (d) ->\n quantizedYScale(continousYScale($scope.orbRetention(d)))\n $scope.xScale = (d) ->\n quantizedXScale(continousXScale(d.score || d.level))\n\n grid = {}\n for d in data\n x = $scope.xScale(d)\n y = $scope.yScale(d)\n grid[x] ||= {}\n grid[x][y] ||= []\n grid[x][y].push(d)\n\n $scope.data = _.flatten(_.map(grid, (col, x) ->\n _.map(col, (data, y) ->\n id: x + \":\" + y\n orb_type: \"heatmap\"\n count: data.length\n data: data\n level_slug: data[0].level_slug\n target:\n x: parseInt(x)\n y: parseInt(y)\n )))\n\n max = _.max(_.map($scope.data, \"count\"))\n\n opacityScale = d3.scale.log().domain([1,max]).range([.2,1.0])\n $scope.opacityScale = (d) ->\n opacityScale(d.count)\n else\n $scope.xScale = continousXScale\n $scope.yScale = continousYScale\n\n\n calculateFinalPosition: (d) ->\n x: $scope.xScale(d.score || d.level)\n y: $scope.yScale($scope.orbRetention(d))\n\n setSourcePosition: (parent, preload) ->\n (selection) ->\n selection.each (d) ->\n # preload flag is for setting the initial positions of the orbs\n # instead of animating from off screen, so that pre/post study screens\n # show the transition of memory orbs as a result of the study session\n if $scope.isHC || preload\n finalPosition = $scope.calculateFinalPosition(d)\n d.x = finalPosition.x\n d.y = finalPosition.y\n else\n if parent && parent.hasOwnProperty(\"x\")\n d.x = parent.x\n d.y = parent.y\n else\n d.x = - .5 * LEFT_BORDER_WIDTH\n d.y = $scope.yScale(.5)\n\n setTargetPosition: (selection) ->\n unless $scope.isHC\n selection.each (d) ->\n d.target = $scope.calculateFinalPosition(d)\n\n # For HC only\n createNode: (selection) ->\n selection.classed \"progress-heatmap\", true\n selection.append \"title\"\n .text (d) -> d.count\n\n selection.append \"rect\"\n .attr\n x: - BOX_SIZE / 2\n y: - BOX_SIZE / 2\n width: BOX_SIZE\n height: BOX_SIZE\n\n hcAnimate: (selection) ->\n selection.each (d) ->\n d.delay = Math.random() * 400\n\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(0)\"\n .style(\"fill-opacity\", 0)\n\n selection.transition()\n .delay (d) ->\n d.delay\n .duration(600)\n .style(\"fill-opacity\", $scope.opacityScale)\n .attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(1)\"\n\n $scope\n])\n","memoryBank.service(\"difficultyVisual\", ['$rootScope', 'hcHelper', ($rootScope, hcHelper) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"difficultyVisual\"] = $scope\n\n HEADER_HEIGHT = 60\n\n _.assignIn $scope,\n updateAxis: (selection) ->\n\n updateScales: (svgDimensions, data, radius, levels) ->\n $scope.bb =\n top: HEADER_HEIGHT + radius\n bottom: svgDimensions.y - radius\n left: 0\n right: svgDimensions.x\n\n $scope.shouldPerformCollisions = !$scope.isHC\n\n bucket = ($scope.bb.right - $scope.bb.left) / 4.0\n $scope.xScale = d3.scale.quantize().domain([0, 1, 3, 4]).range([bucket*0.5, bucket*1.5, bucket*2.5, bucket*3.5])\n $scope.yScale = d3.scale.quantile().range([($scope.bb.top + $scope.bb.bottom) * 0.5])\n\n if $scope.isHC\n aggregate = hcHelper.aggregate(data, \"difficulty_bucket\", true)\n $scope.sums = aggregate.sums\n\n $scope.data = _.sortBy(_.flatten(_.map(aggregate.grid, (bin, bucket) ->\n _.map bin, (data, level_slug) ->\n id: bucket + \":\" + level_slug\n orb_type: \"difficultyOrb\"\n count: data.length\n data: data\n difficulty_bucket: parseInt(bucket)\n level_slug: level_slug\n target:\n x: $scope.xScale(parseInt(bucket))\n y: $scope.yScale(1)\n )), \"level\")\n\n $scope.areaScale = d3.scale.linear().domain([0, aggregate.max]).range([0, Math.pow(Math.min(bucket, $scope.bb.bottom - $scope.bb.top) / 2 - 10, 2)])\n\n setSourcePosition: (parent) ->\n (selection) ->\n unless $scope.isHC\n selection.each (d) ->\n offset = 200\n if parent\n d.x = $scope.xScale(parent.difficulty_bucket)\n d.y = $scope.yScale(1)\n else\n d.x = $scope.xScale(1)\n d.y = $scope.yScale(1)\n d.x += Math.random() * offset * 2 - offset\n d.y += Math.random() * offset * 2 - offset\n\n setTargetPosition: (selection) ->\n selection.each (d) ->\n d.target =\n x: $scope.xScale(d.difficulty_bucket)\n y: $scope.yScale(1)\n\n shouldCollide: (a, b) ->\n a.difficulty_bucket == b.difficulty_bucket\n\n collisionForce: (l, r, alpha) ->\n l = _.max([l, .1 * r])\n (l - r) / l * .5\n\n createNode: (selection) ->\n selection.classed \"difficulty-orb\", true\n selection.append \"title\"\n .text (d) -> d.count + \" in \" + d.level_slug\n\n selection.append \"rect\"\n .attr\n x: (d) -> 0 - Math.sqrt($scope.areaScale(d.count + $scope.sums[d.difficulty_bucket][d.level_slug]))\n y: (d) -> 0 - Math.sqrt($scope.areaScale(d.count + $scope.sums[d.difficulty_bucket][d.level_slug]))\n width: (d) -> 2 * Math.sqrt($scope.areaScale(d.count + $scope.sums[d.difficulty_bucket][d.level_slug]))\n height: (d) -> 2 * Math.sqrt($scope.areaScale(d.count + $scope.sums[d.difficulty_bucket][d.level_slug]))\n\n hcAnimate: (selection) ->\n delayMult = 100\n\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(0)\"\n .style(\"fill-opacity\", 0)\n\n selection.transition()\n .delay (d) ->\n switch d.level_slug\n when \"mastered\"\n delayMult * 0\n when \"level_4\"\n delayMult * 1\n when \"level_3\"\n delayMult * 2\n when \"level_2\"\n delayMult * 3\n else\n delayMult * 4\n .duration(600)\n .style(\"fill-opacity\", 1)\n .attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(1)\"\n\n $scope\n])\n","memoryBank.service(\"timelineVisual\", ['$rootScope', 'hcHelper', ($rootScope, hcHelper) ->\n (field) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"timelineVisual\"] = $scope\n\n HEADER_HEIGHT = 60\n AXIS_TICKS = 7\n RANGE_PAD_DAYS = 2\n TRANSITION_DURATION = 1000\n BOX_SIZE = 20\n\n _.assignIn $scope,\n now: new Date()\n\n accessor: (d) ->\n new Date(d[field] || $scope.now)\n\n updateAxis: (selection) ->\n formatter = d3Formatter.timeFormat.multi [\n [\"%H:%M\", (d) -> d.getMinutes()]\n [\"%H:%M\", (d) -> d.getHours() ]\n [\"%a %d\", (d) -> d.getDay() && d.getDate() != 1 ]\n [\"%b %d\", (d) -> d.getDate() != 1 ]\n [\"%B\", (d) -> d.getMonth() ]\n [\"%Y\", () -> true]\n ]\n\n xAxis = d3.svg.axis()\n .scale($scope.timeScale)\n .ticks(AXIS_TICKS)\n .orient(\"top\")\n .tickFormat(formatter)\n\n selection.select(\".axis\")\n .attr\n transform: \"translate(\" + [0, $scope.bb.top / 2] + \")\"\n .transition()\n .duration(TRANSITION_DURATION)\n .call(xAxis)\n\n xGrid = d3.svg.axis()\n .scale($scope.timeScale)\n .ticks(AXIS_TICKS)\n .orient(\"bottom\")\n .tickSize(-($scope.bb.bottom - $scope.bb.top + 70), 0, 0)\n .tickFormat(\"\")\n\n selection.select(\".grid\")\n .attr\n transform: \"translate(\" + [0, $scope.bb.bottom + 25] + \")\"\n .transition()\n .duration(TRANSITION_DURATION)\n .call(xGrid)\n\n nowLine = selection.select(\".nowLine\")\n nowLine.select(\"line\")\n .attr\n y1: 0\n y2: $scope.bb.bottom + $scope.bb.padding\n\n nowLine.select(\"text\")\n .attr\n transform: \"rotate(-90), translate(\" + [-110, -10] + \")\"\n\n nowLine.transition()\n .duration(TRANSITION_DURATION)\n .attr(\"transform\", \"translate(\"+[$scope.timeScale($scope.now), 0]+\")\");\n\n updateScales: (svgDimensions, data, radius, levels, options) ->\n if $scope.isHC\n radius = BOX_SIZE / 2\n\n $scope.bb =\n top: HEADER_HEIGHT + radius\n bottom: svgDimensions.y - radius\n left: 2*radius\n right: svgDimensions.x - 2*radius\n padding: radius\n\n dateAdd = (date, days) ->\n date.setDate(date.getDate() + days)\n\n dates = _.map data,$scope.accessor\n domain = [\n dateAdd(new Date(Math.min(d3.min(dates)|| $scope.now, $scope.now)), -RANGE_PAD_DAYS)\n dateAdd(new Date(Math.max(d3.max(dates)|| $scope.now, $scope.now)), RANGE_PAD_DAYS)\n ]\n\n $scope.xScale = d3.scale.quantize()\n .domain(domain)\n .range(d3.range($scope.bb.left, $scope.bb.right, 2*radius))\n\n $scope.timeScale = d3.time.scale()\n .domain($scope.xScale.domain())\n .range([$scope.bb.left, $scope.bb.right])\n\n if $scope.isHC\n aggregate = hcHelper.aggregate(data, (d) -> $scope.xScale($scope.accessor(d)))\n $scope.sums = aggregate.sums\n\n $scope.yScale = d3.scale.linear().domain([0, aggregate.max]).range([$scope.bb.bottom + radius, $scope.bb.top - radius])\n\n $scope.data = _.sortBy(_.map(aggregate.grid, (col, x) ->\n _.flatten(_.map(col, (data, level_slug) ->\n id: field + \":\" + x + \":\" + level_slug\n orb_type: \"bargraph\"\n count: data.length\n data: data\n level_slug: level_slug\n target:\n x: parseInt(x)\n y: $scope.yScale(data.length + $scope.sums[x][level_slug])\n ))), \"level_slug\").reverse()\n\n else\n bins = _.groupBy data, (d) -> $scope.xScale($scope.accessor(d))\n\n $scope.yScale = (d) ->\n return $scope.bb.bottom if !d\n\n bin = bins[$scope.xScale($scope.accessor(d))]\n index = _.indexOf(bin, d)\n count = bin.length\n offset = radius * 2\n\n if offset * count > ($scope.bb.bottom - $scope.bb.top)\n # Squished together placement\n pos = ($scope.bb.bottom - $scope.bb.top)/(count - 1)\n else\n # Placement at ideal offset\n pos = offset\n\n $scope.bb.bottom - pos*index\n\n setSourcePosition: (parent) ->\n (selection) ->\n selection.each (d) ->\n if $scope.isHC\n d.x = d.target.x\n d.y = d.target.y\n else\n if parent\n d.x = parent.x\n d.y = parent.y\n else\n d.x = $scope.xScale($scope.now)\n d.y = $scope.yScale(0)\n\n setTargetPosition: (selection) ->\n selection.classed\n timelineFaded: (d) -> (field == \"see_next_at\") && ($scope.accessor(d) < $scope.now)\n\n unless $scope.isHC\n selection.each (d) ->\n d.target =\n x: $scope.xScale($scope.accessor(d))\n y: $scope.yScale(d)\n\n shouldCollide: (a, b) ->\n false\n\n collisionForce: (l, r, alpha) ->\n 0\n\n # For HC visuals ONLY\n createNode: (selection) ->\n selection.classed \"timeline-bargraph\", true\n selection.append \"title\"\n .text (d) -> d.count + \" in \" + d.level_slug\n\n selection.append \"rect\"\n .attr\n x: - BOX_SIZE / 2\n y: 0\n width: BOX_SIZE\n height: (d) -> $scope.yScale($scope.sums[d.target.x][d.level_slug]) - $scope.yScale(d.count + $scope.sums[d.target.x][d.level_slug])\n\n hcAnimate: (selection) ->\n delayMult = 100\n\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, $scope.yScale(0)] + \") scale(1 0)\"\n .style(\"fill-opacity\", 0)\n\n selection.transition()\n .delay (d) ->\n switch d.level_slug\n when \"mastered\"\n delayMult * 4\n when \"level_4\"\n delayMult * 3\n when \"level_3\"\n delayMult * 2\n when \"level_2\"\n delayMult * 1\n else\n delayMult * 0\n .duration(600)\n .style \"fill-opacity\", (d) ->\n if (field == \"see_next_at\") && (d.x < $scope.xScale($scope.now))\n .3\n else\n 1\n .attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(1 1)\"\n\n $scope\n])\n","memoryBank.service(\"totalTimeVisual\", ['$rootScope', 'timeHelper', 'hcHelper', ($rootScope, timeHelper, hcHelper) ->\n (field) ->\n $scope = $rootScope.$new()\n\n window.debug = window.debug || {}\n window.debug[\"totalTimeVisual\"] = $scope\n\n HEADER_HEIGHT = 60\n AXIS_TICKS = 6\n MIN_STUDY_MSEC = 60*1000\n TRANSITION_DURATION = 1000\n BOX_SIZE = 20\n\n _.assignIn $scope,\n accessor: (d) ->\n d[field] || 0\n\n updateAxis: (selection) ->\n tickSize = timeHelper.round($scope.xScale.domain()[1] / AXIS_TICKS)\n tickValues = d3.range(tickSize, $scope.xScale.domain()[1], tickSize)\n\n console.log \"tickValues:\"\n console.log tickValues\n\n xAxis = d3.svg.axis()\n .scale($scope.xScale)\n .orient(\"top\")\n .tickValues(tickValues)\n .tickFormat(timeHelper.msecToString)\n\n selection.select(\".axis\")\n .attr\n transform: \"translate(\" + [0, $scope.bb.top / 2] + \")\"\n .transition()\n .duration(TRANSITION_DURATION)\n .call(xAxis)\n\n xGrid = d3.svg.axis()\n .scale($scope.xScale)\n .tickValues(tickValues)\n .orient(\"bottom\")\n .tickSize(-($scope.bb.bottom - $scope.bb.top + 70), 0, 0)\n .tickFormat(\"\")\n\n selection.select(\".grid\")\n .attr\n transform: \"translate(\" + [0, $scope.bb.bottom + 25] + \")\"\n .transition()\n .duration(TRANSITION_DURATION)\n .call(xGrid)\n\n updateScales: (svgDimensions, data, radius, levels, options) ->\n if $scope.isHC\n radius = BOX_SIZE / 2\n\n xPadding = 50\n xPadding += ((svgDimensions.x - 2*xPadding) % 2*radius) / 2\n\n $scope.bb =\n top: HEADER_HEIGHT + radius\n bottom: svgDimensions.y - radius\n left: xPadding\n right: svgDimensions.x - xPadding\n padding: radius\n\n times = _.map data,$scope.accessor\n domain = [\n Math.min(d3.min(times) || 0, 0)\n Math.max(d3.max(times) || 0, MIN_STUDY_MSEC)\n ]\n\n $scope.xScale = d3.scale.quantize()\n .domain(domain)\n .range(d3.range($scope.bb.left, $scope.bb.right, 2*radius))\n\n if $scope.isHC\n aggregate = hcHelper.aggregate(data, (d) -> $scope.xScale($scope.accessor(d)))\n $scope.sums = aggregate.sums\n\n $scope.yScale = d3.scale.linear().domain([0, aggregate.max]).range([$scope.bb.bottom + radius, $scope.bb.top - radius])\n\n $scope.data = _.sortBy(_.flatten(_.map(aggregate.grid, (col, x) ->\n _.map col, (data, level_slug) ->\n id: x + \":\" + level_slug\n orb_type: \"bargraph\"\n count: data.length\n data: data\n level_slug: level_slug\n target:\n x: parseInt(x)\n y: $scope.yScale(data.length + $scope.sums[x][level_slug])\n )),\"level_slug\").reverse()\n else\n bins = _.groupBy data, (d) -> $scope.xScale($scope.accessor(d))\n\n $scope.yScale = (d) ->\n return $scope.bb.bottom if !d\n\n bin = bins[$scope.xScale($scope.accessor(d))]\n index = _.indexOf(bin, d)\n count = bin.length\n offset = radius * 2\n\n if offset * count > ($scope.bb.bottom - $scope.bb.top)\n # Squished together placement\n pos = ($scope.bb.bottom - $scope.bb.top)/(count - 1)\n else\n # Placement at ideal offset\n pos = offset\n\n $scope.bb.bottom - pos*index\n\n setSourcePosition: (parent) ->\n (selection) ->\n selection.each (d) ->\n if $scope.isHC\n d.x = d.target.x\n d.y = d.target.y\n else\n if parent\n d.x = parent.x\n d.y = parent.y\n else\n d.x = $scope.xScale(0)\n d.y = $scope.yScale(0)\n\n setTargetPosition: (selection) ->\n unless $scope.isHC\n selection.each (d) ->\n d.target =\n x: $scope.xScale($scope.accessor(d))\n y: $scope.yScale(d)\n\n shouldCollide: (a, b) ->\n false\n\n collisionForce: (l, r, alpha) ->\n 0\n\n # For HC visuals ONLY\n createNode: (selection) ->\n selection.classed \"timeline-bargraph\", true\n selection.append \"title\"\n .text (d) -> d.count + \" in \" + d.level_slug\n\n selection.append \"rect\"\n .attr\n x: - BOX_SIZE / 2\n y: 0\n width: BOX_SIZE\n height: (d) -> $scope.yScale($scope.sums[d.target.x][d.level_slug]) - $scope.yScale(d.count + $scope.sums[d.target.x][d.level_slug])\n\n hcAnimate: (selection) ->\n delayMult = 100\n\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, $scope.yScale(0)] + \") scale(1 0)\"\n .style(\"fill-opacity\", 0)\n\n selection.transition()\n .delay (d) ->\n switch d.level_slug\n when \"mastered\"\n delayMult * 4\n when \"level_4\"\n delayMult * 3\n when \"level_3\"\n delayMult * 2\n when \"level_2\"\n delayMult * 1\n else\n delayMult * 0\n .duration(600)\n .style(\"fill-opacity\", 1)\n .attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \") scale(1 1)\"\n\n $scope\n])\n","memoryBank.directive('memoryBankVisual', ['$timeout', '$filter', ($timeout, $filter) ->\n restrict : \"A\"\n\n scope:\n orbs: \"=memoryBankVisual\"\n levels: \"=\"\n mode: \"=\"\n preload: \"=\"\n selectedOrb: \"=\"\n isDemo: \"=\"\n module: \"=\"\n\n\n controller: ['$scope', '$window', 'DebugHelper', 'progressVisual', 'difficultyVisual', 'timelineVisual', 'totalTimeVisual', 'hcHelper', 'MemoryBankLevelsService', ($scope, $window, DebugHelper, progressVisual, difficultyVisual, timelineVisual, totalTimeVisual, hcHelper, MemoryBankLevelsService) ->\n DebugHelper.register(\"memoryBankVisual\", $scope)\n\n lockedLevelSize = if angular.element($window).width() > 768 then 65 else 40\n\n _.assignIn $scope,\n MemoryBankLevelsService: MemoryBankLevelsService\n # Move nodes to top of stack on hover\n moveToFront: (selection) ->\n selection.each ->\n if this.parentNode\n this.parentNode.appendChild(this)\n\n # Update node DOM position\n moveToPosition: (selection) ->\n if $scope.visual.isHC && $scope.visual.hasOwnProperty(\"hcAnimate\")\n selection.call($scope.visual.hcAnimate)\n else\n selection.attr\n transform: (d) ->\n \"translate(\" + [d.x, d.y] + \")\"\n\n tick: (selection) ->\n # Reset tick counters\n tick = 0\n $scope.force.on \"start\", ->\n tick = 0\n\n selection.each (d) ->\n d.startTick = Math.round(Math.random()*12)\n\n # Actual tick function\n (e) ->\n alpha = e.alpha\n k = .4\n wiggle = .2\n tick += 1\n\n selection.each (node) ->\n # move closer to target with a little wiggle to prevent local minima (aka local gravity)\n if tick > node.startTick && node.weight == 0\n node.x += (node.target.x - node.x)*k*alpha\n node.y += (node.target.y - node.y)*k*alpha\n if $scope.performInitialCollisions\n node.y += (Math.random()*wiggle - wiggle/2)*k*alpha\n\n # bounding box\n if $scope.enforceFullBoundingBox || $scope.mode != \"Progress\" || alpha < .01\n node.x = Math.max($scope.visual.bb.left, Math.min(node.x, $scope.visual.bb.right))\n node.y = Math.max($scope.visual.bb.top, Math.min(node.y, $scope.visual.bb.bottom))\n\n # Perform collisions\n if $scope.performInitialCollisions\n quadtree = d3.geom.quadtree($scope.force.nodes())\n selection.each (node) ->\n padding = -node.radius*.2\n r = node.radius + padding / 2\n nx1 = node.x - r\n nx2 = node.x + r\n ny1 = node.y - r\n ny2 = node.y + r\n\n quadtree.visit (quad, x1, y1, x2, y2) ->\n if quad.point && (quad.point != node) && $scope.visual.shouldCollide(node, quad.point)\n dx = node.x - quad.point.x\n dy = node.y - quad.point.y\n # actual distance\n l = Math.sqrt(dx * dx + dy * dy)\n # desired distance\n r = node.radius + quad.point.radius + padding\n if l < r\n l = $scope.visual.collisionForce(l, r, alpha)\n node.x -= dx *= l\n node.y -= dy *= l\n quad.point.x += dx\n quad.point.y += dy\n x1 > nx2 || x2 < nx1 || y1 > ny2 || y2 < ny1\n else\n # Finally, update the dom\n if e.alpha < 0.05\n selection.call($scope.moveToPosition)\n $scope.force.stop()\n\n onMouseOver: (selection) ->\n selection.filter (d) ->\n return if $scope.isDemo\n $scope.force.links().length == 0 || d.weight > 0\n .each (d) ->\n $scope.$emit \"memoryBank:mouseOver\", d, d.x * 2 < $scope.element.width()\n .call($scope.moveToFront)\n\n onMouseOut: (selection) ->\n selection.each (d) ->\n $scope.$emit \"memoryBank:mouseOut\", d\n\n pulse: (circle) ->\n repeat=()->\n circle.transition()\n .duration(1500)\n .attr(\"r\", 0)\n .attr(\"stroke-width\", 4)\n .transition()\n .delay(2000)\n .duration(1500)\n .attr(\"r\", 15)\n .attr(\"stroke-width\", 0.5)\n .ease('bounce')\n .each(\"end\", repeat)\n repeat()\n\n updateData: (data, selection) ->\n keyFn = (d) ->\n if d.orb_type == \"facet\"\n d.orb_type + \":\" + d.learning_engine_guid\n else\n d.orb_type + \":\" + d.id\n\n if $scope.visual.isHC\n selection.data($scope.visual.data, keyFn)\n else\n # Store old data since data() will clobber it\n oldPositions = {}\n selection.each (d) ->\n oldPositions[keyFn(d)] = _.pick(d,[\"x\", \"y\", \"radius\"])\n\n # Update data\n selection = selection.data(data, keyFn)\n\n # Restore data\n selection.each (d) ->\n oldPos = oldPositions[keyFn(d)]\n if oldPos\n d.px = d.x = oldPos.x\n d.py = d.y = oldPos.y\n d.radius = oldPos.radius\n\n selection\n\n createNode: (selection) ->\n if $scope.visual.isHC\n selection.call($scope.visual.createNode)\n else\n selection.call($scope.createOrb)\n\n # Called for new nodes\n createOrb: (selection) ->\n selection.classed\n \"progress-orb\": true\n \"progress-module\": (d) -> d.orb_type == \"module\"\n \"progress-standing-user\": (d) -> d.orb_type == \"standing_user\"\n \"progress-facet\": (d) -> d.orb_type == \"facet\" && !d.pulse\n \"progress-user\": (d) -> d.orb_type == \"user\"\n \"progress-pulse\": (d) -> d.pulse\n \"progress-disabled\": (d) -> d.disabled\n \"progress-remixed\": (d) -> d.remixed\n \"progress-standing-pin\": (d) -> d.orb_type == \"standing_user\" && !d.has_image\n .call($scope.visual.setSourcePosition($scope.parentOrb, $scope.preload))\n .call($scope.moveToPosition)\n .attr\n module_id: (d) -> d.id if d.orb_type == \"module\"\n\n selection.each (d) ->\n d.radius = $scope.radius(d.orb_type)\n that = this\n $(this).hoverIntent ->\n $scope.$apply ->\n d3.select(that).call($scope.onMouseOver)\n , ->\n $scope.$apply ->\n d3.select(that).call($scope.onMouseOut)\n\n selection.append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: (d) -> d.radius\n\n selection.each (d) ->\n if d.pulse\n circle = selection.filter(\".progress-pulse\").select(\"circle\")\n circle.call($scope.pulse, circle)\n\n selection.filter (d) ->\n d.orb_type != \"facet\"\n .each (d) ->\n d3.select(this).append \"image\"\n .attr\n \"xlink:href\": (d) ->\n $filter(\"transcode\")(d.image, 40)\n \"clip-path\": (d) ->\n if d.orb_type == \"user\"\n \"url(#userClipPath)\"\n else\n \"url(#moduleClipPath)\"\n preserveAspectRatio: \"xMidYMid slice\"\n x: -d.radius + 4\n y: -d.radius + 4\n width: (d.radius - 4)*2\n height: (d.radius - 4)*2\n title: (d) -> d.name\n\n if d.remixed\n d3.select(this).append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: (d) -> d.radius\n \"fill-opacity\": 0.5\n \"fill\": \"#fff\"\n\n d3.select(this).append \"text\"\n .text (d) -> '\\uf0c5'\n .attr\n \"x\": -11\n \"y\": 6\n\n selection.on \"click\", (d) ->\n $scope.$apply ->\n if $scope.isDemo\n $scope.$emit \"memoryBank:demoStarted\"\n else if d.unclickable\n # Do nothing\n else if $scope.mode != \"Progress\" || d.links.length < 1 || d.weight > 0 && !$scope.isHC\n # Open up the module\n if d.orb_type == 'module'\n $scope.parentOrb = d\n $scope.$emit \"memoryBank:selectModule\", d\n else if d.orb_type == 'user'\n $scope.parentOrb = d\n $scope.$emit \"memoryBank:selectUser\", d\n else if !$scope.isHC\n # Spread out nearby modules\n $scope.enforceFullBoundingBox = true\n selection.call($scope.resetAnimation)\n d.fixed = true\n\n if d.links.length > 10\n # TODO: play with this a little more, feels off for large clumps\n $scope.force.linkDistance(d.radius*8).linkStrength(.2)\n else\n $scope.force.linkDistance(d.radius).linkStrength(1)\n\n $scope.force.links(d.links)\n selection.call($scope.doAnimate)\n .filter (d) ->\n d.weight > 0\n .call($scope.moveToFront)\n\n generateAdjacencyMatrix: (selection) ->\n selection.each (d) ->\n d.links = []\n selection.filter (node) ->\n dx = node.target.x - d.target.x\n dy = node.target.y - d.target.y\n node != d && Math.sqrt(dx*dx + dy*dy) < d.radius*2\n .each (node) ->\n d.links.push\n source: d\n target: node\n\n resetAnimation: (selection) ->\n $scope.force.links([])\n selection.each (d) ->\n d.px = d.x\n d.py = d.y\n d.fixed = false\n\n doAnimate: (selection) ->\n return if $scope.isHC\n $scope.force.start() # need to use start and not resume in order to rebuild internal link strengths\n selection.classed\n background: false\n selected: (d) -> d.weight > 0\n if $scope.force.links().length > 0\n selection.classed\n background: (d) -> d.weight == 0\n\n # If you change these make sure you also change the clipPath radius in the template\n radius: (orb_type) ->\n switch orb_type\n when \"module\", \"standing_user\"\n 24\n when \"user\"\n 16\n else\n 8\n\n updateSVG: (data) ->\n if $scope.isDemo\n $scope.totalLevels = $scope.levels.length\n else if angular.element($window).width() > 768\n $scope.totalLevels = MemoryBankLevelsService.totalLevelsExcludeUnstarted\n else if $scope.module\n $scope.totalLevels = _.max([$scope.levels.length, $scope.module.scoring_goal + 2])\n else\n $scope.totalLevels = $scope.levels.length\n\n svgDimensions =\n x: angular.element(\".memory-bank--top-container\").width()\n y: $scope.element.parent().height()\n\n $scope.isHC = (data.length > 0) && (data.length > hcHelper.threshold(data[0].orb_type == \"facet\"))\n\n switch $scope.mode\n when \"Difficulty\"\n $scope.visual = difficultyVisual\n when \"Upcoming\"\n $scope.visual = timelineVisual(\"see_next_at\")\n when \"Last Seen\"\n $scope.visual = timelineVisual(\"last_study_time\")\n when \"Study Time\"\n $scope.visual = totalTimeVisual(\"total_study_time_millis\")\n else\n $scope.visual = progressVisual\n svgDimensions =\n x: angular.element(\".memory-bank-progress-container\").width() - (($scope.totalLevels - $scope.levels.length) * lockedLevelSize)\n y: $scope.element.parent().height()\n if $scope.module\n options = _.pick($scope.module, ['score', 'level_slug', 'scoring_goal', 'scoring_goal_slug', 'old_score', 'progress'])\n\n if $scope.module.hasOwnProperty(\"attributes\")\n # the module is a v3 object\n options.scoring_goal = $scope.module.meta['level-goal']\n options.scoring_goal_slug = MemoryBankLevelsService.slugLevel(options.scoring_goal)\n # TODO pull out the other fields?\n\n $scope.visual.isHC = $scope.isHC\n $scope.svg.select(\".memory-bank--level-line\").remove()\n $scope.svg.select(\".memory-bank--scoring-goal-line\").remove()\n\n radius = $scope.radius(data.length > 0 && data[0].orb_type)\n\n $scope.visual.updateScales(svgDimensions, data, radius, $scope.levels, options)\n\n $scope.svg.call($scope.visual.updateAxis)\n\n # TODO: replace with one common style\n selection = $scope.svg.selectAll(\".progress-orb, .progress-heatmap, .timeline-bargraph, .difficulty-orb\")\n\n selection = $scope.updateData(data, selection)\n\n # Create new nodes\n selection.enter().append(\"g\").call($scope.createNode)\n\n # Kill old ones\n selection.exit().remove()\n\n selection.classed\n \"level_new\": (d) -> d.level_slug == \"level_new\"\n \"level_building\": (d) -> d.level_slug == \"level_building\"\n \"level_1\": (d) -> d.level_slug == \"level_1\"\n \"level_2\": (d) -> d.level_slug == \"level_2\"\n \"level_3\": (d) -> d.level_slug == \"level_3\"\n \"level_4\": (d) -> d.level_slug == \"level_4\"\n \"mastered\": (d) -> d.level_slug == \"mastered\"\n timelineFaded: false\n\n selection.filter (d) ->\n d.orb_type != \"facet\"\n .each (d) ->\n d3.select(this).select \"image\"\n .attr\n \"xlink:href\": (d) ->\n $filter(\"transcode\")(d.image, 40)\n\n # Rebuild force layout\n if $scope.force\n $scope.force.stop()\n\n $scope.force = d3.layout.force()\n .nodes(_.filter(selection.data(), (d) -> !_.isUndefined(d)))\n .gravity(0)\n .charge(0)\n .friction(.6)\n .charge (d) ->\n if d.weight > 0\n -20 * d.radius\n else\n 0\n .chargeDistance(100)\n .size [svgDimensions.x, svgDimensions.y]\n\n $scope.force.on \"tick\", $scope.tick(selection)\n\n # Cancel out of selection\n $scope.element.on \"click\", (e) ->\n $scope.$apply ->\n $scope.enforceFullBoundingBox = true\n if e.target == $scope.element[0]\n selection.call($scope.resetAnimation).call($scope.doAnimate)\n $scope.$emit \"memoryBank:mouseOut\"\n\n # Calculate theoretical final position\n selection.call($scope.resetAnimation).call($scope.visual.setTargetPosition)\n\n $scope.enforceFullBoundingBox = false\n if $scope.visual.shouldPerformCollisions\n # Calculate true final position (with collisions)\n $scope.performInitialCollisions = true\n selection.each (d) ->\n d.source =\n x: d.x\n y: d.y\n\n $scope.force.start()\n $scope.force.tick() for i in [1..200] # TODO: cancel this loop on state change (mode/module/user)\n\n selection.each (d) ->\n d.target.x = d.x\n d.target.y = d.y\n d.px = d.x = d.source.x\n d.py = d.y = d.source.y\n\n if !$scope.isHC && ($scope.visual == progressVisual)\n $scope.svg.call($scope.visual.addGoalLines)\n\n # Perform animating simulation with timers between ticks\n $scope.performInitialCollisions = false\n if $scope.preload\n $scope.$emit \"memoryBank:preloadComplete\"\n else if $scope.isHC\n selection.each (d) ->\n d.px = d.x = d.target.x\n d.py = d.y = d.target.y\n selection.call($scope.moveToPosition)\n else\n $scope.svg.call($scope.visual.animateLevelLine) if ($scope.visual == progressVisual)\n selection.call($scope.doAnimate)\n\n # Precompute adjacency matrix\n selection.call($scope.generateAdjacencyMatrix)\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n $scope.svg = d3.select(element[0])\n\n defs = $scope.svg.append(\"defs\")\n\n defs.append \"clipPath\"\n .attr\n id: \"moduleClipPath\"\n .append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: 20\n\n defs.append \"clipPath\"\n .attr\n id: \"userClipPath\"\n .append \"circle\"\n .attr\n cx: 0\n cy: 0\n r: 12\n\n $scope.svg.append(\"g\").classed(\"axis\", true)\n $scope.svg.append(\"g\").classed(\"grid\", true)\n nowLine = $scope.svg.append(\"g\").classed(\"nowLine\", true)\n nowLine.append(\"line\")\n nowLine.append(\"text\").text($filter('translate')(\"js.memory_bank.current_time\"))\n\n $scope.$watchCollection \"orbs\", (data, oldData) ->\n if data && (data != oldData)\n $timeout ->\n $scope.updateSVG(data)\n $scope.parentOrb = null\n\n $scope.$on \"orbToggle\", ($event, toggle, orbId) ->\n d3.select(\"[module_id='\" + orbId + \"']\").classed(\"progress-orb--removed\", !toggle)\n\n $scope.$watch \"mode\", (mode, oldMode) ->\n if $scope.orbs\n $timeout ->\n $scope.updateSVG($scope.orbs)\n])\n","memoryBank.service(\"MemoryBankLevelsService\", [->\n service =\n hourInMsec: 60*60*1000\n dayInMsec: 24*60*60*1000\n monthInMsec: 30*24*60*60*1000\n\n eighthour: 0.33 # is this ok\n oneday: 1\n fivedays: 5\n threeweeks: 7*3\n threemonths: 30*3\n ninemonths: 30*9\n totalLevelsExcludeUnstarted: 7\n\n # TODO: Clean up maximumReviewInterval and maximumReviewInterval etc. Might not need it anymore.\n _.assignIn service, \n levels: [\n intLevel: 0\n slug: \"unstarted\"\n minLevel: 0.0\n ,\n intLevel: 0\n name: \"js.memory_bank.level_new.name\"\n slug: \"level_new\"\n locked: false\n minimumReviewInterval: 0\n maximumReviewInterval: 8*service.hourInMsec\n minDaysPermanence: 0\n maxDaysPermanence: service.eighthour\n minLevel: 0.0\n ,\n intLevel: 0.3\n name: \"js.memory_bank.level_building.name\"\n slug: \"level_building\"\n locked: false\n minimumReviewInterval: 8*service.hourInMsec\n maximumReviewInterval: 1*service.dayInMsec\n minDaysPermanence: service.eighthour\n maxDaysPermanence: service.oneday\n minLevel: 0.3\n ,\n intLevel: 1\n name: \"js.memory_bank.level_1.name\"\n slug: \"level_1\"\n locked: false\n minimumReviewInterval: 1*service.dayInMsec\n maximumReviewInterval: 5*service.dayInMsec\n minDaysPermanence: service.oneday\n maxDaysPermanence: service.fivedays\n minLevel: 1.0\n ,\n intLevel: 2\n name: \"js.memory_bank.level_2.name\"\n slug: \"level_2\"\n locked: true\n minimumReviewInterval: 5*service.dayInMsec\n maximumReviewInterval: 21*service.dayInMsec\n minDaysPermanence: service.fivedays\n maxDaysPermanence: service.threeweeks\n minLevel: 2.0\n ,\n intLevel: 3\n name: \"js.memory_bank.level_3.name\"\n slug: \"level_3\"\n locked: true\n minimumReviewInterval: 21*service.dayInMsec\n maximumReviewInterval: 3*service.monthInMsec\n minDaysPermanence: service.threeweeks\n maxDaysPermanence: service.threemonths\n minLevel: 3.0\n ,\n intLevel: 4\n name: \"js.memory_bank.level_4.name\"\n slug: \"level_4\"\n locked: true\n minimumReviewInterval: 3*service.monthInMsec\n maximumReviewInterval: 9*service.monthInMsec\n minDaysPermanence: service.threemonths\n maxDaysPermanence: service.ninemonths\n minLevel: 4.0\n ,\n intLevel: 5\n name: \"js.memory_bank.level_master.name\"\n slug: \"mastered\"\n locked: true\n minimumReviewInterval: 9*service.monthInMsec\n minDaysPermanence: service.ninemonths\n minLevel: 5.0\n ]\n\n getLevelFromPermanence: (review_interval) ->\n if _.isNull(review_interval)\n _.first(service.levels)\n else\n level = _.find service.levels, (level) ->\n review_interval >= level.minimumReviewInterval && review_interval < level.maximumReviewInterval\n level ||= _.last(service.levels)\n\n binContinuousLevel: (checkpoint_level, review_interval) ->\n if _.isUndefined(review_interval) || (review_interval == 0)\n _.first(service.levels)\n else\n levels = service.levels.slice().reverse()\n _.find levels, (level) ->\n checkpoint_level >= level.minLevel\n\n slugLevel: (checkpoint_level) ->\n if _.isUndefined(checkpoint_level) || (checkpoint_level == 0)\n _.first(service.levels).slug\n else\n levels = service.levels.slice().reverse()\n resultLevel = _.find levels, (level) ->\n checkpoint_level >= level.minLevel\n resultLevel.slug\n\n service\n])\n","import locationPinImage from 'images/v2/memory-bank/location-pin.png'\n\nmemoryBank.directive('memoryBank', [->\n restrict : \"E\"\n\n scope:\n user: \"=?\" # can change, used by groups + admin/users\n module: \"=?\" # can change, used by just about everything\n group: \"=?\" # cannot change\n myGroup: \"=?\" # cannot change\n aggregate: \"=?\" # used by admin/sets\n demo: \"=?\" # used by groups\n lastStudyTime: \"=?\" # used by learn app (study all)\n eligibleItemsCount: \"=?\" # used by home page\n showDashboard: \"=?\" # show group assignments after load on dashboard tab\n showHeader: \"=?\" # overrides implicit showHeader settings\n forceAssignmentContext: \"=?\" # displays the assignment name in the left header without a zoom out link\n memoryBankModal: \"=?\" # hides the right header for v3 pages and displays v3 text in the left header, also disables preload\n allowStanding: \"=?\" # show standing tab if true (prevent it from showing on analytics page)\n\n templateUrl: Packs.iKnowRoutes.memory_bank_v2_templates_path(\"memory_bank\")\n\n controller: ['$scope', '$analytics', '$q', '$window', '$timeout', '$filter', 'DebugHelper', 'UserManager', 'MemoryStorage', 'StudyItemsService', 'localStorageService', 'PassageHighlightingService', 'MemoryBankAssetHelper', 'MemoryBankLevelsService', 'hcHelper', 'FacetsResource', 'MySetsResource', 'MySeriesResource', 'MyMemoriesResource', 'MemoryBankResource', (\n $scope, $analytics, $q, $window, $timeout, $filter, DebugHelper, UserManager, MemoryStorage, StudyItemsService, localStorageService, PassageHighlightingService, MemoryBankAssetHelper, MemoryBankLevelsService, hcHelper, FacetsResource, MySetsResource, MySeriesResource, MyMemoriesResource, MemoryBankResource) ->\n DebugHelper.register(\"memoryBankCtrl\", $scope)\n\n _.assignIn $scope,\n dirty: true\n routes: Packs.iKnowRoutes\n hideFooter: false\n unlockedLevels: []\n preload: true # set to true to prevent svg from starting an animation until we're ready\n themes: [\"night\", \"day\"]\n currentTheme: localStorageService.get(\"memoryBankTheme\") || \"night\"\n levels: _.drop(MemoryBankLevelsService.levels, 1)\n facetsByGuid: {}\n forMobile: angular.element($window).width() < 768\n stateUI: {\n showStandingInstruction : false\n }\n\n viewModes: [\n { value: \"Progress\", label: \"js.memory_bank.labels.progress\"},\n { value: \"Last Seen\", label: \"js.memory_bank.labels.last_seen\"},\n { value: \"Upcoming\", label: \"js.memory_bank.labels.upcoming\"},\n { value: \"Difficulty\", label: \"js.memory_bank.labels.difficulty\"},\n { value: \"Study Time\", label: \"js.memory_bank.labels.study_time\"},\n { value: \"Dashboard\", label: \"js.memory_bank.labels.dashboard\"},\n { value: \"About\", label: \"js.memory_bank.labels.about\"}\n ]\n\n helpLevels: [\n name: \"js.memory_bank.help_levels.level_new.name\"\n class: \"level_new\"\n description_html: \"js.memory_bank.help_levels.level_new.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_building.name\"\n class: \"level_building\"\n description_html: \"js.memory_bank.help_levels.level_building.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_1.name\"\n class: \"level_1\"\n duration: \"js.memory_bank.help_levels.level_1.duration\"\n frequency: \"js.memory_bank.help_levels.level_1.frequency\"\n time: \"js.memory_bank.help_levels.level_1.time\"\n detail: \"js.memory_bank.help_levels.level_1.detail\"\n description_html: \"js.memory_bank.help_levels.level_1.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_2.name\"\n class: \"level_2\"\n duration: \"js.memory_bank.help_levels.level_2.duration\"\n frequency: \"js.memory_bank.help_levels.level_2.frequency\"\n time: \"js.memory_bank.help_levels.level_2.time\"\n study_time_item: \"js.memory_bank.help_levels.level_2.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_2.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_2.study_duration\"\n description_html: \"js.memory_bank.help_levels.level_2.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_3.name\"\n class: \"level_3\"\n duration: \"js.memory_bank.help_levels.level_3.duration\"\n frequency: \"js.memory_bank.help_levels.level_3.frequency\"\n time: \"js.memory_bank.help_levels.level_3.time\"\n study_time_item: \"js.memory_bank.help_levels.level_3.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_3.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_3.study_duration\"\n description_html: \"js.memory_bank.help_levels.level_3.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_4.name\"\n class: \"level_4\"\n duration: \"js.memory_bank.help_levels.level_4.duration\"\n frequency: \"js.memory_bank.help_levels.level_4.frequency\"\n time: \"js.memory_bank.help_levels.level_4.time\"\n study_time_item: \"js.memory_bank.help_levels.level_4.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_4.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_4.study_duration\"\n description_html: \"js.memory_bank.help_levels.level_4.description_html\"\n ,\n name: \"js.memory_bank.help_levels.level_master.name\"\n class: \"mastered\"\n duration: \"js.memory_bank.help_levels.level_master.duration\"\n frequency: \"js.memory_bank.help_levels.level_master.frequency\"\n time: \"js.memory_bank.help_levels.level_master.time\"\n detail: \"js.memory_bank.help_levels.level_master.detail\"\n description_html: \"js.memory_bank.help_levels.level_master.description_html\"\n ]\n\n helpModes: [\n name: \"js.memory_bank.help_mode.meaning.name\"\n slug: \"meaning\"\n description: \"js.memory_bank.help_mode.meaning.description\"\n ,\n name: \"js.memory_bank.help_mode.workload.name\"\n slug: \"workload\"\n description: \"js.memory_bank.help_mode.workload.description\"\n ,\n name: \"js.memory_bank.help_mode.frequency.name\"\n slug: \"frequency\"\n description: \"js.memory_bank.help_mode.frequency.description\"\n ]\n\n helpModeClasses: (mode) ->\n classes = [mode.slug]\n classes.push(\"active\") if mode.slug == $scope.currentHelpMode.slug\n classes\n\n setCurrentHelpMode: (mode) ->\n $scope.currentHelpMode = mode\n\n setCurrentTheme: (theme) ->\n $scope.currentTheme = theme\n\n setCurrentMode: (mode) ->\n $analytics.eventTrack(mode, { category: 'memory_bank_tab_switch' } )\n $scope.clearTooltip()\n previousMode = $scope.currentMode\n $scope.currentMode = mode\n\n # This whole part can be simplified if reloadData was turned into a promise\n if mode == 'Dashboard'\n if previousMode == 'Standing'\n $scope.reloadData(true, () -> $scope.prepareDashboard())\n else\n $scope.prepareDashboard()\n else if previousMode == 'Standing'\n $scope.orbs = []\n $scope.reloadData(true)\n else if mode == 'Standing'\n if !$scope.currentModule\n $scope.stateUI.showStandingInstruction = true\n else\n $scope.reloadData(true)\n\n setCurrentUser: (user, forceSpinner = false) ->\n $scope.currentUser = user\n $scope.reloadData(forceSpinner)\n\n setCurrentModule: (module, forceSpinner = false) ->\n $scope.$emit \"memoryBank:setCurrentModule\", module\n $scope.currentModule = module\n if module\n $scope.currentModule.in_schedule = true\n else\n $scope.showScoringGoal = false\n\n if _.isNull(module) && $scope.currentMode == 'Standing'\n $scope.currentMode = 'Progress'\n\n $scope.reloadData(!module || forceSpinner).then () ->\n if module\n $scope.showScoringGoal = true\n\n facetForGuid: (guid) ->\n _.sample($scope.facetsByGuid[guid] || [])\n\n getOrbCta: (orb) ->\n if orb.studied_items_count > 0\n if orb.up_for_review\n \"js.memory_bank.dashboard.cta.review_now\"\n else\n \"js.memory_bank.dashboard.cta.keep_learning\"\n else\n \"js.memory_bank.dashboard.cta.start_learning\"\n\n getOrbCtaClasses: (orb) ->\n if orb.up_for_review && orb.studied_items_count > 0\n []\n else\n [\"button--secondary\"]\n\n getOrbNextReviewText: (orb) ->\n if orb.up_for_review && orb.studied_items_count > 0\n $filter('translate')(\"js.memory_bank.dashboard.asap\")\n else\n \"-\"\n\n getLeftHeaderText: ->\n if $scope.memoryBankModal\n # v3 learn\n if $scope.group\n $scope.group.attributes.name\n else if $scope.currentModule\n $scope.currentModule.name || $scope.currentModule.attributes.name\n else\n $filter('translate')(\"js.memory_bank.header.welcome\")\n else\n if $scope.currentUser # admin\n $filter('translate')(\"js.memory_bank.header.user\")\n else if $scope.currentModule # v2 learn drilldown\n $scope.currentModule.name || $scope.currentModule.attributes.name\n else # v2 learn dashboard\n $filter('translate')(\"js.memory_bank.header.your\")\n\n prepareDashboard: ->\n if $scope.orbs && $scope.orbs.length > 0 && $scope.orbs[0].orb_type == \"facet\"\n $scope.dashboardOrbs = $scope.orbs\n else\n $scope.dashboardOrbs = _.union($scope.orbsByLevel.unstarted, $scope.orbs)\n missingGuids = _.difference(_.map($scope.dashboardOrbs, \"learning_engine_guid\"), _.keys($scope.facetsByGuid))\n callback = ->\n for orb in $scope.dashboardOrbs\n orb.cta = $scope.getOrbCta(orb)\n orb.ctaClasses = $scope.getOrbCtaClasses(orb)\n orb.nextReviewText = $scope.getOrbNextReviewText(orb)\n unless orb.anchor\n facet = $scope.facetForGuid(orb.learning_engine_guid)\n orb.anchor = facet && facet.anchor\n if missingGuids.length > 0\n $scope.loadContentForGuids(missingGuids, callback)\n else\n callback()\n\n prepareFacet: (facet) ->\n facet.orb_type = \"facet\"\n facet.level_slug = MemoryBankLevelsService.binContinuousLevel(facet.level, facet.review_interval).slug\n facet.up_for_review = $scope.dateInFuture(facet.see_next_at)\n true\n\n launchStudySession: (module) ->\n moduleType = (if module.module_type == \"set\" then \"sets\" else module.module_type)\n StudyItemsService.loadStudyItem(moduleType, module.id, \"recommended\", $window.location.pathname).then (studyItem) ->\n $window.location.href = studyItem.learnPath\n\n prepareModule: (module) ->\n module.orb_type = \"module\"\n if module.module_type == \"series\"\n module.module_path = Packs.iKnowRoutes.v3_learn_series_path(module.id)\n else\n module.module_path = Packs.iKnowRoutes.v3_learn_set_path(module.id)\n\n module.level_slug = MemoryBankLevelsService.slugLevel(module.score)\n module.image ||= MemoryBankAssetHelper.defaultModuleOrb()\n module.up_for_review = $scope.dateInFuture(module.see_next_at)\n module.in_schedule = true\n true\n\n prepareUser: (user) ->\n user.orb_type = \"user\"\n user.level_slug = MemoryBankLevelsService.slugLevel(user.score)\n user.up_for_review = $scope.dateInFuture(user.see_next_at)\n\n if $scope.demo || $scope.allowStanding\n user.id = user.user.username\n user.name = \"(anonymous)\"\n if $scope.currentUser.attributes.username == user.id\n user.image = $scope.currentUser.relationships?.image?.data?.attributes.url || locationPinImage\n user.has_image = $scope.currentUser.relationships?.image?.data?.attributes.url\n user.orb_type = \"standing_user\"\n user.unclickable = true\n else\n user.orb_type = \"user\"\n user.unclickable = true\n user.image = MemoryBankAssetHelper.defaultUserOrb(user.level_slug)\n else\n user.id = user.user.id\n user.name = user.user.name\n user.image = user.user.icon_image || MemoryBankAssetHelper.defaultUserOrb(user.level_slug)\n\n true\n\n finalizeLoad: (type, memories, optionalCallback) ->\n orbs = memories\n if orbs.length < 1\n $scope.$emit \"memoryBank:noData\"\n\n $scope.$emit \"memoryBank:loadingCompleted\" if (type == \"facets\")\n\n switch type\n when \"facets\"\n for orb in orbs\n $scope.prepareFacet(orb)\n if $scope.currentModule.hasOwnProperty(\"studied_items_count\")\n # if module came back from LE it has items_count\n unstarted_items_count = ($scope.currentModule.items_count) - $scope.currentModule.studied_items_count\n else if $scope.currentModule.hasOwnProperty(\"attributes\")\n # the module is a v3 object, so look inside attributes for the memories count\n unstarted_items_count = $scope.currentModule.attributes['memories-count'] - orbs.length\n else\n # if it came from Content, it has memories_count\n unstarted_items_count = $scope.currentModule.memories_count - orbs.length\n if !$scope.forMobile\n _.times unstarted_items_count, (i) ->\n $scope.orbsByLevel.unstarted.push({})\n when \"modules\"\n for orb in orbs\n $scope.prepareModule(orb)\n when \"users\"\n for orb in orbs\n $scope.prepareUser(orb)\n else\n throw new Error(\"Unexpected type of orb in knowledge bank: \" + type)\n\n for orb in orbs\n if $scope.orbsByLevel[orb.level_slug]\n $scope.orbsByLevel[orb.level_slug].push(orb)\n\n locked = true\n\n if $scope.forMobile && $scope.currentModule\n maxLevelShown = Math.max($scope.currentModule.scoring_goal, $scope.currentModule.score)\n $scope.levels = _.reject(_.drop(MemoryBankLevelsService.levels,1), (level) ->\n level.intLevel > maxLevelShown\n )\n _.times $scope.levels.length, (i) ->\n level = $scope.levels[$scope.levels.length - i - 1]\n locked = locked && !($scope.orbsByLevel[level.slug].length > 0)\n level.header_locked = locked\n level.locked = false\n else\n _.times $scope.levels.length, (i) ->\n level = $scope.levels[$scope.levels.length - i - 1]\n locked = locked && !($scope.orbsByLevel[level.slug].length > 0)\n unlockedByDefault = level.slug == 'level_new' || level.slug == 'level_building'|| level.slug == \"level_1\" || level.slug == \"unstarted\"\n level.header_locked = false\n level.locked = (!unlockedByDefault) && locked\n\n if $scope.forMobile && !$scope.currentModule\n $scope.levels = _.reject($scope.levels, (level) -> level.locked)\n\n $scope.unlockedLevels = _.filter($scope.levels, locked: false)\n\n $timeout ->\n $scope.clearTooltip()\n $scope.orbs = _.reduce $scope.unlockedLevels, (memo, level) ->\n memo.concat($scope.orbsByLevel[level.slug])\n , []\n if optionalCallback\n optionalCallback()\n\n if $scope.currentModule\n if $scope.currentModule.meta?['memory-aggregate'] # MemoryBank on specific set/series page\n $scope.aggregateStats =\n active_count: $scope.currentModule.meta['memory-aggregate']['studied-items-count'] - $scope.currentModule.meta['memory-aggregate']['eligible-items-count']\n fading_count: $scope.currentModule.meta['memory-aggregate']['eligible-items-count']\n unstarted_count: $scope.currentModule.meta['memory-aggregate']['unstarted-items-count']\n else # MemoryBank on dashboard with specific set/series orb selected\n $scope.aggregateStats =\n active_count: $scope.currentModule.studied_items_count\n fading_count: $scope.currentModule.eligible_items_count\n unstarted_count: $scope.currentModule.items_count - $scope.currentModule.studied_items_count\n else\n studied_items = _.sum(_.map(orbs, \"studied_items_count\"))\n items_count = _.sum(_.map(orbs, \"items_count\"))\n eligible_items_count = _.sum(_.map(orbs, \"eligible_items_count\"))\n $scope.aggregateStats =\n active_count: studied_items - eligible_items_count\n fading_count: eligible_items_count\n unstarted_count: items_count - studied_items\n\n $scope.isHC = orbs.length > hcHelper.threshold\n $scope.hasEligibleItems = _.some(orbs, (orb) -> orb.eligible_items_count > 0)\n $scope.loadingOrb = null\n $scope.dirty = false\n\n reloadData: (forceSpinner, optionalCallback) ->\n $scope.dataRequestId = dataRequestId = Math.random()\n\n if $scope.error\n $scope.error = null\n $scope.dirty = true\n\n if forceSpinner\n $scope.dirty = true\n\n if $scope.currentModule && $scope.currentMode != 'Standing'\n $scope.currentModule.score = null\n $scope.currentModule.level_slug = null\n\n $scope.clearTooltip()\n\n $scope.orbsByLevel =\n unstarted: []\n level_new: []\n level_building: []\n level_1: []\n level_2: []\n level_3: []\n level_4: []\n mastered: []\n\n if $scope.forMobile\n $scope.viewModes = _.filter($scope.viewModes, (mode) ->\n mode.value == \"Progress\" || mode.value == \"Dashboard\"\n )\n\n UserManager.loadUser().then (user) ->\n if $scope.lastStudyTime\n $scope.showHeader = false\n if MemoryStorage.cache.my_memories\n # Second summary initial load for study all\n $scope.preload = true\n $scope.finalizeLoad(\"facets\", MemoryStorage.cache.my_memories)\n $scope.fadingMemories = MemoryStorage.cache.my_memories\n else\n # Second summary second load for study all\n $scope.preload = false\n MyMemoriesResource.query\n studied_since: $scope.lastStudyTime\n , (success) ->\n recentMemories = success.response\n recentGuids = _.map(recentMemories,\"learning_engine_guid\")\n fadingMemories = _.reject($scope.fadingMemories, (m) -> _.includes(recentGuids,m.learning_engine_guid))\n memories = recentMemories.concat(fadingMemories)\n MemoryStorage.cache.my_memories = memories\n $scope.finalizeLoad(\"facets\", memories)\n else if $scope.module?.module_type == \"courses\"\n $scope.preload = false\n $scope.showHeader = false\n params = { group_id: $scope.module.id }\n MyMemoriesResource.query params\n , (success) ->\n MemoryStorage.cache.my_memories = success.response\n $scope.finalizeLoad(\"facets\", success.response)\n else if $scope.module?.module_type == \"study_all\"\n # Initial knowledge bank load for study all\n $scope.preload = false\n $scope.showHeader = false\n params = { fading_only: true }\n\n MyMemoriesResource.query params\n , (success) ->\n MemoryStorage.cache.my_memories = success.response\n $scope.finalizeLoad(\"facets\", success.response)\n else\n constraints = {}\n\n if $scope.group\n constraints.group_id = $scope.group.id\n else\n constraints.user_id = user.id\n\n if $scope.myGroup\n constraints.my_group_id = $scope.myGroup.id\n\n if $scope.currentUser\n constraints.user_id = $scope.currentUser.username || $scope.currentUser.id\n\n # remove the score when switched from group individual user view to all user view\n if $scope.group && !$scope.currentUser && $scope.currentModule\n $scope.currentModule.score = null\n $scope.currentModule.level_slug = null\n\n if $scope.currentModule\n $scope.currentModule.scoring_goal_slug = MemoryBankLevelsService.slugLevel($scope.currentModule.scoring_goal)\n constraints.module_id = $scope.currentModule.id\n constraints.module_type = $scope.currentModule.module_type\n\n if $scope.aggregate && !$scope.currentUser\n constraints.user_id = null\n constraints.aggregate = true\n\n $scope.preload = !!(_.isUndefined($scope.orbs) && $scope.currentModule && !_.isUndefined(MemoryStorage.cache[MemoryStorage.cacheKey(constraints)]))\n if !!$scope.memoryBankModal\n $scope.preload = false\n\n if $scope.group && !($scope.currentModule || $scope.currentUser)\n return # Temporary fail in the groups logic, let's wait a bit\n\n if $scope.currentMode == 'Standing'\n $scope.stateUI.showStandingInstruction = false\n params = {\n group_id: $scope.group.id\n }\n if $scope.currentModule.module_type == \"series\"\n resource = \"groupSeriesStanding\"\n params.series_id = $scope.currentModule.id\n else\n resource = \"groupGoalStanding\"\n params.set_id = $scope.currentModule.id\n\n MemoryBankResource[resource] params\n , (success) ->\n $scope.finalizeLoad(\"users\", success.response)\n # don't show level for admin/sets, home, module with score already loaded, logged out, or group users\n else if $scope.aggregate || !$scope.currentModule || $scope.currentModule.score || !user || ($scope.group && !$scope.currentUser)\n $scope.loadData(constraints, dataRequestId)\n # TODO: Simplify this!!\n # Need to do this extra step to get user's set score. Make v3 api return it with aggregates.\n else\n $scope.loadModuleAgg(constraints).then (result) ->\n if (!_.isUndefined(result) && !_.isEmpty(result.memories))\n result = result.memories[0]\n $scope.currentModule.scoring_goal = result.scoring_goal\n $scope.currentModule.scoring_goal_slug = MemoryBankLevelsService.slugLevel(result.scoring_goal)\n $scope.currentModule.score = result.score\n $scope.currentModule.level_slug = MemoryBankLevelsService.slugLevel($scope.currentModule.score)\n constraints.aggregate = false\n constraints.need_set_score = false\n $scope.loadData(constraints, dataRequestId, optionalCallback)\n\n loadModuleAgg: (constraints) ->\n constraints.need_set_score = true\n constraints.aggregate = true\n MemoryStorage.load(constraints)\n\n loadData: (constraints, dataRequestId, optionalCallback) ->\n MemoryStorage.load(constraints).then (response) ->\n # prevent race condition when two loads triggered simultaneously\n unless response.message == \"OK\"\n $scope.$emit \"memoryBank:partialResults\", response.message\n if $scope.dataRequestId == dataRequestId\n $scope.finalizeLoad(response.type, response.memories, optionalCallback)\n , (error) ->\n $scope.error = (error.data && error.data.meta && error.data.meta.message) || $filter('translate')(\"js.memory_bank.could_not_load\")\n $scope.dirty = false\n\n toggleSchedule: (toggle) ->\n if $scope.tooltipOrb && $scope.tooltipOrb.orb_type == \"module\"\n fromTooltip = true\n module = $scope.tooltipOrb\n else\n fromTooltip = false\n module = $scope.currentModule\n $scope.resource = if module.module_type == \"set\" then MySetsResource else MySeriesResource\n if toggle\n $scope.addToSchedule(fromTooltip, module)\n else\n $scope.removeFromSchedule(fromTooltip, module)\n\n addToSchedule: (fromTooltip, module) ->\n if $scope.reloadTimer\n $timeout.cancel($scope.reloadTimer)\n if fromTooltip\n $scope.$broadcast(\"orbToggle\", true, $scope.tooltipOrb.id)\n $scope.resource.addToSchedule id: module.id,\n (success) ->\n console.log(\"Module added to schedule\")\n\n removeFromSchedule: (fromTooltip, module) ->\n module.removing = true\n orbId = $scope.tooltipOrb?.id\n $scope.resource.removeFromSchedule id: module.id,\n (success) ->\n module.in_schedule = false\n MemoryStorage.reset()\n if fromTooltip\n $scope.$broadcast(\"orbToggle\", false, orbId)\n $scope.reloadTimer = $timeout ->\n $scope.setCurrentModule(null, !fromTooltip)\n , 2000\n\n levelClasses: (level) ->\n classes = [level.slug]\n classes.push(\"locked\") if level.locked\n classes\n\n themeClasses: (theme) ->\n classes = [theme]\n classes.push(\"active\") if theme == $scope.currentTheme\n classes\n\n classModifier: ->\n switch $scope.currentMode\n when 'Progress'\n \"progress\"\n when \"Difficulty\"\n \"difficulty\"\n when \"Last Seen\", \"Upcoming\"\n \"timeline\"\n when \"Study Time\"\n \"totaltime\"\n when \"Dashboard\"\n \"summary\"\n\n dateInFuture: (date) ->\n (new Date(date)) <= (new Date())\n\n clearTooltip: ->\n $scope.tooltipOrb = null\n $scope.tooltipFacet = null\n $scope.tooltipDirty = false\n\n stopTooltipTimer: ->\n if $scope.tooltipTimer\n $timeout.cancel($scope.tooltipTimer)\n\n startTooltipTimer: ->\n $scope.stopTooltipTimer()\n $scope.tooltipTimer = $timeout $scope.clearTooltip, 3000\n\n revealTooltip: ->\n $scope.tooltipRevealed = true\n\n prepareTooltipFacets: (facets) ->\n for facet in facets\n if facet.anchor.image_map_node\n facet.anchor =\n region: facet.anchor.image_map_node\n else if facet.anchor.cloze_node\n facet.anchor =\n text_html: facet.anchor.cloze_node.cloze_text\n else if facet.anchor.sequence_node\n facet.anchor =\n text_html: \"\" + facet.anchor.sequence_node.position\n else\n facet.anchor = facet.anchor.concept\n facet.association = facet.association.concept\n\n loadContentForGuids: (guids, callback) ->\n if $scope.module && $scope.module.module_type == \"study_all\" && guids.length > 1\n params = { fading_only: true}\n else\n params = { \"guids[]\": guids }\n FacetsResource.query params\n , (success) ->\n facetsByGuid = _.groupBy(success.response,\"learning_engine_guid\")\n _.assignIn($scope.facetsByGuid, facetsByGuid)\n $scope.prepareTooltipFacets _.flatten(_.values(facetsByGuid))\n callback() if callback\n\n $scope.currentHelpMode = $scope.helpModes[0]\n\n $scope.levelsBySlug = _.keyBy($scope.levels, \"slug\")\n\n $scope.$on \"memoryBank:selectModule\", (e, orb) ->\n if orb\n $scope.loadingOrb =\n x: orb.x\n y: orb.y\n $scope.setCurrentModule(orb) if $scope.allowDirectModuleSelection\n\n $scope.$on \"memoryBank:selectUser\", (e, orb) ->\n if orb\n $scope.loadingOrb =\n x: orb.x\n y: orb.y\n $scope.setCurrentUser(orb, !orb)\n\n $scope.$on \"memoryBank:mouseOver\", (e, orb, orbOnLeft) ->\n return if $scope.currentMode == 'Standing'\n $scope.stopTooltipTimer()\n $scope.tooltipOrb = orb\n $scope.tooltipOrb.scoring_goal_slug = MemoryBankLevelsService.slugLevel(orb.scoring_goal)\n $scope.tooltipRevealed = false\n $scope.tooltipStyle = if orbOnLeft then { right: 0 } else { left: 0 }\n if orb.orb_type == \"facet\"\n $scope.tooltipFacet = $scope.facetForGuid(orb.learning_engine_guid)\n unless $scope.tooltipFacet\n $scope.tooltipDirty = true\n $scope.loadContentForGuids [orb.learning_engine_guid], ->\n $scope.tooltipFacet = $scope.facetForGuid(orb.learning_engine_guid)\n $scope.tooltipDirty = false\n\n $scope.$on \"memoryBank:mouseOut\", (e, orb) ->\n if orb\n $scope.startTooltipTimer()\n else\n $scope.clearTooltip()\n\n $scope.$on \"memoryBank:preloadComplete\", (e) ->\n $scope.preload = false\n MemoryStorage.reset()\n $scope.reloadData()\n\n $scope.$watch \"currentTheme\", ->\n for theme in $scope.themes\n $scope.element.toggleClass(\"theme-\" + theme, theme == $scope.currentTheme)\n localStorageService.set \"memoryBankTheme\", $scope.currentTheme\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n\n $scope.allowDirectModuleSelection = !attrs.hasOwnProperty(\"myGroup\")\n $scope.showHeader = if $scope.showHeader then true else (!attrs.hasOwnProperty(\"module\") && !attrs.hasOwnProperty(\"myGroup\"))\n $scope.forceAssignmentContext = !!$scope.forceAssignmentContext\n $scope.memoryBankModal = !!$scope.memoryBankModal\n\n if $scope.showDashboard\n # Assignments MB: Need to wait for data to load before preparing dashboard\n runOnce = true\n $scope.$watch \"orbs\", (newVal, oldVal) ->\n if newVal && runOnce\n runOnce = false\n $scope.setCurrentMode(\"Dashboard\")\n else\n $scope.setCurrentMode($scope.viewModes[0].value)\n\n # forces initial data load\n $scope.currentUser = $scope.user\n $scope.setCurrentModule($scope.module)\n\n if $scope.allowStanding && $scope.group && $scope.currentUser && ($scope.currentUser.meta[\"is-admin\"] || $scope.group.relationships.partner.data.attributes[\"partner-settings\"][\"standing-enabled\"])\n $scope.viewModes.push({ value: \"Standing\", label: \"js.memory_bank.labels.standing\" })\n\n # Watch for changes in user (Group MB only)\n $scope.$watch \"user\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.setCurrentUser(newVal, true)\n\n # Watch for changes in module (Group MB only)\n $scope.$watch \"module\", (newVal, oldVal) ->\n if newVal != oldVal\n $scope.setCurrentModule(newVal, true)\n])\n\nmemoryBank.filter('duration', ['timeHelper', (timeHelper) ->\n timeHelper.msecToString\n])\n","memoryBank.directive('memoryBankDemo', [->\n restrict : 'E'\n\n templateUrl: Packs.iKnowRoutes.memory_bank_v2_templates_path(\"memory_bank\")\n\n controller: ['$scope', 'MemoryBankAssetHelper', 'MemoryBankLevelsService', ($scope, MemoryBankAssetHelper, MemoryBankLevelsService) ->\n window.debug = window.debug || {}\n window.debug[\"memoryBankDemoCtrl\"] = $scope\n\n _.assignIn $scope,\n dirty: false\n showHeader: false\n hideFooter: true\n unlockedLevels: []\n preload: true\n currentMode: \"Progress\"\n currentTheme: \"night\"\n isDemo: true\n currentHelpMode:\n slug: 'meaning'\n orbsByLevel:\n level_new: []\n level_building: []\n level_1: []\n level_2: []\n level_3: []\n level_4: []\n mastered: []\n\n helpLevels: [\n name: \"js.memory_bank.help_levels.level_new.name\"\n class: \"level_new\"\n ,\n name: \"js.memory_bank.help_levels.level_building.name\"\n class: \"level_building\"\n ,\n name: \"js.memory_bank.help_levels.level_1.name\"\n class: \"level_1\"\n duration: \"js.memory_bank.help_levels.level_1.duration\"\n frequency: \"js.memory_bank.help_levels.level_1.frequency\"\n time: \"js.memory_bank.help_levels.level_1.time\"\n detail: \"quickly forgotten\"\n ,\n name: \"js.memory_bank.help_levels.level_2.name\"\n class: \"level_2\"\n duration: \"js.memory_bank.help_levels.level_2.duration\"\n frequency: \"js.memory_bank.help_levels.level_2.frequency\"\n time: \"js.memory_bank.help_levels.level_2.time\"\n study_time_item: \"js.memory_bank.help_levels.level_2.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_2.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_2.study_duration\"\n ,\n name: \"js.memory_bank.help_levels.level_3.name\"\n class: \"level_3\"\n duration: \"js.memory_bank.help_levels.level_3.duration\"\n frequency: \"js.memory_bank.help_levels.level_3.frequency\"\n time: \"js.memory_bank.help_levels.level_3.time\"\n study_time_item: \"js.memory_bank.help_levels.level_3.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_3.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_3.study_duration\"\n ,\n name: \"js.memory_bank.help_levels.level_4.name\"\n class: \"level_4\"\n duration: \"js.memory_bank.help_levels.level_4.name\"\n frequency: \"js.memory_bank.help_levels.level_4.frequency\"\n time: \"js.memory_bank.help_levels.level_4.time\"\n study_time_item: \"js.memory_bank.help_levels.level_4.study_time_item\"\n study_time_set: \"js.memory_bank.help_levels.level_4.study_time_set\"\n study_duration: \"js.memory_bank.help_levels.level_4.study_duration\"\n ,\n name: \"js.memory_bank.help_levels.level_master.name\"\n class: \"mastered\"\n duration: \"js.memory_bank.help_levels.level_master.duration\"\n frequency: \"js.memory_bank.help_levels.level_master.frequency\"\n time: \"\"\n detail: \"in long term memory\"\n ]\n\n allLevels: [\n name: \"js.memory_bank.level_new.name\"\n slug: \"level_new\"\n locked: false\n minimumReviewInterval: MemoryBankLevelsService.levels[1].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[1].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[1].minLevel\n ,\n name: \"js.memory_bank.level_building.name\"\n slug: \"level_building\"\n locked: false\n minimumReviewInterval: MemoryBankLevelsService.levels[2].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[2].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[2].minLevel\n ,\n name: \"Level 1\"\n slug: \"level_1\"\n locked: false\n minimumReviewInterval: MemoryBankLevelsService.levels[3].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[3].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[3].minLevel\n ,\n name: \"Level 2\"\n slug: \"level_2\"\n locked: true\n minimumReviewInterval: MemoryBankLevelsService.levels[4].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[4].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[4].minLevel\n ,\n name: \"Level 3\"\n slug: \"level_3\"\n locked: true\n minimumReviewInterval: MemoryBankLevelsService.levels[5].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[5].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[5].minLevel\n ,\n name: \"Level 4\"\n slug: \"level_4\"\n locked: true\n minimumReviewInterval: MemoryBankLevelsService.levels[6].minimumReviewInterval\n maximumReviewInterval: MemoryBankLevelsService.levels[6].maximumReviewInterval\n minLevel: MemoryBankLevelsService.levels[6].minLevel\n ,\n name: \"Mastery Zone\"\n slug: \"mastered\"\n locked: true\n minimumReviewInterval: MemoryBankLevelsService.levels[7].minimumReviewInterval\n minLevel: MemoryBankLevelsService.levels[7].minLevel\n ]\n\n levelClasses: (level) ->\n classes = [level.slug]\n classes.push(\"locked\") if level.locked\n classes\n\n initializeDemo: ->\n $scope.levels = $scope.allLevels\n orbs = [{ learning_engine_guid: 1, pulse: false, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 8, pulse: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 7, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95}]\n\n $scope.orbsByLevel.level_new = orbs.slice(0, 7)\n $scope.unlockedLevels = $scope.levels.slice(0,3)\n $scope.isDemo = true\n $scope.orbs = orbs\n angular.element(\"memory-bank-demo\").addClass(\"theme-night\")\n\n $scope.$on \"learnMoreMemoryBank:setStep\", (event, step) ->\n $scope.currentMode = \"Progress\"\n switch step\n when 1\n $scope.initializeDemo()\n when 2\n $scope.levels = $scope.levels.slice(0,3)\n $scope.preload = false\n angular.element(\".learn-app--membank-container\").width(\"80%\")\n angular.element(\".learn--app-blurb-aminate\").slideUp(->\n $scope.orbs = [{ learning_engine_guid: 1, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.95},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.25, current_retention: 0.91},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.15, current_retention: 0.945},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.18, current_retention: 0.955},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.29, current_retention: 0.97},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.02, current_retention: 0.5},\n { learning_engine_guid: 9, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.22, current_retention: 0.7}]\n $scope.orbsByLevel.level_new = $scope.orbs\n angular.element(\".learn-app--membank-explain\").show()\n )\n return true\n when 3\n $scope.orbs = [{ learning_engine_guid: 1, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.4},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.25, current_retention: 0.91},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.15, current_retention: 0.945},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.18, current_retention: 0.955},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.29, current_retention: 0.97},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.02, current_retention: 0.5},\n { learning_engine_guid: 9, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.22, current_retention: 0.7}]\n $scope.orbsByLevel.level_new = $scope.orbs\n when 4\n $scope.orbs = [{ learning_engine_guid: 1, orb_type: \"facet\", level_slug: \"level_new\", score: 0.25, current_retention: 0.975},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.25, current_retention: 0.91},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.10, current_retention: 0.945},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.15, current_retention: 0.955},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.29, current_retention: 0.97},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.02, current_retention: 0.5},\n { learning_engine_guid: 9, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.22, current_retention: 0.7}]\n $scope.orbsByLevel.level_new = $scope.orbs\n when 5\n $scope.orbs = [{ learning_engine_guid: 1, orb_type: \"facet\", level_slug: \"level_building\", score: 0.35, current_retention: 0.99},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_building\", score: 0.6, current_retention: 0.91},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_building\", score: 0.85, current_retention: 0.945},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.15, current_retention: 0.955},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.29, current_retention: 0.97},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.02, current_retention: 0.5},\n { learning_engine_guid: 9, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.22, current_retention: 0.7}]\n $scope.orbsByLevel.level_building = $scope.orbs.slice(0,3)\n $scope.orbsByLevel.level_new = $scope.orbs.slice(3,7)\n when 6\n $scope.orbs = [{ learning_engine_guid: 1, orb_type: \"facet\", level_slug: \"level_new\", score: 0.25, current_retention: 0.99},\n { learning_engine_guid: 2, disabled: true, orb_type: \"facet\", level_slug: \"level_building\", score: 0.6, current_retention: 0.91},\n { learning_engine_guid: 3, disabled: true, orb_type: \"facet\", level_slug: \"level_building\", score: 0.85, current_retention: 0.945},\n { learning_engine_guid: 4, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.15, current_retention: 0.955},\n { learning_engine_guid: 5, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.29, current_retention: 0.97},\n { learning_engine_guid: 6, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.02, current_retention: 0.5},\n { learning_engine_guid: 9, disabled: true, orb_type: \"facet\", level_slug: \"level_new\", score: 0.22, current_retention: 0.7}]\n $scope.orbsByLevel.level_building = $scope.orbs.slice(1,3)\n $scope.orbsByLevel.level_new = $scope.orbs.slice(3,7).concat($scope.orbs[0])\n when 7\n $scope.currentMode = \"About\"\n ]\n])\n","require('../../v3/modules/common/resources/v3-session-resource.js')\n\nwindow.siteNavigationApp = angular.module(\"cerego.navigations\", [\n \"LocalStorageModule\"\n \"ngResource\"\n \"cerego.common\"\n])\n\n# replace these with explicit import\nreq = require.context('./site-navigation/resources', false, /\\.js$/)\nreq.keys().forEach(req)\n\nrequire('./site-navigation/context-service.js')\nrequire('./site-navigation/course-context-service.js')\nrequire('./site-navigation/my_partners_service.js')\nrequire('./site-navigation/product_service.js')\nrequire('./site-navigation/site-navigation-service.js')\nrequire('./site-navigation/user-manager.js')\n\n# replace these with explicit import\nreq = require.context('./site-navigation/controllers', false)\nreq.keys().forEach(req)\nreq = require.context('./site-navigation/directives', false)\nreq.keys().forEach(req)\n","var map = {\n\t\"./V3DeloitteAutoLogInResource.js\": 680,\n\t\"./my_profile_resource.js\": 681,\n\t\"./partners_resource.js\": 682,\n\t\"./v3_partners_resource.js\": 683\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 679;","siteNavigationApp.factory('V3DeloitteAutoLogInResource', ['$resource', ($resource) ->\n $resource \"\", {},\n learn:\n method: 'POST'\n isArray: false\n url: APIRoutes.learn_v3_deloitte_autologin_sessions_path()\n courses:\n method: 'POST'\n isArray: false\n url: APIRoutes.courses_v3_deloitte_autologin_sessions_path()\n])\n","siteNavigationApp.factory('MyProfileResource', ['$resource', ($resource) ->\n $resource \"\",{},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_my_profile_path()\n])\n","siteNavigationApp.factory('PartnersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_my_partner_path()\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v2_my_partner_path()\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partner_path(\":id\")\n params:\n id: \"@id\"\n save:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v2_partner_path(\":id\")\n params:\n id: \"@id\"\n sets:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partner_sets_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n series:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partner_series_index_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n series_save:\n method: 'POST'\n isArray: false\n url: APIRoutes.v2_partner_series_index_path(\":partner_id\")\n params:\n partner_id: \"@partner_id\"\n my_partners:\n method: 'GET'\n isArray: false\n url: APIRoutes.v2_partners_path()\n])\n","siteNavigationApp.factory('V3PartnersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_partner_path(\":id\")\n params:\n id: \"@id\"\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_partners_path()\n update:\n method: 'PATCH'\n isArray: false\n url: APIRoutes.v3_partner_path(\":id\")\n params:\n id: \"@id\"\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_partner_path(\":id\")\n params:\n id: \"@id\"\n my_partners:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_my_partners_path()\n])\n","siteNavigationApp.factory(\"ContextService\", ['$rootScope', '$routeParams', '$location', '$q', '$window', 'DebugHelper', 'SetsResource', 'SeriesResource', 'LtiService', 'V3CoursesResource', (\n $rootScope, $routeParams, $location, $q, $window, DebugHelper, SetsResource, SeriesResource, LtiService, V3CoursesResource) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"ContextService\", $scope)\n\n _.assignIn $scope,\n hasLoadedAtLeastOnce: false\n fromPreview: false\n\n setContext: (module_type, module_id) ->\n $scope.contextId = module_id\n $scope.contextType = module_type\n\n loadContext: ->\n LtiService.loadGroup().then () ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n onError = (error) ->\n if error.status == 403\n #If we have an LTI context, we may not want to redirect on 403, we may want to collect payment information,\n #validate group user and try again; let caller handle in fail callback\n if !LtiService.paymentRequired\n $window.location.href = Packs.iKnowRoutes.v3_signin_path()\n else\n $scope.deferred.reject(error)\n else\n $scope.deferred.reject(error)\n\n switch $scope.contextType\n when \"set\"\n SetsResource.get id: $scope.contextId, (success) ->\n $scope.context = success.response\n $scope.deferred.resolve($scope.context)\n , onError\n when \"series\"\n SeriesResource.get id: $scope.contextId, (success) ->\n $scope.context = success.response\n $scope.deferred.resolve($scope.context)\n , onError\n when \"courses\"\n V3CoursesResource.get id: $scope.contextId, (success) ->\n $scope.context =\n module_type: \"courses\"\n id: $scope.contextId\n name: success.data.attributes.name\n $scope.deferred.resolve($scope.context)\n , onError\n else\n $scope.context =\n name: \"Study All\"\n module_type: \"study_all\"\n $scope.deferred.resolve($scope.context)\n\n $scope.deferred.promise\n\n hasOverride: (override) ->\n $scope.context && ($scope.context.overrides || {})[override]\n\n dataContextId = $location.search().context_id\n dataContextType = $location.search().context_type\n\n if dataContextId && dataContextType\n $scope.setContext(dataContextType, dataContextId)\n else if $routeParams.setId\n $scope.setContext(\"set\", $routeParams.setId)\n else if $routeParams.seriesId\n $scope.setContext(\"series\", $routeParams.seriesId)\n else if $routeParams.contextType == \"courses\"\n $scope.setContext(\"courses\", $routeParams.contextId)\n else\n $scope.setContext(\"study_all\", null)\n\n $scope\n])\n","siteNavigationApp.service('CourseContextService', ['$rootScope', '$routeParams', '$q', 'DebugHelper', 'SiteNavigationService', 'V3CoursesResource', 'V3ModelHelper', ($rootScope, $routeParams, $q, DebugHelper, SiteNavigationService, V3CoursesResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n DebugHelper.register(\"CourseContextService\", $scope)\n\n _.assignIn $scope,\n course: null\n deferred: null\n\n getCourseId: ->\n return $routeParams.course_id || $routeParams.id || -1 # TODO maybe use courseId everywhere?\n\n initialize: (checkForRefresh) ->\n # if we already had a course loaded from before but then we're switching to another one\n if $scope.course && $scope.course?.id?.toString() != $scope.getCourseId()\n $scope.resetCourse()\n\n # if some other page marked the service dirty because it modified assignments/users counts\n if checkForRefresh && $scope.refreshRequired\n $scope.resetCourse()\n\n $scope.fetchCourse().then ->\n if !$scope.course\n # TODO how to deal with this error?\n return\n SiteNavigationService.setContext($scope.course, 'course')\n\n resetCourse: ->\n $scope.course = null\n $scope.deferred = null\n\n # call this function after modifying something that could affect\n # the counts attached to a course object (i.e. assignments, users)\n markRefreshRequired: ->\n $scope.refreshRequired = true\n $scope.childRefreshRequired = true\n\n removeChildRefreshRequired: ->\n $scope.childRefreshRequired = false\n\n fetchCourse: ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n $scope.refreshRequired = false\n\n V3CoursesResource.get\n id: $scope.getCourseId()\n include: \"partner,partner.image,partner.partner-library\"\n , (success) ->\n $scope.course = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.course)\n , $scope.deferred.reject\n $scope.deferred.promise\n\n $scope\n])\n","siteNavigationApp.service('myPartnersService', ['$q', '$rootScope', '$location', '$routeParams', 'localStorageService', 'V3PartnersResource', 'UserManager', 'DebugHelper', 'productService', 'CourseContextService', 'moduleContextService', 'MyProfileResource', 'V3ModelHelper', ($q, $rootScope, $location, $routeParams, localStorageService, V3PartnersResource, UserManager, DebugHelper, productService, CourseContextService, moduleContextService, MyProfileResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"myPartnersService\", $scope)\n\n VERSION = \"1.0.9\"\n\n fetchFromLocalStorage = (key) ->\n try\n $scope[key] = angular.fromJson(localStorageService.get(key))\n catch\n localStorageService.remove(key)\n null\n\n persistInLocalStorage = (key) ->\n try\n localStorageService.set(key, angular.toJson($scope[key]))\n catch\n null\n\n finishInitialization = () ->\n $scope.myPartnersServiceInitialized = VERSION\n persistInLocalStorage(\"myPartnersServiceInitialized\")\n\n switch productService.currentProduct\n when 'pro_admin', 'groups'\n $scope.chooseProduct('pro')\n when 'courses'\n unless $scope.currentProductPartner\n if $scope.currentProPartner\n $scope.chooseProduct('pro')\n else\n $scope.chooseProduct('plus')\n\n $scope.deferred.resolve($scope.currentProductPartner)\n \n _.assignIn $scope,\n currentProPartner: null\n currentPlusPartner: null\n currentProductPartner: null\n deferredLoadPartner: {}\n\n isBBC: ->\n _.includes([831, 2574, 4493], $scope.currentProPartnerId)\n\n chooseProduct: (product) ->\n $scope.currentProductPartner = switch product\n when \"pro\"\n $scope.currentProPartner\n when \"plus\"\n $scope.currentPlusPartner\n else\n null\n\n daysUntilExpiration: (partner) ->\n if partner?.attributes[\"expires-at\"]\n today = moment().startOf('day')\n expiresAt = moment(partner.attributes[\"expires-at\"])\n expiresInDays = expiresAt.diff(today, 'days')\n expiresInDays\n else\n null\n\n chooseProductPartner: (partner) ->\n $scope.currentProductPartner = partner\n $rootScope.$broadcast \"siteNav:updateUI\"\n if partner?.attributes['account-type'] == 'plus'\n $scope.choosePlusPartner(partner)\n else\n $scope.chooseProPartner(partner)\n\n chooseProPartner: (partner) ->\n $scope.currentProPartner = partner\n $scope.currentProPartnerId = partner.id\n persistInLocalStorage(\"currentProPartnerId\")\n\n choosePlusPartner: (partner) ->\n $scope.currentPlusPartner = partner\n\n showPartnerModuleDetails: ->\n $scope.currentProductPartner && productService.currentProduct == 'create'\n\n getPartnerIdFromRoute: () ->\n # URL in form of /partners/xxx\n if $routeParams.hasOwnProperty(\"partner_id\") && !window.location.href.match(\"learning_library\")\n return $routeParams.partner_id\n # URL in form of /?partnerId=xxx\n else if $routeParams.hasOwnProperty(\"partnerId\") && $routeParams.partnerId\n return $routeParams.partnerId\n return false\n\n # loads previous partner if id was in localStorage\n loadPreviousProPartner: () ->\n unless $scope.deferredLoadPrevious\n $scope.deferredLoadPrevious = $q.defer()\n $scope.myPartnersServiceInitialized = fetchFromLocalStorage(\"myPartnersServiceInitialized\")\n # only load if our front end is up to date and we have a saved currentProPartnerId in localStorage\n if $scope.myPartnersServiceInitialized == VERSION && fetchFromLocalStorage(\"currentProPartnerId\")\n $scope.loadPartner($scope.currentProPartnerId).then (partner) ->\n $scope.chooseProPartner(partner) if partner\n $scope.deferredLoadPrevious.resolve()\n else\n $scope.deferredLoadPrevious.resolve()\n $scope.deferredLoadPrevious.promise\n\n # returns partner already loaded in $scope or UserManager\n loadedMatchingPartner: (partnerId) ->\n if partnerId == UserManager.currentUser?.relationships?[\"pro-partner\"].data?.id || partnerId == UserManager.currentUser?.relationships?[\"pro-partner\"].data?.slug\n return UserManager.currentUser.relationships[\"pro-partner\"].data\n else if partnerId == UserManager.currentUser?.relationships?[\"plus-partner\"].data?.id || partnerId == UserManager.currentUser?.relationships?[\"plus-partner\"].data?.slug\n return UserManager.currentUser.relationships[\"plus-partner\"].data\n else if partnerId == $scope.currentProPartner?.id || partnerId == $scope.currentProPartner?.attributes?.slug\n return $scope.currentProPartner\n else if partnerId == $scope.currentPlusPartner?.id || partnerId == $scope.currentPlusPartner?.attributes?.slug\n return $scope.currentPlusPartner\n return false\n\n loadPartner: (partnerId) ->\n unless $scope.deferredLoadPartner[partnerId]\n $scope.deferredLoadPartner[partnerId] = $q.defer()\n #use matching partner if already loaded\n loadedPartner = $scope.loadedMatchingPartner(partnerId)\n if loadedPartner\n $scope.deferredLoadPartner[partnerId].resolve(loadedPartner)\n else\n #otherwise, fetch partner\n V3PartnersResource.get\n id: partnerId,\n include: \"image,account.plan,partner-library,parent,partner-metadata\"\n , (success) ->\n partner = V3ModelHelper.parse(success)\n # only choose as product if they have a role on partner\n if partner.meta?[\"role\"]\n $scope.deferredLoadPartner[partnerId].resolve(partner)\n else\n $scope.deferredLoadPartner[partnerId].resolve()\n , (failure) ->\n $scope.deferredLoadPartner[partnerId].resolve()\n $scope.deferredLoadPartner[partnerId].promise\n\n loadCourse: () ->\n CourseContextService.initialize().then (success) ->\n if CourseContextService.course?.meta?[\"can-edit\"]\n $scope.loadPartner(CourseContextService.course.relationships.partner.data.id).then (partner) ->\n $scope.chooseProductPartner(partner)\n finishInitialization()\n else\n $scope.chooseProduct('basic')\n finishInitialization()\n\n loadModule: () ->\n moduleContextService.initialize().then (module) ->\n if module?.permissions.editable\n if module.partner_id?\n # load create as partner\n $scope.loadPartner(module.partner_id).then (partner) ->\n $scope.chooseProductPartner(partner)\n finishInitialization()\n else\n # load personal create\n $scope.chooseProduct('create')\n finishInitialization()\n # user manually loaded create on a set they dont have permission for\n else\n finishInitialization()\n\n loadDefault: (user) ->\n if user\n # set their primary partner unless they already have a different pro partner loaded from localStorage\n if user.relationships[\"pro-partner\"].data && !$scope.currentProPartner\n $scope.chooseProPartner(user.relationships[\"pro-partner\"].data, user)\n # on first load, default to partner context in create\n if productService.currentProduct == 'create' && ($scope.currentPlusPartner || $scope.currentProPartner)\n $scope.chooseProductPartner($scope.currentPlusPartner || $scope.currentProPartner)\n finishInitialization()\n else\n finishInitialization()\n\n initialize: ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n UserManager.loadUser().then (user) ->\n if user\n productService.initialize().then () ->\n # users only have one plus-partner, always set this\n if user.relationships?[\"plus-partner\"].data\n $scope.choosePlusPartner(user.relationships[\"plus-partner\"].data)\n # always load this as a backup, so it will appear in upper left dropdown\n $scope.loadPreviousProPartner().then () ->\n partnerId = $scope.getPartnerIdFromRoute()\n # URL has partner Id\n if partnerId\n $scope.loadPartner(partnerId).then (partner) ->\n $scope.chooseProductPartner(partner)\n finishInitialization()\n # URL in form of /courses/yyy\n else if $routeParams.course_id\n $scope.loadCourse()\n # URL is /create/sets/zzz or /create/series/zzz\n else if ($routeParams.hasOwnProperty(\"set_id\") || $routeParams.hasOwnProperty(\"series_id\")) && _.includes($location.path(), \"create\")\n $scope.loadModule()\n #we specifically passed in no partner, choose basic\n else if $routeParams.hasOwnProperty(\"partnerId\")\n $scope.chooseProduct('basic')\n finishInitialization()\n else\n $scope.loadDefault(user)\n else\n $scope.deferred.resolve({})\n\n $scope.deferred.promise\n\n # PAGINATION LOGIC BELOW\n paginatedDeferred: {}\n\n # Hit v3 endpoint. Should really be in its own v3 $scope, but uses the same helpers + thinking\n # at the point we migrate everything over to this we can move it and kill the v2 $scope.\n getPaginatedPartners: (page_number, order_by, query)-> #use an options hash\n page_number = page_number || 1\n if ($scope.paginationOrder != order_by || $scope.paginationQuery != query)\n $scope.paginatedDeferred = {}\n $scope.paginationOrder = order_by\n $scope.paginationQuery = query\n\n unless $scope.paginatedDeferred[page_number]\n $scope.paginatedDeferred[page_number] = $q.defer()\n\n UserManager.loadUser().then (user) ->\n if user\n V3PartnersResource.my_partners\n \"page[number]\": page_number,\n sort: order_by,\n query: query,\n include: \"image\",\n \"filter[exclude_expired]\": 1\n , (result) ->\n $scope.paginated_partners = V3ModelHelper.parse(result)\n if $scope.paginated_partners.length == 0 && !$scope.currentPlusPartner\n $scope.chooseProduct('basic')\n $scope.paginatedDeferred[page_number].resolve(result) #not good enough to resolve with result.data -- need result.links in controller as well\n else\n $scope.chooseProduct('basic')\n $scope.paginatedDeferred[page_number].resolve([])\n\n $scope.paginatedDeferred[page_number].promise\n\n $scope\n])\n","siteNavigationApp.service('productService', ['$rootScope', 'DebugHelper', '$q', ($rootScope, DebugHelper, $q) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"productService\", $scope)\n\n DEFAULT_PRODUCT = \"learn\"\n\n tryResolve = () ->\n if $scope.currentProduct && $scope.deferred && !$scope.resolved\n $scope.deferred.resolve($scope.currentProduct)\n $scope.resolved = true\n\n _.assignIn $scope,\n setCurrentProduct: (product) ->\n $scope.currentProduct = product || DEFAULT_PRODUCT\n tryResolve()\n\n initialize: () ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n tryResolve()\n\n $scope.deferred.promise\n\n $scope\n])\n","siteNavigationApp.factory(\"SiteNavigationService\", ['$rootScope', '$routeParams', 'DebugHelper', ($rootScope, $routeParams, DebugHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"SiteNavigationService\", $scope)\n\n _.assignIn $scope,\n context: null\n context_type: null\n subcontext_type: null\n product: null\n\n # Learn, create, or courses\n setProduct: (product) ->\n $scope.product = product\n\n setCourseId: (courseId) ->\n $scope.lastCourseContext = $scope.context\n $scope.courseId = courseId\n\n setContext: (context, context_type, subcontext_type = null) ->\n $scope.context = context\n # Clear the course if we change context\n if $scope.lastCourseContext != context\n $scope.setCourseId(null)\n $scope.context_type = context_type\n $scope.subcontext_type = subcontext_type\n $rootScope.$broadcast \"siteNav:updateUI\"\n\n isLearn: () ->\n $scope.product == 'learn'\n\n isCreate: () ->\n $scope.product == 'create'\n\n reset: () ->\n $scope.context = null\n $scope.context_type = null\n $scope.subcontext_type = null\n\n isV4Embed: () ->\n sameOrigin = false\n try\n sameOrigin = process.env.RAILS_ENV == 'development' || window.parent.location.host == window.location.host;\n catch e\n sameOrigin = false\n !!$routeParams.isV4Embed || (sameOrigin && window.parent.location.pathname.split('/')[1] == 'app')\n])\n","import UserCookie, { setCookie } from 'javascripts/v2/modules/core/user-cookie-helper'\n\nsiteNavigationApp.factory(\"UserManager\", ['$rootScope', '$q', '$cookies', '$analytics', '$timeout', 'localStorageService', 'DebugHelper', 'Keepalive', 'MyProfileResource', 'V3ModelHelper', 'ModalService','$window', 'V3SessionResource', 'V3DeloitteAutoLogInResource', 'UsersResource', 'AmplitudeService', ($rootScope, $q, $cookies, $analytics, $timeout, localStorageService, DebugHelper, Keepalive, MyProfileResource, V3ModelHelper, ModalService, $window, V3SessionResource, V3DeloitteAutoLogInResource, UsersResource, AmplitudeService) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"UserManager\", $scope)\n\n tryClearLocalStorage = ->\n try\n localStorageService.clearAll(\"UserManager\")\n catch\n null\n\n _.assignIn $scope,\n # Tries to load the current user, return a promise for either the user or false when logged out\n currentUser:\n initialized: false\n\n loadDeloitteUser: (type) ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n if type == 'courses'\n V3DeloitteAutoLogInResource.courses {}\n , (success) ->\n $scope.currentUser = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.currentUser)\n else if type == \"learn\"\n V3DeloitteAutoLogInResource.learn {}\n , (success) ->\n $scope.currentUser = V3ModelHelper.parse(success)\n $scope.deferred.resolve($scope.currentUser)\n $scope.deferred.promise\n\n signOutClicked: ($event) ->\n $event.preventDefault()\n $scope.signOut()\n\n signOut: () ->\n V3SessionResource.destroy {}\n , (success) ->\n $scope.resetUser()\n $window.location.href = Packs.iKnowRoutes.v3_signin_path()\n , (failure) ->\n console.error(\"User Sign Out fails\")\n\n isAdmin: ->\n $scope.currentUser?.meta?[\"is-admin\"]\n\n isCeregoInternal: ->\n $scope.currentUser?.relationships?['primary-partner']?.data?.id == 21\n\n showPrototype: ->\n $scope.isCeregoInternal()|| process.env.RAILS_ENV == 'development'\n\n isNewNav: ->\n $scope.currentUser.relationships?[\"primary-partner\"]?.data?.attributes?[\"partner-settings\"]?[\"show-new-nav\"]\n\n getRole: (user) ->\n partner = user.relationships[\"primary-partner\"]\n\n if user.meta[\"is-admin\"]\n \"site admin\"\n else if partner?.data?.meta?.role == \"admin\"\n \"partner admin\"\n else if partner?.data\n partner.data?.meta?.role || \"course learner\"\n else\n \"organic learner\"\n\n getSegmentation: (user) ->\n partner = user.relationships[\"primary-partner\"]\n {\n stage: partner?.data?.attributes?[\"stage\"]\n is_paid: partner?.data?.attributes?[\"is-paid\"]\n segment: partner?.data?.attributes?[\"segment\"]\n vertical: partner?.data?.attributes?[\"vertical\"]\n is_mooc: partner?.data?.attributes?[\"is-mooc\"]\n is_courseware: partner?.data?.attributes?[\"is-courseware\"]\n size: partner?.data?.attributes?[\"size\"]\n learn_version: partner?.data?.attributes?[\"partner-settings\"]?[\"learn-version\"]\n is_new_nav: partner?.data?.attributes?[\"partner-settings\"]?[\"show-new-nav\"],\n\n }\n\n addHotJar: () ->\n node = document.createElement('script')\n node.innerHTML = \"(function(h,o,t,j,a,r){\n h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};\n h._hjSettings={hjid:1480379,hjsv:6};\n a=o.getElementsByTagName(\\'head\\')[0];\n r=o.createElement(\\'script\\');r.async=1;\n r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;\n a.appendChild(r);\n })(window,document,\\'https://static.hotjar.com/c/hotjar-\\',\\'.js?sv=\\');\"\n node.type = 'text/javascript'\n node.async = true\n node.charset = 'utf-8'\n document.getElementsByTagName('head')[0].appendChild(node)\n\n node.type = 'text/javascript'\n node.async = true\n node.charset = 'utf-8'\n document.getElementsByTagName('head')[0].appendChild(node)\n\n pingSegment: (partner_id, segmentation, role, user) ->\n # Send information to Segment about v4 users only\n if segmentation.learn_version == 4 && !_.includes(process.env.RAILS_ENV, 'govcloud')\n\n integrations = {\n 'Hubspot': false # Hubspot shall not receive anything from angular anymore. React events are sufficient for now.\n }\n\n traits = {\n 'partner': partner_id,\n 'stage': segmentation.stage,\n 'created_at': user.attributes['created-at'],\n 'primary_partner_role': role,\n 'locale': user.attributes.locale,\n 'learn_app_version': segmentation.learn_version,\n 'name': user.attributes.name,\n 'email': user.attributes.email,\n 'is_new_nav': segmentation.is_new_nav\n\n }\n\n window.analytics.identify(user.id, traits, { 'integrations': integrations } )\n window.analytics.page({ 'userId': user.id }, { 'integrations': integrations})\n\n trackSegment: (event_name, attributes) ->\n if $scope.getSegmentation($scope.currentUser).learn_version == 4 && !_.includes(process.env.RAILS_ENV, 'govcloud')\n integrations = {\n 'Hubspot': false # Hubspot shall not receive anything from angular anymore. React events are sufficient for now.\n }\n window.analytics.track(event_name, attributes, { 'integrations': integrations })\n\n pingAmplitude: (partner_id, stage, created_at, role, locale, learn_version) ->\n identify = new amplitude?.Identify()\n .set('partner', partner_id)\n .set('stage', stage)\n .set('created_at', created_at)\n .set('primary_partner_role', role)\n .set('locale', locale)\n .set('learn_app_version', learn_version)\n AmplitudeService.identify(identify)\n\n loadUser: (unauthenticatedRedirect) ->\n unless $scope.deferred\n $scope.deferred = $q.defer()\n\n date = new Date\n setCookie(\"timezone_offset\", date.getTimezoneOffset())\n\n MyProfileResource.get include: \"user_partner_member_ids,user_partner_member_ids.partner,user_partner_member_ids.partner.image,emails,image,primary-partner.image,pro-partner.image,plus-partner.image,plus-partner.account.plan,visible-libraries,visible-libraries.partner\"\n , (success) ->\n $scope.currentUser = V3ModelHelper.parse(success)\n\n # Transition existing sessions by forcing a Keepalive and the creation of a _cerego_user cookie if one doesn't exist\n cookie = new UserCookie($cookies)\n Keepalive.ping() unless cookie.sessionExpiresAt\n\n partner = $scope.currentUser.relationships['primary-partner']\n partner_id = partner?.data?.id || 0\n segmentation = $scope.getSegmentation($scope.currentUser)\n role = $scope.getRole($scope.currentUser)\n\n $timeout ->\n # setUsername needs to be in a delayed callback\n # see: angulartics/angulartics-google-analytics#18\n if _.includes(process.env.RAILS_ENV, 'govcloud')\n $analytics.setUsername($scope.currentUser.attributes.username)\n else\n AmplitudeService.setUserId($scope.currentUser.id)\n $analytics.setUsername($scope.currentUser.id)\n $scope.pingSegment(partner_id, segmentation, role, $scope.currentUser)\n\n $analytics.setUserProperties(dimension1: partner_id, dimension2: segmentation.stage, dimension3: role)\n $scope.pingAmplitude(partner_id, segmentation.state, $scope.currentUser.attributes['created-at'], role, $scope.currentUser.attributes.locale, segmentation.learn_version)\n\n if segmentation.stage == 'Free Trial'\n $scope.addHotJar()\n onV3Dashboard = $window.location.pathname == Packs.iKnowRoutes.v3_dashboard_path()\n onSetEdit = $window.location.pathname.match(/edit\\/sets\\/\\d*/) != null\n\n if localStorageService.get(\"UserManager::userId\")?.toString() != $scope.currentUser.id?.toString()\n tryClearLocalStorage()\n localStorageService.set(\"UserManager::userId\", $scope.currentUser.id)\n\n amplitudeSessionId = amplitude?.getInstance()?._sessionId\n if amplitudeSessionId && localStorageService.get(\"UserManager::amplitudeSessionId\")?.toString() != amplitudeSessionId.toString()\n localStorageService.set(\"UserManager::amplitudeSessionId\", amplitudeSessionId)\n AmplitudeService.logEvent('new_session')\n $scope.currentUser.initialized = true\n $scope.deferred.resolve($scope.currentUser)\n if window.zE && _.isFunction(zE.hide) && $scope.currentUser.relationships[\"primary-partner\"].data?.slug == 'biblemesh'\n zE.hide()\n\n , (error) ->\n if error.status == 401\n tryClearLocalStorage()\n $scope.currentUser.initialized = true\n if unauthenticatedRedirect\n $window.location.href = Packs.iKnowRoutes.v3_signin_path()\n $scope.deferred.resolve(false)\n else\n $scope.deferred.reject(error)\n\n $scope.deferred.promise\n\n isCAISUser: ->\n partner = $scope.currentUser?.relationships?[\"primary-partner\"];\n partner?.data?.id == 7106 || partner?.data?.attributes?[\"parent-id\"] == 7106\n\n resetUser: ->\n $scope.deferred = null\n $scope.loadUser()\n\n featureFlagSiteAdminOnly: (callback) ->\n $scope.loadUser().then ->\n callback() if $scope.isAdmin()\n\n updatePrimaryPartner: (partnerId) ->\n UsersResource.save({ id: $scope.currentUser.id }, { primary_partner_id: partnerId }).$promise\n\n $scope\n])\n","var map = {\n\t\"./site-navigation-controller.js\": 309,\n\t\"./site-navigation-controller.js.coffee\": 309,\n\t\"./top-navigation-controller.js\": 310,\n\t\"./top-navigation-controller.js.coffee\": 310\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 690;","var map = {\n\t\"./partner-switcher-modal.js\": 311,\n\t\"./partner-switcher-modal.js.coffee\": 311,\n\t\"./user-profile-edit-modal.js\": 312,\n\t\"./user-profile-edit-modal.js.coffee\": 312\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 691;","window.signupApp = angular.module(\"cerego.signup\", [\n \"cerego.common\"\n])\n\n# replace these with explicit import\nreq = require.context('./signup/resources', false, /\\.js$/)\nreq.keys().forEach(req)\nreq = require.context('./signup/controllers', false, /\\.js$/)\nreq.keys().forEach(req)\n","var map = {\n\t\"./pro_pilot_offer_resource.js\": 694\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 693;","signupApp.factory('ProPilotOffersResource', ['$resource', ($resource) ->\n $resource \"\", {},\n get:\n method: 'GET'\n isArray: false\n url: APIRoutes.v3_pro_pilot_offer_path(\":id\")\n params:\n id: \"@id\"\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_pro_pilot_offer_path(\":id\")\n params:\n id: \"@id\"\n])\n","var map = {\n\t\"./upgrade-pro-controller.js\": 696\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 695;","signupApp.controller('upgradeProCtrl', ['$scope', '$routeParams', '$filter', '$window', 'UserManager', 'V3PartnersResource', 'ProPilotOffersResource', 'StripeService', 'myPartnersService', 'V3ModelHelper', ($scope, $routeParams, $filter, $window, UserManager, V3PartnersResource, ProPilotOffersResource, StripeService, myPartnersService, V3ModelHelper) ->\n window.debug = window.debug || {}\n window.debug[\"upgradeProCtrl\"] = $scope\n\n _.assignIn $scope,\n loading: true\n stateUI: {}\n\n selectPlan: (plan) ->\n $scope.currentPlan = plan\n\n stripeHandler: ->\n stripeOptions =\n email: UserManager.currentUser.attributes.email\n panelLabel: $filter('translate')('js.upgrade.pro.pay')\n name: $filter('translate')('js.upgrade.pro.name')\n description: $filter('translate')('js.upgrade.pro.description')\n amount: $scope.cost\n\n StripeService.configureHandler(stripeOptions).then (token) ->\n ProPilotOffersResource.update\n id: $routeParams.offer_token\n token: token.id\n email: token.email\n , (success) ->\n V3PartnersResource.get id: success.data.attributes['partner-id']\n , (success) ->\n myPartnersService.chooseProductPartner(V3ModelHelper.parse(success))\n # need to hard reload here to switch to pro\n $window.location.href = Packs.iKnowRoutes.v3_courses_path()\n\n myPartnersService.initialize().then () ->\n ProPilotOffersResource.get id: $routeParams.offer_token\n , (success) ->\n $scope.pilotOffer = success.data\n $scope.stateUI.customCopy = $scope.pilotOffer.attributes['custom-copy'] || \"\"\n $scope.stateUI.partnerName = $scope.pilotOffer.attributes['partner-name']\n $scope.cost = $scope.pilotOffer.attributes['cost']\n $scope.loading = false\n , (failure) ->\n $window.location.href = \"/404\"\n])\n","window.workloadCalculatorApp = angular.module(\"cerego.workloadCalculator\", [\n \"cerego.common\"\n])\n\nrequire('./workload-calculator/directives/workload-review-visual.js')\nrequire('./workload-calculator/workload-calculator-controller.js')\n\n","workloadCalculatorApp.directive('workloadReviewVisual', [->\n restrict: 'E'\n\n scope:\n data: \"=\"\n yLabel: \"@\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"workload_svg\")\n\n controller: ['$scope', 'DebugHelper', ($scope, DebugHelper) ->\n DebugHelper.register(\"workloadReviewVisual\", $scope)\n\n _.assignIn $scope, {\n updateSVG: ->\n data = _.map _.values($scope.data), (tick, i) ->\n stackY = 0\n _.map [\"5\",\"4\",\"3\",\"2\",\"1\",\"b\",\"n\"], (level) ->\n level: level\n x: i\n y: tick[level] || 0\n stackY: (stackY += (tick[level] || 0))\n\n m = data.length\n return if m < 1\n n = data[0].length\n\n layout = d3.layout.stack()\n layers = layout(data)\n\n yStackMax = d3.max layers, (layer) ->\n d3.sum(_.map(layer,\"y\"))\n\n margin =\n top: 20\n right: 10\n bottom: 60\n left: 60\n\n width = $scope.element.width() - margin.left - margin.right\n height = $scope.element.height() - margin.top - margin.bottom\n\n $scope.xScale = d3.scale.ordinal()\n .domain(d3.range(m))\n .rangeRoundBands([0, width], .1)\n\n $scope.yScale = d3.scale.linear()\n .domain([0, yStackMax])\n .range([height, 0])\n\n colorScale =\n n: \"#333333\"\n b: \"#ffffff\"\n 1: \"#2294f2\"\n 2: \"#9347BE\"\n 3: \"#e73e79\"\n 4: \"#EEB100\"\n 5: \"#7ab72d\"\n\n strokeScale =\n n: \"#ffffff\"\n b: \"#ffffff\"\n 1: \"#2294f2\"\n 2: \"#9347BE\"\n 3: \"#e73e79\"\n 4: \"#EEB100\"\n 5: \"#7ab72d\"\n\n numTicks = Math.max(3, Math.round($scope.xScale.rangeExtent()[1] / 40))\n\n xAxis = d3.svg.axis()\n .scale($scope.xScale)\n .tickValues(_.range(0, m, Math.round(m / numTicks)))\n .tickSize(5)\n .tickPadding(6)\n .orient(\"bottom\")\n\n yAxis = d3.svg.axis()\n .scale($scope.yScale)\n .ticks(10)\n .tickSize(5)\n .tickPadding(6)\n .orient(\"left\")\n\n yGrid = d3.svg.axis()\n .scale($scope.yScale)\n .ticks(10)\n .tickSize(- width, 0, 0)\n .tickPadding(6)\n .tickFormat(\"\")\n .orient(\"left\")\n\n $scope.svg.selectAll(\".axis.x\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + (height + margin.top) + \")\")\n .call(xAxis)\n\n $scope.svg.selectAll(\".axis.y\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .call(yAxis)\n\n\n $scope.svg.selectAll(\".grid.y\")\n .attr(\"stroke-dasharray\", \"5,5\")\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n .call(yGrid)\n\n $scope.svg.selectAll(\".axisLabel.x\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"transform\", \"translate(\" + (margin.left + width / 2) + \",\" + (height + margin.top + 40) + \")\")\n\n $scope.svg.selectAll(\".axisLabel.y text\").text($scope.yLabel)\n\n $scope.svg.selectAll(\".axisLabel.y\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"transform\", \"translate(20,\" + (margin.top + height / 2) + \")rotate(-90)\")\n\n container = $scope.svg.selectAll(\".chart\").attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\")\n layer = container.selectAll(\".layer\").data(layers, (d,i) -> i)\n\n layer.enter()\n .append(\"g\")\n .attr(\"class\", \"layer\")\n\n rect = layer.selectAll(\"rect\").data((d) ->\n d\n , (d) ->\n d.level + \"\" + d.x\n )\n\n rect.enter().append(\"rect\")\n\n rect.attr(\"x\", (d) -> $scope.xScale(d.x))\n .attr(\"y\", (d) -> $scope.yScale(d.stackY))\n .attr(\"width\", $scope.xScale.rangeBand())\n .attr(\"height\", (d) -> $scope.yScale(d.stackY - d.y) - $scope.yScale(d.stackY))\n .style(\"fill\", (d) -> colorScale[d.level])\n .style(\"stroke\", (d) -> strokeScale[d.level])\n .style(\"stroke-width\", 1)\n\n rect.exit().remove()\n layer.exit().remove()\n }\n ]\n\n link: ($scope, element, attrs) ->\n $scope.element = element\n $scope.svg = d3.select(element.find(\"svg\")[0])\n\n $scope.$watch \"data\", (newVal, oldVal) ->\n $scope.updateSVG()\n , true\n])\n","workloadCalculatorApp.controller('workloadCalculatorCtrl', ['$scope', '$timeout', ($scope, $timeout) ->\n window.debug = window.debug || {}\n window.debug[\"workloadCalculatorCtrl\"] = $scope\n\n dt = 1 # numDays\n\n minStudyPerItem = 1.0 / 3\n\n _.assignIn $scope, \n maxDays: 1000\n itemsEligible: {} # date indexed integers\n averageIntervals: {} # date indexed floats\n itemsAtLevel: {} # date indexed objects\n schedule: [] # items\n\n initialItems: 30 # # of facets in level = 0 at time = 0\n initialItemFrequencyWeeks: 1\n initialItemDurationWeeks: 4\n initialInterval: .25 # 6 hours\n\n minimumInterval: 4.5 / 24.0\n targetRetention: 0.85 # Retention/Activation at time of review\n targetLevel: 2.5 # target Cerego level\n ticksToTarget: 0\n\n incorrectFactors: [.25]\n correctFactors: [1.1, 1.9, 1.9, 2.75, 1.5, 2.25, 2.25, 3.25]\n\n levels: [\n name: \"n\"\n interval: 0.0\n numeric: 0.0\n ,\n name: \"b\"\n interval: 1.0 / 3.0\n numeric: 0.3\n ,\n name: \"1\"\n interval: 1\n numeric: 1.0\n ,\n name: \"2\"\n interval: 5\n numeric: 2.0\n ,\n name: \"3\"\n interval: 21\n numeric: 3.0\n ,\n name: \"4\"\n interval: 3*30\n numeric: 4.0\n ,\n name: \"5\"\n interval: 9*30\n numeric: 5.0\n ]\n\n timeFor: (ticks) ->\n date = new Date()\n new Date(date.getTime() + ticks * dt * 24 * 60 * 60 * 1000)\n\n addNewItem: (schedule, tick) ->\n schedule.push\n interval: $scope.initialInterval\n reviewTick: tick + ($scope.initialInterval / dt)\n\n range: (n) ->\n _.range(n)\n\n mode: \"student\"\n\n madlibMinutes: 30\n madlibItems: 180\n madlibWeeks: 8\n\n planNewItems: ->\n newItems = if $scope.planWeeks($scope.madlibMinutes / minStudyPerItem / 2.4) >= 7\n $scope.madlibMinutes / minStudyPerItem / 2.4\n else if $scope.planWeeks($scope.madlibMinutes / minStudyPerItem / 2) >= 4\n $scope.madlibMinutes / minStudyPerItem / 2\n else if $scope.planWeeks($scope.madlibMinutes / minStudyPerItem / 1.6) >= 2\n $scope.madlibMinutes / minStudyPerItem / 1.6\n else\n $scope.madlibMinutes || 0\n Math.round(Math.min(newItems, $scope.madlibItems))\n\n planWeeks: (newItems) ->\n if _.isUndefined(newItems)\n newItems = $scope.planNewItems()\n Math.ceil($scope.madlibItems / newItems)\n\n planRetentionMinutes: ->\n validDays = Math.max(0, $scope.itemsEligible.length - 7*$scope.initialItemDurationWeeks)\n sum = _.reduce _.last($scope.itemsEligible, validDays), (outerSum, tick) ->\n outerSum + _.reduce _.values(tick), (innerSum, i) ->\n innerSum + i\n , 0\n , 0\n average = Math.round(sum / validDays) # double our estimate cause why not\n if _.isNaN(average)\n 1\n else\n Math.max(1, average)\n\n planRetentionWeeks: ->\n weeks = Math.round(($scope.itemsEligible.length - 7*$scope.initialItemDurationWeeks) / 7)\n if _.isNaN(weeks)\n 1\n else\n weeks\n\n runSimulation: ->\n schedule = []\n averageIntervals = {}\n itemsEligible = {}\n cumItemsAtLevel = {}\n itemsAtLevel = {}\n\n levelFor = (interval) ->\n _.reduceRight $scope.levels, (bestLevel, level)->\n bestLevel || (interval >= level.interval && level.name)\n , 0\n\n initialItems = if _.isString($scope.initialItems) then parseInt($scope.initialItems) else $scope.initialItems\n initialItemFrequencyWeeks = if _.isString($scope.initialItemFrequencyWeeks) then parseInt($scope.initialItemFrequencyWeeks) else $scope.initialItemFrequencyWeeks\n initialItemDurationWeeks = if _.isString($scope.initialItemDurationWeeks) then parseInt($scope.initialItemDurationWeeks) else $scope.initialItemDurationWeeks\n\n maxDays = if $scope.mode == 'student' then $scope.maxDays else parseInt($scope.madlibWeeks) * 7\n\n for tick in $scope.range(maxDays / dt)\n # Populate initial items\n ticksPerWeek = 7 / dt\n if ((tick % (initialItemFrequencyWeeks * ticksPerWeek)) == 0) && (tick < initialItemDurationWeeks * ticksPerWeek)\n n = Math.min($scope.madlibItems - schedule.length, initialItems)\n _.times n, ->\n $scope.addNewItem(schedule, tick)\n\n # Select eligble items\n items = _.filter schedule, (item) ->\n item.reviewTick <= tick\n\n itemsEligible[tick] = _.countBy items, (item) ->\n levelFor(item.interval)\n\n study = (item, factor) ->\n item.interval *= factor\n item.interval = Math.max($scope.minimumInterval, item.interval)\n item.reviewTick = tick + (item.interval / dt)\n\n # studyItems\n for item in items\n if Math.random() <= $scope.targetRetention\n study(item, _.sample($scope.correctFactors))\n else\n study(item, _.sample($scope.incorrectFactors))\n\n averageIntervals[tick] = _.reduce(schedule, (memo, item) ->\n memo + item.interval\n , 0) * 1.0 / schedule.length\n\n itemsAtLevel[tick] = _.countBy schedule, (item) ->\n levelFor(item.interval)\n cumItemsAtLevel[tick] = {}\n for level in $scope.levels\n items = _.filter schedule, (item) ->\n item.interval >= level.interval\n cumItemsAtLevel[tick][level.name] = items.length\n\n $scope.ticksToTarget = tick\n sum = _.reduce $scope.levels, (sum, level) ->\n sum += cumItemsAtLevel[tick][level.name] * level.numeric\n , 0.0\n\n if sum > schedule.length * $scope.targetLevel\n break\n\n $scope.schedule = schedule\n $scope.averageIntervals = averageIntervals\n $scope.itemsEligible = _.map itemsEligible, (d) ->\n for level, val of d\n d[level] = Math.round(val * minStudyPerItem)\n d\n $scope.itemsAtLevel = itemsAtLevel\n $scope.cumItemsAtLevel = cumItemsAtLevel\n\n debouncedRun = ->\n if $scope.simulationRunning\n $timeout debouncedRun, 100\n else\n $scope.simulationRunning = true\n $scope.runSimulation()\n $timeout ->\n $scope.simulationRunning = false\n , 100\n\n $timeout ->\n debouncedRun()\n\n $scope.$watch \"initialItems\", (newVal, oldVal) ->\n debouncedRun() if newVal != oldVal\n\n $scope.$watch \"targetLevel\", (newVal, oldVal) ->\n debouncedRun() if newVal != oldVal\n\n $scope.$watch \"initialItemFrequencyWeeks\", (newVal, oldVal) ->\n debouncedRun() if newVal != oldVal\n\n $scope.$watch \"initialItemDurationWeeks\", (newVal, oldVal) ->\n debouncedRun() if newVal != oldVal\n\n $scope.$watch \"mode\", (newVal, oldVal) ->\n debouncedRun() if newVal != oldVal\n\n $scope.$watch \"madlibMinutes\", (newVal, oldVal) ->\n $scope.initialItems = $scope.planNewItems()\n $scope.initialItemFrequencyWeeks = 1\n $scope.initialItemDurationWeeks = $scope.planWeeks()\n\n $scope.$watch \"madlibItems\", (newVal, oldVal) ->\n $scope.initialItems = $scope.planNewItems()\n $scope.initialItemFrequencyWeeks = 1\n $scope.initialItemDurationWeeks = $scope.planWeeks()\n\n $scope.$watch \"madlibWeeks\", (newVal, oldVal) ->\n $scope.initialItems = $scope.planNewItems()\n $scope.initialItemFrequencyWeeks = 1\n $scope.initialItemDurationWeeks = $scope.planWeeks()\n debouncedRun() if newVal != oldVal\n])\n","ceregoLayoutApp.factory('V3LtiConfirmationMailerResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_lti_confirmation_mailer_path()\n params:\n email_address: \"@email_address\"\n])\n","ceregoLayoutApp.factory(\"EditPartnersService\", ['$rootScope', '$routeParams', '$q', 'DebugHelper', 'V3PartnersResource', 'V3ModelHelper', ($rootScope, $routeParams, $q, DebugHelper, V3PartnersResource, V3ModelHelper) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"EditPartnersService\", $scope)\n\n _.assignIn $scope,\n partner: {}\n deferred: {}\n\n loadPartner: ->\n if !$scope.deferred.partner\n deferred = $q.defer()\n $scope.deferred.partner = deferred\n V3PartnersResource.get\n id: $routeParams.partner_id\n include: 'logo_image,ios_brand_image,icon_image,image,background_image,partner_domains,partner_library,partner_library.image'\n , (success) ->\n $scope.partner = V3ModelHelper.parse(success)\n\n deferred.resolve($scope.partner)\n , deferred.reject\n\n $scope.deferred.partner.promise\n\n updatePartner: (params, doSuccess, doError) ->\n params.include = 'logo_image,ios_brand_image,icon_image,image,background_image,partner_domains,partner_library,partner_library.image'\n V3PartnersResource.update id: $scope.partner.id\n , params\n , (success) ->\n $scope.partner = V3ModelHelper.parse(success)\n doSuccess(success)\n , doError\n\n $scope.$on \"$routeChangeStart\", (current, routes) ->\n if $scope.partner.attributes.slug != routes.params.partnerId && $scope.partner.id != parseInt(routes.params.partnerId)\n $scope.deferred.partner = null\n\n $scope\n])\n","ceregoLayoutApp.directive('cgModuleDropDown', [->\n scope:\n module: \"=cgModuleDropDown\"\n\n templateUrl: Packs.iKnowRoutes.v2_template_path(\"module_drop_down\")\n\n controller: ['$window', '$scope', '$location', '$timeout', 'DebugHelper', 'myPartnersService', 'ModalService', 'SetsResource', 'SeriesResource', 'MySetsResource', 'MySeriesResource', 'V3SetClonesResource', 'SetExportService', 'UserManager', 'SiteNavigationService', 'setLearnURLService', ($window, $scope, $location, $timeout, DebugHelper, myPartnersService, ModalService, SetsResource, SeriesResource, MySetsResource, MySeriesResource, V3SetClonesResource, SetExportService, UserManager, SiteNavigationService, setLearnURLService) ->\n DebugHelper.register(\"cgModuleDropDown\", $scope)\n\n _.assignIn $scope, {\n editModulePath: \"\"\n export_status: 'not_started'\n dirty: false\n routes: Packs.iKnowRoutes\n SiteNavigationService: SiteNavigationService\n ModalService: ModalService\n stateUI :\n showExport: false\n showDelete: false\n showCreatorTool: false\n showAddToSeries: false\n cloneOptions: {}\n\n getPreviewUrl: ->\n setLearnURLService.getUrl({id: $scope.module.id, version: $scope.module.learn_version}, { studyType: 'all', preview: true, debug: true, returnURL: ($window.location.pathname) })\n\n shouldShowCreatorTools: ->\n return false unless SiteNavigationService.isCreate()\n if $scope.module.partner_id\n $scope.partner && ($scope.module.partner_id == $scope.partner.id)\n else\n $scope.module.permissions && $scope.module.permissions.editable\n\n\n onCloneSetSuccess: (success) ->\n console.log(success)\n setClone = success\n if setClone.status == \"completed\"\n $window.location.href = Packs.iKnowRoutes.v2_create_set_path(success.target_set_id)\n else\n $timeout ->\n V3SetClonesResource.get id: success.id\n , $scope.onCloneSetSuccess\n , (error) ->\n console.error error\n , 2000\n\n cloneSet: (cloneGoalType) ->\n params = {}\n if cloneGoalType\n params.goal_type = cloneGoalType\n if $scope.partner\n params.partner_id = $scope.partner.id\n\n $scope.$emit \"moduleDropDown:remixProcessing\"\n\n V3SetClonesResource.create set_id: $scope.module.id\n , data: { attributes: params }\n , $scope.onCloneSetSuccess\n , (error) ->\n $scope.$emit \"moduleDropDown:processingError\"\n console.error error\n\n isScorm: ->\n !!$scope.module.scorm_package_id\n\n shouldShowAddToSeries: ->\n $scope.partner?.meta['can-manage-content'] && $scope.module.module_type == 'set' && !$scope.isScorm() && $scope.isV3()\n\n isV3: ->\n $scope.partner?.attributes?['partner-settings']['learn-version'] < 4\n\n getCloneOptions: ->\n if $scope.partner?.meta[\"can-manage-content\"] && $scope.module.module_type == 'set'\n {\n 'showCloneOption': !$scope.isScorm(),\n 'showCloneAsAssessmentOption': $scope.module.goal_type == 'set' && !$scope.isScorm() && !$scope.isV3(),\n 'showCloneAsSetOption': $scope.module.goal_type == 'assessment',\n }\n\n shouldShowDelete: ->\n if $scope.module.partner_id\n ($scope.partner?.id == $scope.module.partner_id) && ($scope.partner?.meta[\"can-manage-content\"] || $scope.module.permissions.is_owner)\n else\n $scope.module.permissions && $scope.module.permissions.is_owner\n\n shouldShowExport: ->\n $scope.module.partner_id && $scope.module.module_type == 'set' && !$scope.isScorm() &&\n ($scope.partner?.id == $scope.module.partner_id) && $scope.partner?.meta[\"can-manage-content\"] && $scope.module.learn_version < 4\n\n resource: ->\n if $scope.module.module_type == \"set\"\n MySetsResource\n else\n MySeriesResource\n\n deleteModule: ->\n module_type = $scope.module.module_type\n\n if $window.confirm(\"Are you sure you want to delete this \" + module_type + \"?\")\n resource = if module_type == 'set' then SetsResource else SeriesResource\n resource.delete { id: $scope.module.id }\n , {}\n , (result) ->\n $scope.$emit \"moduleDropDown:delete\", $scope.module.id, $scope.module.module_type\n , (error) ->\n console.error error\n\n exportCSV: ->\n $scope.export_status = 'pending'\n SetExportService.export($scope.module).then (setExport) ->\n $scope.setExport = setExport\n $scope.export_status = 'completed'\n\n addToSchedule: ->\n $scope.module.settings.library_subscription_state = 0\n $scope.resource().addToSchedule id: $scope.module.id\n\n removeFromSchedule: ->\n $scope.module.settings.library_subscription_state = 1\n $scope.resource().removeFromSchedule id: $scope.module.id\n\n addToLibrary: ->\n $scope.module.settings.library_subscription_state = 1\n $scope.resource().addToLibrary id: $scope.module.id\n\n removeFromLibrary: ->\n $scope.module.settings.library_subscription_state = 2\n $scope.resource().removeFromLibrary id: $scope.module.id\n\n initializeStateUI: ->\n $scope.stateUI.showCreatorTool = $scope.shouldShowCreatorTools()\n $scope.stateUI.showExport = $scope.shouldShowExport()\n $scope.stateUI.showDelete = $scope.shouldShowDelete()\n $scope.stateUI.showAddToSeries = $scope.shouldShowAddToSeries()\n $scope.stateUI.cloneOptions = $scope.getCloneOptions()\n\n initializeModuleAttributes: () ->\n if !$scope.module.settings\n $scope.module.settings = {}\n if $scope.module.id\n $scope.initializeStateUI()\n if $scope.module.module_type == \"set\"\n $scope.editModulePath = Packs.iKnowRoutes.edit_details_v2_create_set_path($scope.module.id)\n else\n $scope.editModulePath = Packs.iKnowRoutes.edit_details_v2_create_series_path($scope.module.id)\n }\n\n $scope.$watch \"module\", ->\n if $scope.module\n UserManager.loadUser().then (user) ->\n $scope.currentUser = user\n myPartnersService.initialize().then () ->\n $scope.partner = myPartnersService.currentProductPartner\n $scope.initializeModuleAttributes()\n\n # This is admin only, but safe since API will also run a permission check\n $scope.$watch \"module.is_featured\", (newVal, oldVal) ->\n if !_.isUndefined(oldVal) && newVal != oldVal\n $scope.dirty = true\n resource = if $scope.module.module_type == 'set' then SetsResource else SeriesResource\n resource.update { id: $scope.module.id }\n , _.pick($scope.module, [\"is_featured\"])\n , (success) ->\n $scope.dirty = false\n ]\n])\n","ceregoLayoutApp.service(\"SetExportService\", ['$rootScope', '$q', '$timeout', 'DebugHelper', 'SetExportsResource', ($rootScope, $q, $timeout, DebugHelper, SetExportsResource) ->\n $scope = $rootScope.$new()\n\n DebugHelper.register(\"SetExportService\", $scope)\n\n _.assignIn $scope,\n export: (module) ->\n deferred = $q.defer()\n\n onSuccess = (success) ->\n setExport = success.response\n if setExport.job_finished_at\n deferred.resolve(setExport)\n else\n deferred.notify(setExport)\n $timeout ->\n SetExportsResource.get\n id: setExport.id\n , onSuccess\n , deferred.reject\n , 1000\n\n SetExportsResource.create\n set_id: module.id\n , onSuccess\n , deferred.reject\n\n deferred.promise\n\n $scope\n])\n","# Hack to get inclusion working with ng-repeat in Angular 1.3+\n# see: https://github.com/angular/angular.js/issues/7874#issuecomment-47647528\nceregoLayoutApp.directive('inject', [->\n link: ($scope, $element, $attrs, controller, $transclude) ->\n innerScope = $scope.$new()\n $transclude innerScope, (clone) ->\n $element.empty()\n $element.append(clone)\n $element.on '$destroy', ->\n innerScope.$destroy()\n])\n\nceregoLayoutApp.directive('cgTileable', ['$window', ($window) ->\n restrict: \"E\"\n transclude: true\n\n scope:\n collection: \"=\"\n offset: \"&\"\n padding: \"=\"\n tileSize: \"=?\"\n\n template: ''\n\n controller: ['$scope', '$filter', 'DebugHelper', 'ModulePermissionsHelper', ($scope, $filter, DebugHelper, ModulePermissionsHelper) ->\n DebugHelper.register(\"cgTileable\", $scope)\n\n _.assignIn $scope, {\n parent: $scope.$parent\n batchSize: 3\n maxBatches: 4\n batchWidth: 0\n elementSize: $scope.tileSize || 300\n offsetPadding: $scope.padding || 20\n routes: Packs.iKnowRoutes\n\n ModulePermissionsHelper: ModulePermissionsHelper\n\n rows: ->\n $filter(\"inBatches\")($scope.collection, $scope.batchSize)\n\n rowTiles: ($index) ->\n _.take(_.drop($scope.collection, $index*$scope.batchSize), $scope.batchSize)\n\n computeBatchSize: ->\n containerSize = angular.element($window).innerWidth() - $scope.offset() - $scope.offsetPadding\n $scope.batchSize = Math.min(Math.max(Math.floor(containerSize / ($scope.elementSize + $scope.offsetPadding)), 1), $scope.maxBatches)\n $scope.batchWidth = ($scope.elementSize + $scope.offsetPadding) * $scope.batchSize - $scope.offsetPadding\n if $scope.currentTile && !_.isUndefined($scope.vIndex)\n index = _.indexOf($scope.collection, $scope.currentTile)\n $scope.vIndex = Math.floor(index / $scope.batchSize)\n $scope.hIndex = index % $scope.batchSize\n\n angular.element(document).trigger(\"tileable:batchResize\", $scope.batchWidth)\n\n isCurrentTile: (tile) ->\n tile == $scope.currentTile && !_.isUndefined($scope.vIndex)\n\n arrowStyle: ->\n if _.isUndefined($scope.hIndex)\n return\n offset = $scope.hIndex * ($scope.elementSize + $scope.offsetPadding) + $scope.elementSize/2 - 15\n { left: offset + \"px\"}\n\n selectTile: (tile, vIndex, hIndex) ->\n if !tile || $scope.isCurrentTile(tile)\n $scope.vIndex = undefined\n else\n $scope.vIndex = vIndex\n $scope.hIndex = hIndex\n $scope.currentTile = tile\n\n getEditText: (tile) ->\n if tile.goal_type == 'assessment'\n $filter('translate')(\"js.old.sets.index.edit_assessment\")\n else if tile.goal_type == 'survey'\n $filter('translate')(\"js.old.sets.index.edit_survey\")\n else\n $filter('translate')(\"js.old.sets.index.edit_set\")\n\n getTileIconClass: (tile) ->\n if tile.goal_type == 'assessment'\n 'assessment'\n else if tile.goal_type == 'survey'\n 'fa fa-poll-h'\n else\n tile.module_type.toString()\n\n\n shouldShowDetails: ($index) ->\n if _.isUndefined($scope.vIndex)\n return\n $index == $scope.vIndex\n\n }\n ]\n\n link: ($scope, element, attrs) ->\n $scope.computeBatchSize()\n\n angular.element($window).bind 'resize', ->\n $scope.$apply ->\n $scope.computeBatchSize()\n\n $scope.$on '$destroy', ->\n angular.element($window).unbind('resize')\n\n $scope.$watch(\"collection\", ->\n if $scope.collection.length == 0\n $scope.selectTile(undefined)\n )\n])\n","var map = {\n\t\"./head-controller.js\": 313,\n\t\"./head-controller.js.coffee\": 313,\n\t\"./layout-controller.js\": 314,\n\t\"./layout-controller.js.coffee\": 314,\n\t\"./lti-confirm-controller.js\": 315,\n\t\"./lti-confirm-controller.js.coffee\": 315,\n\t\"./partner_notification_controller.js\": 316,\n\t\"./partner_notification_controller.js.coffee\": 316,\n\t\"./static-controller.js\": 317,\n\t\"./static-controller.js.coffee\": 317,\n\t\"./subscriptions-controller.js\": 318,\n\t\"./subscriptions-controller.js.coffee\": 318\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 705;","ceregoCommon.factory('V3SessionResource', ['$resource', ($resource) ->\n $resource \"\", {},\n create:\n method: 'POST'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n update:\n method: 'PUT'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n destroy:\n method: 'DELETE'\n isArray: false\n url: APIRoutes.v3_sessions_path()\n])\n"],"sourceRoot":""}