{"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","getSegmentation","getRole","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","role","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","pingAmplitude","created_at","identify","amplitude","Identify","unauthenticatedRedirect","getTimezoneOffset","ping","segmentation","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-9bdc5af2c3b59fc4ff80.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/v4/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\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\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\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":""}