{"version":3,"sources":["/source/index.config.js","scripts/app.js"],"names":["angular","module","call","this","controller","$scope","topic","ContentService","getSubject","subjectId","then","subject","modalService","$state","tenant","QuestionTypes","TopicTypes","$filter","getTopics","allTopics","i","len","topics","length","id","push","questionTypes","topicTypes","sortableOptions","stop","event","ui","orderItem","item","sortable","model","saveTopic","newTopic","topicFormData","name","description","tags","next","unlock","topicType","LEARNING","questionType","virtualGoods","$watch","getQuestions","questions","type","usesAttributes","MULTICHOICE","AUDIO_RESPONSE","IMAGE_RESPONSE","attributes","index","indexOf","editTopic","copy","splice","selectTopic","console","log","archiveTopic","doArchive","archived","error","showModal","getQuestionAttributesSelected","questionText","questionAudio","questionImage","getOptionAttributesSelected","optionText","optionAudio","optionImage","getSubjects","subjects","saveSubject","newSubject","formData","code","editSubject","selectSubject","archiveSubject","question","saveQuestion","newQuestion","label","topicId","questionFormData","archiveOption","option","options","editQuestion","selectQuestion","archiveQuestion","content","importFileChange","ele","file","files","fr","FileReader","onload","e","json","string","target","result","JSON","parse","$apply","readAsText","importContent","res","exportContent","blob","stringify","Blob","saveAs","getTemplates","templates","getActivities","activities","acs","activity","found","j","len1","saveActivity","newActivity","activityFormData","templateId","xp","gc","vg","editActivity","selectActivity","archiveActivity","userDetails","TenantService","UserService","ProgressService","getContent","getAggregate","results","topicOverviews","overview","getQuestionAggregate","playerId","aggregate","completePercent","complete","total","revisionPercent","revision","attemptedPercent","attempted","status","ref","results1","search","searchFilter","tag","toLowerCase","selectTag","responseId","cogniss","$uibModal","getActivityResponse","activityResponse","listQuestionResponses","responses","response","showDuration","questionResponses","duration","getQuestionText","text","text1","showImageResponse","modal","modalScope","$new","open","templateUrl","scope","user","val","chartOptions","chart","height","donut","showLegend","showLabels","valueFormat","d3","format","margin","y","d","x","color","progress","subjectOverviews","showMastery","activityResponses","chartData","go","tenantRef","urlName","userId","team","userIds","members","k","len2","ref1","selectUser","teamId","order","orderReverse","limit","getUsers","users","VoucherService","editVoucher","saveVoucher","update","skip","count","currentPage","getVouchers","vouchers","voucher","config","bulk","bulkCreateVouchers","codes","close","isAssigned","consumed","consumedDate","createVoucher","selectVoucher","deleteVoucher","expiryOptions","showWeeks","assigned","autoCodes","random","alphaNum","toUpperCase","LeaderboardService","getLeaderboards","leaderboards","dateOptions","addTeam","multiplyer","leaderboardFormData","teams","deleteTeam","newLeaderboard","start","end","leaderboard","moment","toDate","saveLeaderboard","toISOString","editLeaderboard","selectLeaderboard","archiveLeaderboard","launchTopic","alert","activityId","UtilService","completeActivity","nextQuestion","questionIndex","getActivity","getTopic","date","localISOString","saveActivityResponse","activityComplete","completeDate","selectOption","questionResponse","questionId","activityResponseId","correct","answer","saveQuestionResponse","Analytics","submitUser","getInsightsUsers","addInsightsUser","addUser","Auth","isTenantAdmin","isAdmin","TeamService","getTeams","selectTeam","allSubjects","subjectList","_","clone","submitTeam","data","joinTeam","submitCode","getTenants","tenants","newTenant","filepath","saveTenant","editTenant","selectTenant","deleteTenant","doDelete","newTemplate","addType","saveTemplate","editTemplate","template","selectTemplate","archiveTemplate","onChangeType","removeType","directive","restrict","link","$interval","jsonString","wellFormed","error1","jsonForm","jsonInput","$setValidity","selectedOption","o","showCorrect","SURVEY","SCORED_SURVEY","showScore","addOption","updateSelectedOption","audio","image","score","deleteOption","TriggerTypes","trigger","types","hour","minute","updateDate","scheduleTypes","DURATION","TIME","DATE","minDate","Date","hours","toString","value","minutes","triggerTypes","oldType","SCHEDULED","scheduleType","startOf","add","ACTIVITY_RESPONSE","COMPLETE_ACTIVITY","QUESTION_RESPONSE","diff","m","offset","fromMidnight","utcOffset","utc","ResultTypes","resultTypes","updateSelectedQuestion","selectedQuestion","selectedTopic","CriteriaTypes","criteria","criteriaTypes","scoreMax","scoreMin","valueMin","valueMax","selectCount","selectAnswer","selectValue","selectScore","updateSelectedActivity","selectedActivity","$translate","current","topLevel","getUserDetails","details","showTenantInfo","$location","showError","token","initialised","redirect","split","password","state","reset","FacebookService","userName","email","register","pending","err","message","USERNAME","fbRegister","login","fbLogin","userNameOrEmail","forgot","service","$q","deferred","defer","logEventRequest","resolve","scriptData","reject","promise","join","day","min","month","pad","sec","tz","tzs","year","n","getTimezoneOffset","parseInt","Math","abs","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","questionAggregate","CacheService","userQuestion","userSubject","userTopic","key","getItem","addItem","filter","$sce","uploadId","cached","getUploadedUrl","url","trustAsResourceUrl","success","displayName","$stateful","FileUploader","accept","uploadUrl","uploader","onWhenAddingFileFailed","onAfterAddingFile","fileItem","getUploadUrl","uploadAll","onMessage","uploadData","onAfterAddingAll","addedFileItems","onBeforeUploadItem","onProgressItem","onProgressAll","onSuccessItem","headers","onErrorItem","onCancelItem","onCompleteItem","onCompleteAll","input","smallWords","replace","match","title","charAt","substr","getTenantByCode","doGetTenant","getTenantByUrlName","getDefaultTenant","insights","l","len3","len4","questionById","ref2","ref3","ref4","ref5","subjectById","templateById","topicById","getTemplate","member","getTeam","findTeam","addCode","leaveTeam","without","disbandTeam","noQuestionType","getUserActivityResponses","params","players","dateMin","getTime","dateMax","topicResponse","player","tenantCode","deleteUser","removeInsightsUser","getIsCurrentUser","max","pageLimit","displayPages","first","last","page","pages","lastPage","round","goPage","previous","showSidebar","$root","getNotes","playerIds","addNote","note","updateNote","addComment","comment","NotesService","NoteTypes","noteTypes","startDateOptions","endDateOptions","showAddNoteButton","notes","NOTE","saveNote","selectNote","commentText","saveComment","comments","$rootScope","body","footer","dismissLabel","onAccept","acceptLabel","backdrop","getLeaderboard","deleteLeaderboard","OptionsService","toggleSidebar","logout","home","lang","setLang","use","getFlag","pendingCount","factory","ezfb","authResponse","accessToken","deleteTemplate","deleteSubject","deleteTopic","getQuestion","deleteQuestion","query","deleteActivity","list","saveCallback","oldOrder","pre","gamesparksPreview","gamesparksKey","gamesparksSecret","bowser","$localStorage","$window","tenantShortcode","$timeout","messageDeferred","connected","init","authToken","gamesparks","onInit","onNonce","sessionId","GameSparks","gs","window","gsAuthToken","gsSessionId","nonce","CryptoJS","enc","Base64","HmacSHA256","accountDetailsRequest","_storeTokens","notify","initPreview","initLive","deviceAuthenticationRequest","deviceId","deviceModel","deviceName","deviceOS","deviceType","operatingSystem","version","navigator","platform","cb","request","playerDetails","sendWithData","facebookConnectRequest","onAuth","updateUserDetails","getUploadUrlRequest","getUploadedRequest","getAuthToken","getSessionId","toJson","eventKey","_cache","lifespan","expires","removeItem","cache","expired","isAfter","getBehaviors","behaviors","saveBehavior","behavior","BehaviorService","admin","doConfig","tenantAdmin","enabledTriggerTypes","enabledCriteriaTypes","enabledResultTypes","VIRTUAL_GOOD","NOTIFICATION","NEWS","concat","VOUCHER","COINS","XP","ADD_FRIEND","CREATE_TEAM","triggers","addTrigger","addResult","addCriteria","deleteTrigger","deleteCriteria","deleteResults","refresh","templateBehaviors","copyBehavior","selectedBehaviorTemplate","newBehavior","recurring","editBehavior","selectBehavior","archiveBehavior","AccessLevels","_redirectName","_redirectParams","redirectName","redirectParams","setRedirect","getUser","tenantDetails","authorize","access","stateParams","doCheck","unwatch","trackerByTenant","callback","s","g","r","a","q","arguments","createElement","getElementsByTagName","async","src","parentNode","insertBefore","document","ga","tracker","clientId","get","getTenantTracker","gaCode","trackPageview","path","trackEvent","category","action","nonInteraction","noSubject","selectedSubject","filterSubjects","selectActivityResponse","run","$log","fbAppId","html5Mode","appId","$on","toState","toParams","fromState","fromParams","checkAuth","checkConnected","checkTenant","continueNavigation","doLogout","fromAsync","preventDefault","toStateName","watcher","location","hash","scrollTo","$stateProvider","$urlRouterProvider","createScreen","route","controllerName","stateConfig","anon","upperFirst","abstract","$stateParams","teamAdmin","otherwise","constant","FILL_BLANKS","EQUATION","TEXT_RANGE","CATEGORISATION","TEMPLATE_INTERPRETED","PLACEMENT","PRACTICE","ASSESSMENT","PHONE_CALL","EMAIL","FOLLOW_UP","$logProvider","$translateProvider","$locationProvider","tagsInputConfigProvider","absUrl","href","debugEnabled","enabled","requireBase","useStaticFilesLoader","prefix","suffix","preferredLanguage","useSanitizeValueStrategy","useMissingTranslationHandlerLog","setDefaults","replaceSpacesWithDashes","h","f","lib","Base","extend","prototype","c","mixIn","hasOwnProperty","$super","apply","create","WordArray","words","sigBytes","b","clamp","ceil","slice","Hex","Latin1","String","fromCharCode","charCodeAt","Utf8","decodeURIComponent","escape","Error","unescape","encodeURIComponent","u","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","blockSize","_minBufferSize","_doProcessBlock","Hasher","cfg","_doReset","finalize","_doFinalize","_createHelper","_createHmacHelper","t","HMAC","algo","sqrt","pow","SHA256","_hash","p","floor","_hasher","_oKey","_iKey","_map","cleanup","webSocket","onclose","keepAlive","send","keepAliveId","setTimeout","getWebSocket","WebSocket","MozWebSocket","connect","socketUrl","onopen","onWebSocketOpen","onWebSocketClose","onerror","onWebSocketError","onmessage","onWebSocketMessage","lbUrl","errorCallback","closeEvent","openEvent","messageData","resultType","handshake","requestId","pendingRequests","messageCallback","hmac","nonceCallback","appSecret","toSend","@class","BrowserDetect","browser","os","OS","initCallback","closing","requestCounter","isInitialised","secret","onError","requestType","onResponse","requestString","searchString","dataBrowser","searchVersion","userAgent","appVersion","dataOS","dataString","dataProp","prop","versionSearchString","versionSearch","identity","subString","parseFloat","substring","vendor","opera","acceptChallengeRequest","challengeInstanceId","analyticsRequest","aroundMeLeaderboardRequest","friendIds","leaderboardShortCode","social","authenticationRequest","buyVirtualGoodsRequest","currencyType","quantity","shortCode","changeUserDetailsRequest","chatOnChallengeRequest","consumeVirtualGoodRequest","createChallengeRequest","accessType","challengeMessage","challengeShortCode","currency1Wager","currency2Wager","currency3Wager","currency4Wager","currency5Wager","currency6Wager","endTime","expiryTime","maxAttempts","maxPlayers","minPlayers","silent","startTime","usersToChallenge","declineChallengeRequest","dismissMessageRequest","messageId","endSessionRequest","findChallengeRequest","getChallengeRequest","getDownloadableRequest","getMessageRequest","getRunningTotalsRequest","googlePlayBuyGoodsRequest","currencyCode","signature","signedData","subUnitPrice","iOSBuyGoodsRequest","receipt","sandbox","joinChallengeRequest","leaderboardDataRequest","entryCount","listAchievementsRequest","listChallengeRequest","listChallengeTypeRequest","listGameFriendsRequest","listInviteFriendsRequest","listLeaderboardsRequest","listMessageRequest","listMessageSummaryRequest","listVirtualGoodsRequest","logChallengeEventRequest","pushRegistrationRequest","pushId","registrationRequest","sendFriendMessageRequest","socialLeaderboardDataRequest","twitterConnectRequest","accessSecret","windowsBuyGoodsRequest","withdrawChallengeRequest","$templateCache","put"],"mappings":"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","file":"scripts/app-83708bd847.js","sourcesContent":["(function() {\n angular.module('cogniss', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ngMessages', 'ngAria', 'ngResource', 'ui.router', 'ui.bootstrap', 'ui.sortable', 'angularFileUpload', 'jlareau.bowser', 'ngStorage', 'ezfb', 'nvd3', 'pascalprecht.translate', 'angularUtils.directives.dirPagination', 'ngTagsInput', 'ngFileUpload', 'colorpicker.module']);\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminTopicController', function($scope, topic, ContentService) {\n 'ngInject';\n $scope.topic = topic;\n return ContentService.getSubject(topic.subjectId).then(function(subject) {\n return $scope.subject = subject;\n });\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminTopicsController', function($scope, ContentService, modalService, $state, tenant, subject, QuestionTypes, TopicTypes, $filter) {\n 'ngInject';\n $scope.tenant = tenant;\n ContentService.getTopics($scope.tenant).then(function(allTopics) {\n var i, len, topic, topics;\n $scope.allTopics = allTopics;\n topics = [];\n for (i = 0, len = allTopics.length; i < len; i++) {\n topic = allTopics[i];\n if (topic.subjectId === subject.id) {\n topics.push(topic);\n }\n }\n topics = $filter('orderBy')(topics, \"order\");\n return $scope.topics = topics;\n });\n $scope.questionTypes = QuestionTypes;\n $scope.topicTypes = TopicTypes;\n $scope.sortableOptions = {\n stop: function(event, ui) {\n return ContentService.orderItem(ui.item.sortable.model, $scope.topics, function(topic) {\n return ContentService.saveTopic(topic).then(function(topic) {});\n });\n }\n };\n $scope.newTopic = function() {\n return $scope.topicFormData = {\n name: \"\",\n description: \"\",\n subjectId: subject.id,\n tags: [],\n next: null,\n unlock: false,\n topicType: TopicTypes.LEARNING,\n questionType: null,\n virtualGoods: []\n };\n };\n $scope.newTopic();\n $scope.$watch(\"topicFormData.id\", function(id) {\n if (id != null) {\n return ContentService.getQuestions(tenant, $scope.topicFormData.id).then(function(questions) {\n return $scope.questions = questions;\n });\n } else {\n return $scope.questions = [];\n }\n });\n $scope.$watch(\"topicFormData.questionType\", function(type) {\n var usesAttributes;\n usesAttributes = type === QuestionTypes.MULTICHOICE || type === QuestionTypes.AUDIO_RESPONSE || type === QuestionTypes.IMAGE_RESPONSE;\n if (usesAttributes && ($scope.topicFormData.attributes == null)) {\n return $scope.topicFormData.attributes = {};\n }\n });\n $scope.saveTopic = function() {\n var index;\n index = $scope.topics.indexOf($scope.editTopic);\n $scope.editTopic = angular.copy($scope.topicFormData);\n return ContentService.saveTopic($scope.topicFormData).then(function(topic) {\n if ($scope.editTopic.id == null) {\n $scope.topics.push(topic);\n $scope.editTopic = topic;\n } else {\n $scope.topics.splice(index, 1, topic);\n }\n return $scope.newTopic();\n });\n };\n $scope.selectTopic = function(topic) {\n console.log(\"select Topic\", topic);\n $scope.editTopic = topic;\n return $scope.topicFormData = angular.copy($scope.editTopic);\n };\n $scope.archiveTopic = function(topic) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.topics.indexOf(topic);\n topic.archived = true;\n ContentService.saveTopic(topic).then(function(topic) {\n return $scope.topics.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving topic\");\n });\n return $scope.newTopic();\n };\n return modalService.showModal(\"Confirm archiving Topic\", \"Are you sure you want to archive this topic?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n $scope.getQuestionAttributesSelected = function() {\n if ($scope.topicFormData.attributes == null) {\n return false;\n }\n if ($scope.topicFormData.attributes.questionText) {\n return false;\n }\n if ($scope.topicFormData.attributes.questionAudio) {\n return false;\n }\n if ($scope.topicFormData.attributes.questionImage) {\n return false;\n }\n return true;\n };\n return $scope.getOptionAttributesSelected = function() {\n if ($scope.topicFormData.attributes == null) {\n return false;\n }\n if ($scope.topicFormData.attributes.optionText) {\n return false;\n }\n if ($scope.topicFormData.attributes.optionAudio) {\n return false;\n }\n if ($scope.topicFormData.attributes.optionImage) {\n return false;\n }\n return true;\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminSubjectsController', function($scope, ContentService, modalService, $state, tenant, $filter) {\n 'ngInject';\n ContentService.getSubjects(tenant).then(function(subjects) {\n subjects = $filter('orderBy')(subjects, \"order\");\n return $scope.subjects = subjects;\n });\n $scope.sortableOptions = {\n stop: function(event, ui) {\n return ContentService.orderItem(ui.item.sortable.model, $scope.subjects, function(subject) {\n return ContentService.saveSubject(subject).then(function(subject) {});\n });\n }\n };\n $scope.newSubject = function() {\n $scope.formData = {\n tenant: tenant.code,\n name: \"\"\n };\n return $scope.editSubject = true;\n };\n $scope.newSubject();\n $scope.saveSubject = function() {\n var index;\n index = $scope.subjects.indexOf($scope.editSubject);\n $scope.editSubject = angular.copy($scope.formData);\n return ContentService.saveSubject($scope.formData).then(function(subject) {\n if ($scope.editSubject.id == null) {\n $scope.subjects.push(subject);\n $scope.editSubject = subject;\n } else {\n $scope.subjects.splice(index, 1, subject);\n }\n return $scope.newSubject();\n });\n };\n $scope.selectSubject = function(subject) {\n $scope.editSubject = subject;\n return $scope.formData = angular.copy($scope.editSubject);\n };\n return $scope.archiveSubject = function(subject) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.subjects.indexOf(subject);\n subject.archived = true;\n ContentService.saveSubject(subject).then(function(subject) {\n return $scope.subjects.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving subject\");\n });\n return $scope.newSubject();\n };\n return modalService.showModal(\"Confirm archiving Subject\", \"Are you sure you want to archive this subject?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminSubjectController', function($scope, subject) {\n 'ngInject';\n return $scope.subject = subject;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminQuestionsController', function($scope, ContentService, modalService, $state, tenant, topic, $filter) {\n 'ngInject';\n ContentService.getQuestions(tenant, topic.id).then(function(questions) {\n questions = $filter('orderBy')(questions, \"order\");\n return $scope.questions = questions;\n });\n $scope.sortableOptions = {\n stop: function(event, ui) {\n return ContentService.orderItem(ui.item.sortable.model, $scope.questions, function(question) {\n return ContentService.saveQuestion(question).then(function(question) {});\n });\n }\n };\n $scope.topic = topic;\n $scope.newQuestion = function() {\n var question;\n question = {\n label: \"\",\n topicId: topic.id,\n type: $scope.topic.questionType\n };\n return $scope.questionFormData = question;\n };\n $scope.archiveOption = function(option) {\n return $scope.questionFormData.options.splice($scope.questionFormData.options.indexOf(option), 1);\n };\n $scope.saveQuestion = function() {\n var index;\n if ($scope.questions != null) {\n index = $scope.questions.indexOf($scope.editQuestion);\n }\n $scope.editQuestion = angular.copy($scope.questionFormData);\n console.log(\"saving Question\", $scope.editQuestion);\n return ContentService.saveQuestion($scope.questionFormData).then(function(question) {\n console.log(\"response\", question);\n if ($scope.editQuestion.id == null) {\n $scope.questions.push(question);\n $scope.editQuestion = question;\n } else {\n $scope.questions.splice(index, 1, question);\n }\n return $scope.newQuestion();\n });\n };\n $scope.selectQuestion = function(question) {\n $scope.editQuestion = question;\n return $scope.questionFormData = angular.copy($scope.editQuestion);\n };\n $scope.archiveQuestion = function(question) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.questions.indexOf(question);\n question.archived = true;\n ContentService.saveQuestion(question).then(function(question) {\n return $scope.questions.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving question\");\n });\n return $scope.newQuestion();\n };\n return modalService.showModal(\"Confirm archiving Question\", \"Are you sure you want to archive this question?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n return $scope.newQuestion();\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminContentOverviewController', function($scope, ContentService, modalService, $state, tenant) {\n 'ngInject';\n var content;\n content = null;\n $scope.importFileChange = function(ele) {\n var file, files, fr;\n files = ele.files;\n file = files[0];\n fr = new FileReader;\n console.log(fr);\n fr.onload = function(e) {\n var json, string;\n string = e.target.result;\n try {\n json = JSON.parse(string);\n } catch (error) {\n e = error;\n console.log(\"error parsing json\", e);\n }\n $scope.content = json;\n $scope.$apply();\n console.log(json);\n return content = json;\n };\n return fr.readAsText(file);\n };\n $scope[\"import\"] = function() {\n return ContentService.importContent(tenant, content).then(function(res) {\n content = null;\n return modalService.showModal(\"Content imported\", \"Your content has successfully beein imported\", true, true);\n }, function() {\n return modalService.showModal(\"Content import error\", \"There was an error importing your content\", true, true);\n });\n };\n return $scope[\"export\"] = function() {\n return ContentService.exportContent(tenant).then(function(content) {\n var blob, json;\n json = JSON.stringify(content);\n blob = new Blob([json], {\n type: \"application/json\"\n });\n return saveAs(blob, \"export.json\");\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminActivitiesController', function($scope, ContentService, modalService, $state, tenant, subject, $filter) {\n 'ngInject';\n $scope.tenant = tenant;\n ContentService.getTopics($scope.tenant, subject.id).then(function(topics) {\n $scope.topics = topics;\n return ContentService.getTemplates().then(function(templates) {\n $scope.templates = templates;\n return ContentService.getActivities($scope.tenant).then(function(activities) {\n var acs, activity, found, i, j, len, len1, topic;\n acs = [];\n for (i = 0, len = activities.length; i < len; i++) {\n activity = activities[i];\n found = false;\n for (j = 0, len1 = topics.length; j < len1; j++) {\n topic = topics[j];\n if (topic.id === activity.topicId) {\n found = true;\n }\n }\n if (found) {\n acs.push(activity);\n }\n }\n activities = acs;\n activities = $filter('orderBy')(activities, \"order\");\n return $scope.activities = activities;\n });\n });\n });\n $scope.sortableOptions = {\n stop: function(event, ui) {\n return ContentService.orderItem(ui.item.sortable.model, $scope.activities, function(activity) {\n return ContentService.saveActivity(activity).then(function(activity) {});\n });\n }\n };\n $scope.newActivity = function() {\n return $scope.activityFormData = {\n name: \"\",\n topicId: \"\",\n templateId: \"\",\n xp: 0,\n gc: 0,\n vg: []\n };\n };\n $scope.saveActivity = function() {\n var index;\n index = $scope.activities.indexOf($scope.editActivity);\n $scope.editActivity = angular.copy($scope.activityFormData);\n return ContentService.saveActivity($scope.activityFormData).then(function(activity) {\n if ($scope.editActivity.id == null) {\n $scope.activities.push(activity);\n $scope.editActivity = activity;\n } else {\n $scope.activities.splice(index, 1, activity);\n }\n return $scope.newActivity();\n });\n };\n $scope.selectActivity = function(activity) {\n $scope.editActivity = activity;\n return $scope.activityFormData = angular.copy($scope.editActivity);\n };\n return $scope.archiveActivity = function(activity) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.activities.indexOf(activity);\n activity.archived = true;\n ContentService.saveActivity(activity).then(function(activity) {\n return $scope.activities.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving activity\");\n });\n return $scope.newActivity();\n };\n return modalService.showModal(\"Confirm archiving Activity\", \"Are you sure you want to archive this activity?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantUserSubjectController', function($scope, tenant, userDetails, subjectId, TenantService, UserService, ProgressService) {\n 'ngInject';\n $scope.tenant = tenant;\n TenantService.getContent(tenant).then(function(content) {\n var getAggregate, i, len, results, subject, subjects, topic;\n subjects = content.subjects;\n results = [];\n for (i = 0, len = subjects.length; i < len; i++) {\n subject = subjects[i];\n if (subject.id === subjectId) {\n $scope.subject = subject;\n $scope.topicOverviews = [];\n getAggregate = function(subject) {\n var overview;\n overview = {\n topic: topic\n };\n $scope.topicOverviews.push(overview);\n return ProgressService.getQuestionAggregate([userDetails.playerId], tenant, $scope.subject.id, topic.id).then(function(aggregate) {\n overview.completePercent = 100 * aggregate.complete / aggregate.total;\n overview.revisionPercent = 100 * aggregate.revision / aggregate.total;\n overview.attemptedPercent = 100 * aggregate.attempted / aggregate.total;\n overview.status = \"Not Yet Attempted\";\n if (aggregate.attempted > 0 || aggregate.revision > 0) {\n overview.status = \"In Progress\";\n }\n if (aggregate.complete === aggregate.total) {\n overview.status = \"Mastered\";\n }\n return overview.aggregate = aggregate;\n });\n };\n results.push((function() {\n var j, len1, ref, results1;\n ref = $scope.subject.topics;\n results1 = [];\n for (j = 0, len1 = ref.length; j < len1; j++) {\n topic = ref[j];\n results1.push(getAggregate(topic));\n }\n return results1;\n })());\n } else {\n results.push(void 0);\n }\n }\n return results;\n });\n $scope.search = \"\";\n $scope.searchFilter = function(overview) {\n var i, len, ref, tag, topic;\n topic = overview.topic;\n if ($scope.search === \"\") {\n return true;\n }\n if (topic.name.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {\n return true;\n }\n ref = topic.tags;\n for (i = 0, len = ref.length; i < len; i++) {\n tag = ref[i];\n if (tag.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {\n return true;\n }\n }\n return false;\n };\n $scope.selectTag = function(tag) {\n return $scope.search = tag;\n };\n return $scope.userDetails = userDetails;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantUserResponseController', function($scope, tenant, userDetails, ProgressService, responseId, cogniss, QuestionTypes, $uibModal) {\n 'ngInject';\n $scope.QuestionTypes = QuestionTypes;\n $scope.userDetails = userDetails;\n ProgressService.getActivityResponse(responseId).then(function(activityResponse) {\n $scope.activityResponse = activityResponse;\n return ProgressService.listQuestionResponses(null, responseId).then(function(responses) {\n var i, len, response, showDuration;\n $scope.questionResponses = responses;\n showDuration = false;\n for (i = 0, len = responses.length; i < len; i++) {\n response = responses[i];\n if (response.duration) {\n showDuration = true;\n }\n }\n return $scope.showDuration = showDuration;\n });\n });\n $scope.getQuestionText = function(question) {\n if (question.label != null) {\n return question.label;\n }\n if (question.text != null) {\n return question.text;\n }\n if (question.text1 != null) {\n return question.text1;\n }\n return \"\";\n };\n return $scope.showImageResponse = function(response) {\n var modal, modalScope;\n modalScope = $scope.$new();\n modalScope.response = response;\n return modal = $uibModal.open({\n templateUrl: \"app/screens/tenant/user/response/image-response-modal.html\",\n scope: modalScope\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantUserOverviewController', function($scope, tenant, userDetails, TenantService, $state, modalService, cogniss, ProgressService) {\n 'ngInject';\n $scope.$watch(function() {\n return cogniss.user;\n }, function(val) {\n return $scope.user = val;\n });\n $scope.userDetails = userDetails;\n $scope.chartOptions = {\n chart: {\n type: 'pieChart',\n height: 200,\n donut: true,\n showLegend: false,\n showLabels: false,\n valueFormat: d3.format(',.0f'),\n margin: 0,\n y: function(d) {\n return d.y;\n },\n x: function(d) {\n return d.x;\n },\n color: function(d) {\n return d.color;\n },\n duration: 500\n }\n };\n ProgressService.getQuestionAggregate([userDetails.playerId], tenant).then(function(progress) {\n return $scope.progress = progress;\n });\n TenantService.getContent(tenant).then(function(content) {\n var getAggregate, i, len, ref, results, subject;\n $scope.subjects = content.subjects;\n $scope.subjectOverviews = [];\n getAggregate = function(subject) {\n var overview;\n overview = {\n subject: subject\n };\n $scope.subjectOverviews.push(overview);\n return ProgressService.getQuestionAggregate([userDetails.playerId], tenant, subject.id).then(function(aggregate) {\n overview.showMastery = true;\n overview.activityResponses = aggregate.activityResponses;\n if (aggregate.total === 0) {\n overview.showMastery = false;\n }\n overview.chartData = [\n {\n x: \"Complete\",\n y: aggregate.complete,\n color: \"#23AE89\"\n }, {\n x: \"In revision\",\n y: aggregate.revision,\n color: \"#FFB61C\"\n }, {\n x: \"Attempted\",\n y: aggregate.attempted,\n color: \"#2EC1CC\"\n }, {\n x: \"Not yet attempted\",\n y: aggregate.total - aggregate.attempted - aggregate.revision - aggregate.complete,\n color: \"#f5f5f5\"\n }\n ];\n return overview.aggregate = aggregate;\n });\n };\n ref = $scope.subjects;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n subject = ref[i];\n results.push(getAggregate(subject));\n }\n return results;\n });\n return $scope.selectSubject = function(subject) {\n return $state.go(\"tenant.user.subject\", {\n tenantRef: tenant.urlName,\n userId: userDetails.playerId,\n subjectId: subject.id\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantTeamSubjectController', function($scope, tenant, team, subjectId, TenantService, ProgressService) {\n 'ngInject';\n var i, len, ref, user, userIds;\n $scope.tenant = tenant;\n $scope.team = team;\n userIds = [];\n ref = team.members;\n for (i = 0, len = ref.length; i < len; i++) {\n user = ref[i];\n userIds.push(user.id);\n }\n $scope.userIds = userIds;\n TenantService.getContent(tenant).then(function(content) {\n var getAggregate, j, len1, results, subject, subjects, topic;\n subjects = content.subjects;\n results = [];\n for (j = 0, len1 = subjects.length; j < len1; j++) {\n subject = subjects[j];\n if (subject.id === subjectId) {\n $scope.subject = subject;\n $scope.topicOverviews = [];\n getAggregate = function(topic) {\n var overview;\n overview = {\n topic: topic\n };\n $scope.topicOverviews.push(overview);\n return ProgressService.getQuestionAggregate(userIds, tenant, $scope.subject.id, topic.id).then(function(aggregate) {\n overview.completePercent = 100 * aggregate.complete / aggregate.total;\n overview.revisionPercent = 100 * aggregate.revision / aggregate.total;\n overview.attemptedPercent = 100 * aggregate.attempted / aggregate.total;\n overview.status = \"Not Yet Attempted\";\n if (aggregate.attempted > 0 || aggregate.revision > 0) {\n overview.status = \"In Progress\";\n }\n if (aggregate.complete === aggregate.total) {\n overview.status = \"Mastered\";\n }\n return overview.aggregate = aggregate;\n });\n };\n results.push((function() {\n var k, len2, ref1, results1;\n ref1 = $scope.subject.topics;\n results1 = [];\n for (k = 0, len2 = ref1.length; k < len2; k++) {\n topic = ref1[k];\n results1.push(getAggregate(topic));\n }\n return results1;\n })());\n } else {\n results.push(void 0);\n }\n }\n return results;\n });\n $scope.search = \"\";\n $scope.searchFilter = function(overview) {\n var j, len1, ref1, tag, topic;\n topic = overview.topic;\n if ($scope.search === \"\") {\n return true;\n }\n if (topic.name.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {\n return true;\n }\n ref1 = topic.tags;\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n tag = ref1[j];\n if (tag.toLowerCase().indexOf($scope.search.toLowerCase()) > -1) {\n return true;\n }\n }\n return false;\n };\n return $scope.selectTag = function(tag) {\n return $scope.search = tag;\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantTeamBehaviorsController', function($scope, team, tenant) {\n 'ngInject';\n $scope.team = team;\n return $scope.tenant = tenant;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantTeamOverviewController', function($scope, team, tenant, $state, ProgressService, TenantService) {\n 'ngInject';\n var i, len, ref, user, userIds;\n $scope.team = team;\n userIds = [];\n ref = team.members;\n for (i = 0, len = ref.length; i < len; i++) {\n user = ref[i];\n userIds.push(user.id);\n }\n $scope.userIds = userIds;\n $scope.tenant = tenant;\n $scope.selectUser = function(user) {\n console.log(\"select user\", user);\n return $state.go(\"tenant.user.overview\", {\n tenantRef: tenant.urlName,\n userId: user.id\n });\n };\n $scope.chartOptions = {\n chart: {\n type: 'pieChart',\n height: 200,\n donut: true,\n showLegend: false,\n showLabels: false,\n valueFormat: d3.format(',.0f'),\n margin: 0,\n y: function(d) {\n return d.y;\n },\n x: function(d) {\n return d.x;\n },\n color: function(d) {\n return d.color;\n },\n duration: 500\n }\n };\n ProgressService.getQuestionAggregate(userIds, tenant).then(function(progress) {\n return $scope.progress = progress;\n });\n TenantService.getContent(tenant).then(function(content) {\n var getAggregate, j, len1, ref1, results, subject;\n $scope.subjects = content.subjects;\n $scope.subjectOverviews = [];\n getAggregate = function(subject) {\n var overview;\n overview = {\n subject: subject\n };\n $scope.subjectOverviews.push(overview);\n return ProgressService.getQuestionAggregate(userIds, tenant, subject.id).then(function(aggregate) {\n overview.chartData = [\n {\n x: \"Complete\",\n y: aggregate.complete,\n color: \"#23AE89\"\n }, {\n x: \"In revision\",\n y: aggregate.revision,\n color: \"#FFB61C\"\n }, {\n x: \"Attempted\",\n y: aggregate.attempted,\n color: \"#2EC1CC\"\n }, {\n x: \"Not yet attempted\",\n y: aggregate.total - aggregate.attempted - aggregate.revision - aggregate.complete,\n color: \"#f5f5f5\"\n }\n ];\n return overview.aggregate = aggregate;\n });\n };\n ref1 = $scope.subjects;\n results = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n subject = ref1[j];\n results.push(getAggregate(subject));\n }\n return results;\n });\n return $scope.selectSubject = function(subject) {\n return $state.go(\"tenant.team.subject\", {\n tenantRef: tenant.urlName,\n teamId: team.id,\n subjectId: subject.id\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminUsersController', function($scope, cogniss, tenant, TenantService) {\n 'ngInject';\n $scope.order = 'created.$date';\n $scope.orderReverse = true;\n $scope.limit = 10;\n return TenantService.getUsers(tenant).then(function(users) {\n return $scope.users = users;\n });\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminVouchersController', function($scope, cogniss, tenant, VoucherService, $uibModal) {\n 'ngInject';\n var editVoucher, modal, saveVoucher, update;\n modal = null;\n $scope.order = 'created.$date';\n $scope.orderReverse = true;\n $scope.limit = 10;\n $scope.skip = 0;\n $scope.count = 0;\n $scope.currentPage = 0;\n $scope.$watch(\"currentPage\", function(val) {\n return update();\n });\n update = function() {\n var skip;\n skip = ($scope.currentPage - 1) * $scope.limit;\n return VoucherService.getVouchers(tenant, $scope.limit, skip).then(function(result) {\n $scope.vouchers = result.vouchers;\n return $scope.count = result.count;\n });\n };\n saveVoucher = function(voucher, config) {\n if (config.bulk) {\n return VoucherService.bulkCreateVouchers(voucher, config.count, config.codes).then(function() {\n update();\n return modal.close();\n });\n } else {\n if (!config.isAssigned) {\n voucher.playerId = null;\n voucher.consumed = false;\n }\n if (!voucher.consumed) {\n voucher.consumedDate = null;\n }\n return VoucherService.saveVoucher(voucher).then(function(voucher) {\n update();\n return modal.close();\n });\n }\n };\n $scope.createVoucher = function(bulk) {\n return editVoucher(bulk);\n };\n $scope.selectVoucher = function(voucher) {\n return editVoucher(null, angular.copy(voucher));\n };\n $scope.deleteVoucher = function(voucher) {\n return VoucherService.deleteVoucher(voucher).then(function(voucher) {\n update();\n return modal.close();\n });\n };\n return editVoucher = function(bulk, voucher) {\n var config, modalScope;\n modalScope = $scope.$new();\n modalScope.saveVoucher = saveVoucher;\n modalScope.expiryOptions = {\n showWeeks: false\n };\n config = {\n bulk: bulk\n };\n if (voucher != null) {\n config.assigned = voucher.playerId != null;\n config.isAssigned = config.assigned;\n config.consumed = voucher.consumed;\n } else {\n voucher = {\n tenant: tenant.code\n };\n if (bulk) {\n config.autoCodes = true;\n config.codes = [];\n config.count = 2;\n } else {\n voucher.code = random.alphaNum(6).toUpperCase();\n }\n }\n modalScope.voucher = voucher;\n modalScope.config = config;\n return modal = $uibModal.open({\n templateUrl: \"app/screens/tenant/admin/vouchers/vouchercreate-modal.html\",\n scope: modalScope\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminLeaderboardsController', function($scope, LeaderboardService, modalService, $state, tenant, $filter) {\n 'ngInject';\n $scope.tenant = tenant;\n LeaderboardService.getLeaderboards($scope.tenant).then(function(leaderboards) {\n return $scope.leaderboards = leaderboards;\n });\n $scope.dateOptions = {\n showWeeks: false\n };\n $scope.addTeam = function() {\n var team;\n team = {\n teamId: \"\",\n xp: 0,\n multiplyer: 1\n };\n return $scope.leaderboardFormData.teams.push(team);\n };\n $scope.deleteTeam = function(team) {\n return $scope.leaderboardFormData.teams.splice($scope.leaderboardFormData.teams.indexOf(team), 1);\n };\n $scope.newLeaderboard = function() {\n $scope.leaderboardFormData = {\n name: \"\",\n teams: [],\n start: null,\n end: null,\n tenant: tenant.code\n };\n return $scope.addTeam();\n };\n $scope.newLeaderboard();\n $scope.$watch(\"leaderboardFormData\", function(leaderboard) {\n $scope.start = moment(leaderboard.start).toDate();\n return $scope.end = moment(leaderboard.end).toDate();\n });\n $scope.saveLeaderboard = function() {\n var index;\n $scope.leaderboardFormData.start = $scope.start.toISOString();\n $scope.leaderboardFormData.end = $scope.end.toISOString();\n index = $scope.leaderboards.indexOf($scope.editLeaderboard);\n $scope.editLeaderboard = angular.copy($scope.leaderboardFormData);\n console.log(\"saving Leaderboard\", $scope.editLeaderboard);\n return LeaderboardService.saveLeaderboard($scope.leaderboardFormData).then(function(leaderboard) {\n if ($scope.editLeaderboard.id == null) {\n $scope.leaderboards.push(leaderboard);\n $scope.editLeaderboard = leaderboard;\n } else {\n $scope.leaderboards.splice(index, 1, leaderboard);\n }\n return $scope.newLeaderboard();\n });\n };\n $scope.selectLeaderboard = function(leaderboard) {\n console.log(\"select Leaderboard\", leaderboard);\n $scope.editLeaderboard = leaderboard;\n return $scope.leaderboardFormData = angular.copy($scope.editLeaderboard);\n };\n return $scope.archiveLeaderboard = function(leaderboard) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.leaderboards.indexOf(leaderboard);\n leaderboard.archived = true;\n LeaderboardService.saveLeaderboard(leaderboard).then(function(leaderboard) {\n return $scope.leaderboards.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving leaderboard\");\n });\n return $scope.newLeaderboard();\n };\n return modalService.showModal(\"Confirm archiving Leaderboard\", \"Are you sure you want to archive this leaderboard?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminBehaviorsController', function($scope, cogniss, tenant) {\n 'ngInject';\n return $scope.tenant = tenant;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantContentSubjectsController', function($scope, ContentService, $state, tenant, $filter) {\n 'ngInject';\n return ContentService.getSubjects(tenant).then(function(subjects) {\n subjects = $filter('orderBy')(subjects, \"order\");\n return $scope.subjects = subjects;\n });\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantContentSubjectController', function($scope, ContentService, $state, tenant, $filter, subjectId) {\n 'ngInject';\n ContentService.getSubject(subjectId).then(function(subject) {\n $scope.subject = subject;\n return ContentService.getTopics(tenant, subject.id).then(function(topics) {\n return $scope.topics = topics;\n });\n });\n return $scope.launchTopic = function(topic) {\n return ContentService.getActivities(tenant, null, topic).then(function(activities) {\n var activity;\n console.log(\"activities\", activities);\n if (activities.length === 0) {\n alert(\"no activities for this topic\");\n return;\n }\n activity = activities[0];\n return $state.go(\"tenant.content.activity\", {\n tenantRef: tenant.urlName,\n activityId: activity.id\n });\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantContentActivityController', function($scope, ContentService, tenant, activityId, ProgressService, UtilService, $filter) {\n 'ngInject';\n var completeActivity, nextQuestion, questionIndex;\n console.log(\"activityId\", activityId);\n questionIndex = 0;\n ContentService.getActivity(activityId).then(function(activity) {\n $scope.activity = activity;\n return ContentService.getTopic(activity.topicId).then(function(topic) {\n $scope.topic = topic;\n return ContentService.getQuestions(tenant, activity.topicId).then(function(questions) {\n var activityResponse;\n $scope.questions = $filter('orderBy')(questions, 'order');\n nextQuestion();\n activityResponse = {\n activityId: activity.id,\n date: UtilService.localISOString()\n };\n console.log(\"activityResponse\", activityResponse);\n return ProgressService.saveActivityResponse(activityResponse).then(function(response) {\n console.log(\"response\", response);\n return $scope.activityResponse = response;\n });\n });\n });\n });\n nextQuestion = function() {\n $scope.question = $scope.questions[questionIndex];\n console.log(\"$scope.question\", $scope.question);\n return questionIndex++;\n };\n completeActivity = function() {\n $scope.activityComplete = true;\n if (!$scope.activityResponse.complete) {\n $scope.activityResponse.complete = true;\n $scope.activityResponse.completeDate = UtilService.localISOString();\n console.log(\"activityResponse\", $scope.activityResponse);\n return ProgressService.saveActivityResponse($scope.activityResponse).then(function(response) {\n return console.log(\"response\", response);\n });\n }\n };\n return $scope.selectOption = function(option) {\n var questionResponse;\n questionResponse = {\n questionId: $scope.question.id,\n activityResponseId: $scope.activityResponse.id,\n date: UtilService.localISOString(),\n correct: true,\n answer: option.text\n };\n console.log(\"questionResponse\", questionResponse);\n ProgressService.saveQuestionResponse(questionResponse).then(function(response) {\n return console.log(\"response\", response);\n });\n if (questionIndex < $scope.questions.length) {\n return nextQuestion();\n } else {\n $scope.question = null;\n return completeActivity();\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantUsersController', function($scope, $uibModal, cogniss, tenant, modalService, $state, Analytics) {\n 'ngInject';\n var modal, submitUser;\n modal = null;\n $scope.tenant = tenant;\n $scope.$watch(function() {\n return cogniss.user;\n }, function(val) {\n return $scope.user = val;\n });\n cogniss.getInsightsUsers(tenant).then(function(users) {\n return $scope.users = users;\n });\n submitUser = function(code) {\n return cogniss.addInsightsUser(tenant, code).then(function(userId) {\n if ($scope.user.userId === userId) {\n modalService.showModal(\"Error\", \"User Exists\");\n } else {\n $scope.users.push(userId);\n }\n return modal.close();\n }, function(error) {\n return modalService.showModal(\"Error\", \"Invalid insights code\");\n });\n };\n $scope.selectUser = function(user) {\n return $state.go(\"tenant.user.overview\", {\n tenantRef: tenant.urlName,\n userId: user\n });\n };\n return $scope.addUser = function() {\n var modalScope;\n modalScope = $scope.$new();\n modalScope.code = \"\";\n modalScope.submitUser = submitUser;\n return modal = $uibModal.open({\n templateUrl: \"app/screens/tenant/users/add-user-modal.html\",\n scope: modalScope\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantUserController', function($scope, $uibModal, cogniss, tenant, userDetails, modalService, UserService, TenantService, $state, Auth) {\n 'ngInject';\n return $scope.$watch(function() {\n return cogniss.user;\n }, function(val) {\n $scope.user = val;\n return Auth.isTenantAdmin(tenant).then(function(isAdmin) {\n if (!isAdmin) {\n return cogniss.getInsightsUsers(tenant).then(function(users) {\n var found, i, len, user;\n found = false;\n if ($scope.user.userId === userDetails.playerId) {\n found = true;\n }\n for (i = 0, len = users.length; i < len; i++) {\n user = users[i];\n if (user === userDetails.playerId) {\n found = true;\n }\n }\n if (!found) {\n return $state.go(\"tenant.users\");\n }\n });\n }\n });\n });\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantTeamsController', function($scope, TeamService, $state) {\n 'ngInject';\n TeamService.getTeams().then(function(teams) {});\n $scope.$watch(function() {\n return TeamService.teams;\n }, function(teams) {\n return $scope.teams = teams;\n });\n return $scope.selectTeam = function(team) {\n return $state.go(\"tenant.team.overview\", {\n teamId: team.id\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantTeamController', function($scope) {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantSubjectsController', function($scope, cogniss, tenant, TenantService, $filter) {\n 'ngInject';\n TenantService.getContent(tenant).then(function(content) {\n var allSubjects;\n $scope.subjectList = _.clone(content.subjects);\n $scope.subjectList = $filter('orderBy')($scope.subjectList, 'order');\n allSubjects = {\n name: \"All subjects\"\n };\n $scope.subjectList.splice(0, 0, allSubjects);\n $scope.subject = allSubjects;\n $scope.topics = content.topics;\n return $scope.$watch(\"subject\", function(val) {\n if (val === allSubjects) {\n return $scope.topics = content.topics;\n } else {\n return $scope.topics = val.topics;\n }\n });\n });\n $scope.search = \"\";\n $scope.searchFilter = function(topic) {\n var i, len, ref, tag;\n if ($scope.search === \"\") {\n return true;\n }\n if (topic.name.indexOf($scope.search) > -1) {\n return true;\n }\n ref = topic.tags;\n for (i = 0, len = ref.length; i < len; i++) {\n tag = ref[i];\n if (tag.indexOf($scope.search) > -1) {\n return true;\n }\n }\n return false;\n };\n return $scope.selectTag = function(tag) {\n return $scope.search = tag;\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantAdminController', function($scope, cogniss, tenant, TenantService) {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TeamsTeamController', function($scope, team, TeamService, $state, cogniss, $uibModal) {\n 'ngInject';\n console.log(\"team\", team);\n return $scope.team = team;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TeamsOverviewController', function($scope, $uibModal, TeamService, $state, modalService) {\n 'ngInject';\n TeamService.getTeams().then(function(teams) {});\n $scope.$watch(function() {\n return TeamService.teams;\n }, function(teams) {\n return $scope.teams = teams;\n });\n $scope.addTeam = function() {\n var modal, modalScope;\n modalScope = $scope.$new();\n modalScope.team = {\n code: \"\",\n name: \"\",\n description: \"\"\n };\n modalScope.submitTeam = function(team) {\n return TeamService.addTeam(team).then(function(team) {\n modal.close();\n return $state.go(\"teams.team\", {\n teamId: team.id\n });\n }, function(error) {\n if ((error.data != null) && error.data.code === \"409\") {\n return modalService.showModal(\"Error\", \"This team code is in use. Please choose another.\");\n }\n });\n };\n return modal = $uibModal.open({\n templateUrl: \"app/screens/teams/overview/add-team-modal.html\",\n scope: modalScope\n });\n };\n $scope.joinTeam = function() {\n var modal, modalScope;\n modalScope = $scope.$new();\n modalScope.code = \"\";\n modalScope.submitCode = function(code) {\n console.log(\"submit code\", modalScope);\n return TeamService.joinTeam(code).then(function(team) {\n modal.close();\n return $state.go(\"teams.team\", {\n teamId: team.id\n });\n }, function(error) {\n console.log(\"error\", error);\n if ((error.data != null) && error.data.code === \"404\") {\n return modalService.showModal(\"Error\", \"This team code is incorrect. Please choose another.\");\n }\n });\n };\n return modal = $uibModal.open({\n templateUrl: \"app/screens/teams/overview/join-team-modal.html\",\n scope: modalScope\n });\n };\n return $scope.selectTeam = function(team) {\n return $state.go(\"teams.team\", {\n teamId: team.id\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('AdminTenantsController', function($scope, TenantService, modalService, $state) {\n 'ngInject';\n TenantService.getTenants().then(function(tenants) {\n return $scope.tenants = tenants;\n });\n $scope.newTenant = function(subject) {\n return $scope.formData = {\n name: \"\",\n description: \"\",\n filepath: \"\"\n };\n };\n $scope.saveTenant = function() {\n var index;\n index = $scope.tenants.indexOf($scope.editTenant);\n $scope.editTenant = angular.copy($scope.formData);\n return TenantService.saveTenant($scope.formData).then(function(tenant) {\n if ($scope.editTenant.id == null) {\n $scope.tenants.push(tenant);\n $scope.editTenant = tenant;\n } else {\n $scope.tenants.splice(index, 1, tenant);\n }\n return $scope.newTenant();\n });\n };\n $scope.selectTenant = function(tenant) {\n $scope.editTenant = tenant;\n return $scope.formData = angular.copy($scope.editTenant);\n };\n return $scope.deleteTenant = function(tenant) {\n var doDelete;\n doDelete = function() {\n var index;\n index = $scope.tenants.indexOf(tenant);\n TenantService.deleteTenant(tenant).then(function(tenant) {\n return $scope.tenants.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error removing tenant\");\n });\n return $scope.newTenant();\n };\n return modalService.showModal(\"Confirm removing Tenant\", \"Are you sure you want to remove this tenant?\", true, true, \"Cancel\", doDelete, \"Confirm\");\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('AdminTemplatesController', function($scope, ContentService, modalService, $state, QuestionTypes) {\n 'ngInject';\n ContentService.getTemplates().then(function(templates) {\n return $scope.templates = templates;\n });\n $scope.questionTypes = QuestionTypes;\n $scope.newTemplate = function(subject) {\n $scope.formData = {\n name: \"\",\n description: \"\",\n filepath: \"\",\n questionTypes: []\n };\n return $scope.addType();\n };\n $scope.saveTemplate = function() {\n var index;\n index = $scope.templates.indexOf($scope.editTemplate);\n $scope.editTemplate = angular.copy($scope.formData);\n return ContentService.saveTemplate($scope.formData).then(function(template) {\n if ($scope.editTemplate.id == null) {\n $scope.templates.push(template);\n $scope.editTemplate = template;\n } else {\n $scope.templates.splice(index, 1, template);\n }\n return $scope.newTemplate();\n });\n };\n $scope.selectTemplate = function(template) {\n $scope.editTemplate = template;\n return $scope.formData = angular.copy($scope.editTemplate);\n };\n $scope.archiveTemplate = function(template) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.templates.indexOf(template);\n template.archived = true;\n ContentService.saveTemplate(template).then(function(template) {\n return $scope.templates.splice(index, 1);\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error archiving template\");\n });\n return $scope.newTemplate();\n };\n return modalService.showModal(\"Confirm archiving Template\", \"Are you sure you want to archive this template?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n $scope.addType = function() {\n if ($scope.formData.questionTypes == null) {\n $scope.formData.questionTypes = [];\n }\n return $scope.formData.questionTypes.push({\n type: \"\",\n attributes: {}\n });\n };\n $scope.onChangeType = function(type) {\n return type.attributes = {};\n };\n $scope.removeType = function(type) {\n return $scope.formData.questionTypes.splice($scope.formData.questionTypes.indexOf(type), 1);\n };\n return $scope.newTemplate();\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('AdminBehaviorsController', function($scope) {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputTextRange', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/textrange/textrange.html',\n scope: {\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputTemplateInterpreted', function($interval) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/templateinterpreted/templateinterpreted.html',\n scope: {\n question: \"=\"\n },\n link: function($scope) {\n $scope.$watch(\"question\", function(val) {\n return $scope.jsonString = JSON.stringify(val, null, 2);\n });\n return $scope.$watch(\"jsonString\", function(val) {\n var error;\n $scope.wellFormed = true;\n try {\n return JSON.parse($scope.jsonString);\n } catch (error1) {\n error = error1;\n console.log(\"error\", error);\n return $scope.wellFormed = false;\n } finally {\n $scope.jsonForm.jsonInput.$setValidity(\"wellFormed\", $scope.wellFormed);\n if ($scope.wellFormed) {\n $scope.question = JSON.parse($scope.jsonString);\n }\n }\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputMultichoice', function(TopicTypes) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/multichoice/multichoice.html',\n scope: {\n topic: \"=\",\n question: \"=\"\n },\n link: function($scope) {\n $scope.selectOption = function(option) {\n return $scope.selectedOption = option;\n };\n $scope.$watch(\"selectedOption\", function(option) {\n var i, len, o, ref;\n if ($scope.question == null) {\n return;\n }\n if ($scope.question.options == null) {\n return;\n }\n ref = $scope.question.options;\n for (i = 0, len = ref.length; i < len; i++) {\n o = ref[i];\n o.correct = false;\n }\n if (option == null) {\n return;\n }\n return option.correct = true;\n });\n $scope.$watch(\"topic\", function(topic) {\n $scope.showCorrect = topic.topicType !== TopicTypes.SURVEY && topic.topicType !== TopicTypes.SCORED_SURVEY;\n return $scope.showScore = topic.topicType === TopicTypes.SCORED_SURVEY;\n });\n $scope.$watch(\"question\", function(question) {\n if (question.id == null) {\n question.label = \"\";\n question.description = \"\";\n question.text = \"\";\n if (question.options == null) {\n question.options = [];\n $scope.addOption();\n $scope.addOption();\n }\n }\n return $scope.updateSelectedOption();\n });\n $scope.updateSelectedOption = function() {\n var i, len, option, ref, results;\n $scope.selectedOption = null;\n ref = $scope.question.options;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n option = ref[i];\n if (option.correct) {\n results.push($scope.selectedOption = option);\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n $scope.addOption = function() {\n var option;\n option = {};\n option.label = \"\";\n if ($scope.topic.attributes.optionText) {\n option.text = \"\";\n }\n if ($scope.topic.attributes.optionAudio) {\n option.audio = \"\";\n }\n if ($scope.topic.attributes.optionImage) {\n option.image = \"\";\n }\n if ($scope.topic.topicType === TopicTypes.SCORED_SURVEY) {\n option.score = 0;\n }\n return $scope.question.options.push(option);\n };\n return $scope.deleteOption = function(option) {\n $scope.question.options.splice($scope.question.options.indexOf(option), 1);\n return $scope.updateSelectedOption();\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputImageResponse', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/imageresponse/imageresponse.html',\n scope: {\n topic: \"=\",\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputFillBlanks', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/fillblanks/fillblanks.html',\n scope: {\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputEquation', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/equation/equation.html',\n scope: {\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputCategorisation', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/categorisation/categorisation.html',\n scope: {\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInputAudioResponse', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/audioresponse/audioresponse.html',\n scope: {\n topic: \"=\",\n question: \"=\"\n },\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgTriggerInput', function(TriggerTypes) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/triggerinput/triggerinput.html',\n scope: {\n trigger: \"=\",\n types: \"=\",\n tenant: \"=\"\n },\n link: function($scope) {\n var hour, i, j, label, minute, updateDate;\n $scope.scheduleTypes = {\n DURATION: \"DURATION\",\n TIME: \"TIME\",\n DATE: \"DATE\"\n };\n $scope.dateOptions = {\n minDate: new Date()\n };\n $scope.hours = [];\n for (hour = i = 0; i < 23; hour = ++i) {\n label = hour.toString();\n if (label.length === 1) {\n label = \"0\" + label;\n }\n $scope.hours.push({\n label: label,\n value: hour\n });\n }\n $scope.minutes = [];\n for (minute = j = 0; j < 59; minute = ++j) {\n label = minute.toString();\n if (label.length === 1) {\n label = \"0\" + label;\n }\n $scope.minutes.push({\n label: label,\n value: minute\n });\n }\n $scope.triggerTypes = TriggerTypes;\n $scope.$watch(\"trigger.type\", function(type, oldType) {\n $scope.selectActivity = false;\n if (type === TriggerTypes.SCHEDULED) {\n $scope.scheduleType = $scope.scheduleTypes.DATE;\n $scope.date = moment().startOf('day').add(1, 'days').toDate();\n $scope.hour = $scope.hours[0];\n $scope.minute = $scope.minutes[0];\n updateDate();\n }\n if (($scope.tenant != null) && (type === TriggerTypes.ACTIVITY_RESPONSE || type === TriggerTypes.COMPLETE_ACTIVITY)) {\n $scope.selectActivity = true;\n }\n if (($scope.tenant != null) && type === TriggerTypes.QUESTION_RESPONSE) {\n return $scope.selectQuestion = true;\n }\n });\n updateDate = function() {\n var d, diff, duration, m, offset;\n if ($scope.trigger.type !== TriggerTypes.SCHEDULED) {\n return;\n }\n $scope.trigger.date = null;\n $scope.trigger.duration = null;\n $scope.trigger.fromMidnight = null;\n m = null;\n if ($scope.scheduleType === $scope.scheduleTypes.DATE) {\n if ($scope.date == null) {\n return;\n }\n d = $scope.date.toISOString();\n m = moment(d);\n offset = m.utcOffset();\n m.utc();\n m.add(offset, 'minutes');\n m.hour($scope.hour.value);\n m.minute($scope.minute.value);\n return $scope.trigger.date = m.toISOString();\n } else if ($scope.scheduleType === $scope.scheduleTypes.TIME) {\n m = moment();\n m.startOf('day');\n m.hour($scope.hour.value);\n m.minute($scope.minute.value);\n diff = m.diff(moment().startOf('day'), 'seconds');\n $scope.trigger.fromMidnight = true;\n return $scope.trigger.duration = diff;\n } else {\n duration = 0;\n duration += $scope.hour.value * 60 * 60;\n duration += $scope.minute.value * 60;\n $scope.trigger.fromMidnight = false;\n return $scope.trigger.duration = duration;\n }\n };\n $scope.$watch(\"date\", updateDate);\n $scope.$watch(\"hour\", updateDate);\n return $scope.$watch(\"minute\", updateDate);\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgResultInput', function(ResultTypes) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/resultinput/resultinput.html',\n scope: {\n result: \"=\",\n types: \"=\"\n },\n link: function($scope) {\n $scope.resultTypes = ResultTypes;\n return $scope.$watch(\"result.type\", function(type) {\n if (type === ResultTypes.SCHEDULED) {\n return updateDate();\n }\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionSelect', function(ResultTypes, ContentService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/questionselect/questionselect.html',\n scope: {\n tenant: \"=\",\n questionId: \"=\"\n },\n link: function($scope) {\n var updateSelectedQuestion;\n $scope.selectedQuestion = null;\n $scope.selectedTopic = null;\n $scope.$watch(\"tenant\", function(tenant) {\n if (tenant != null) {\n return ContentService.exportContent(tenant).then(function(content) {\n $scope.content = content;\n return updateSelectedQuestion();\n });\n }\n });\n $scope.$watch(\"questionId\", updateSelectedQuestion);\n updateSelectedQuestion = function() {\n var i, len, question, ref, results, topic;\n $scope.selectedQuestion = null;\n $scope.selectedTopic = null;\n if ($scope.content == null) {\n return;\n }\n if ($scope.questionId == null) {\n return;\n }\n ref = $scope.content.questions;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n question = ref[i];\n if (question.id === $scope.questionId) {\n $scope.selectedQuestion = question;\n results.push((function() {\n var j, len1, ref1, results1;\n ref1 = $scope.content.topics;\n results1 = [];\n for (j = 0, len1 = ref1.length; j < len1; j++) {\n topic = ref1[j];\n if (topic.id === $scope.selectedQuestion.topicId) {\n results1.push($scope.selectedTopic = topic);\n } else {\n results1.push(void 0);\n }\n }\n return results1;\n })());\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n $scope.$watch(\"selectedTopic\", function(val) {\n if ($scope.content == null) {\n return;\n }\n if (val == null) {\n return $scope.questionId = null;\n }\n });\n return $scope.$watch(\"selectedQuestion\", function(val) {\n if ($scope.content == null) {\n return;\n }\n $scope.questionId = null;\n if (val != null) {\n console.log(\"setting questionId\", val.id);\n return $scope.questionId = val.id;\n }\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgCriteriaInput', function(CriteriaTypes) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/criteriainput/criteriainput.html',\n scope: {\n criteria: \"=\",\n types: \"=\",\n tenant: \"=\"\n },\n link: function($scope) {\n $scope.criteriaTypes = CriteriaTypes;\n $scope.$watch(\"criteria.count\", function(val) {\n if (val === null) {\n return delete $scope.criteria.count;\n }\n });\n $scope.$watch(\"criteria.score\", function(val) {\n if (val === null) {\n return delete $scope.criteria.score;\n }\n });\n $scope.$watch(\"criteria.scoreMax\", function(val) {\n if (val === null) {\n return delete $scope.criteria.scoreMax;\n }\n });\n $scope.$watch(\"criteria.scoreMin\", function(val) {\n if (val === null) {\n return delete $scope.criteria.scoreMin;\n }\n });\n $scope.$watch(\"criteria.value\", function(val) {\n if (val === null) {\n return delete $scope.criteria.value;\n }\n });\n $scope.$watch(\"criteria.valueMin\", function(val) {\n if (val === null) {\n return delete $scope.criteria.valueMin;\n }\n });\n $scope.$watch(\"criteria.valueMax\", function(val) {\n if (val === null) {\n return delete $scope.criteria.valueMax;\n }\n });\n return $scope.$watch(\"criteria.type\", function(type) {\n $scope.selectQuestion = false;\n $scope.selectActivity = false;\n $scope.selectCount = false;\n $scope.selectAnswer = false;\n $scope.selectValue = false;\n $scope.selectScore = false;\n if (type === CriteriaTypes.ACTIVITY_RESPONSE) {\n $scope.selectActivity = true;\n $scope.selectCount = true;\n $scope.selectScore = true;\n delete $scope.criteria.answer;\n delete $scope.criteria.value;\n delete $scope.criteria.valueMax;\n delete $scope.criteria.valueMin;\n }\n if (type === CriteriaTypes.QUESTION_RESPONSE) {\n $scope.selectQuestion = true;\n $scope.selectCount = true;\n $scope.selectValue = true;\n $scope.selectAnswer = true;\n delete $scope.criteria.score;\n delete $scope.criteria.scoreMax;\n return delete $scope.criteria.scoreMin;\n }\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgActivitySelect', function(ResultTypes, ContentService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/activityselect/activityselect.html',\n scope: {\n tenant: \"=\",\n activityId: \"=\"\n },\n link: function($scope) {\n var updateSelectedActivity;\n $scope.selectedActivity = null;\n $scope.$watch(\"tenant\", function(tenant) {\n if (tenant != null) {\n return ContentService.exportContent(tenant).then(function(content) {\n console.log(\"content\", content);\n $scope.content = content;\n return updateSelectedActivity();\n });\n }\n });\n $scope.$watch(\"activityId\", updateSelectedActivity);\n updateSelectedActivity = function() {\n var activity, i, len, ref, results;\n console.log(\"updateSelectedActivity\", $scope.content != null, $scope.activityId);\n if ($scope.content == null) {\n return;\n }\n if ($scope.activityId == null) {\n return;\n }\n ref = $scope.content.activities;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n activity = ref[i];\n if (activity.id === $scope.activityId) {\n results.push($scope.selectedActivity = activity);\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n return $scope.$watch(\"selectedActivity\", function(val) {\n var activity, i, len, ref, results;\n if ($scope.content == null) {\n return;\n }\n $scope.activityId = null;\n ref = $scope.content.activities;\n results = [];\n for (i = 0, len = ref.length; i < len; i++) {\n activity = ref[i];\n if (activity === $scope.selectedActivity) {\n results.push($scope.activityId = activity.id);\n } else {\n results.push(void 0);\n }\n }\n return results;\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TenantController', function($scope, cogniss, TenantService, $uibModal, tenant, $state, $translate, UserService) {\n 'ngInject';\n $scope.$watch(function() {\n return $state.current;\n }, function(val) {\n return $scope.topLevel = val.name.indexOf(\"tenant.user.\") !== 0;\n });\n $scope.tenant = tenant;\n UserService.getUserDetails(cogniss.user.userId, tenant).then(function(details) {\n return $scope.userDetails = details;\n });\n return $scope.showTenantInfo = function() {\n var modalScope;\n modalScope = $scope.$new();\n modalScope.tenant = $scope.tenant;\n return $uibModal.open({\n templateUrl: \"app/screens/tenant/tenant-info-modal.html\",\n scope: modalScope\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('TeamsController', function($scope) {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('ResetController', function($scope, cogniss, $location, modalService, Auth) {\n 'ngInject';\n var search, showError, token, userId, userIds;\n $scope.initialised = true;\n search = $location.search();\n token = search.token;\n userId = search.user;\n userIds = search.users;\n if (cogniss.user != null) {\n return Auth.redirect();\n }\n if (userIds != null) {\n $scope.userIds = userIds.split(\",\");\n }\n showError = function() {\n return modalService.showModal(\"Error\", \"Invalid password reset link\");\n };\n if (!((token != null) && ((userId != null) || ($scope.userIds != null)))) {\n showError();\n }\n $scope.password = \"\";\n $scope.state = \"reset\";\n if ($scope.userIds) {\n $scope.state = \"users\";\n }\n $scope.selectUser = function(id) {\n userId = id;\n return $scope.state = \"reset\";\n };\n return $scope.reset = function() {\n return cogniss.reset(userId, token, $scope.password).then(function() {\n return modalService.showModal(\"Password changed\", \"You can now log in to cogniss\");\n }, function(error) {\n return showError();\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('RegisterController', function($scope, cogniss, $state, modalService, FacebookService, Auth) {\n 'ngInject';\n if (cogniss.user != null) {\n return Auth.redirect();\n }\n $scope.user = {\n userName: \"\",\n email: \"\",\n password: \"\"\n };\n $scope.register = function() {\n if ($scope.pending) {\n return;\n }\n $scope.pending = true;\n return cogniss.register($scope.user).then(function() {\n $scope.pending = false;\n return Auth.redirect();\n }, function(err) {\n var message;\n $scope.pending = false;\n message = \"Registration error\";\n if ((err.USERNAME != null) && err.USERNAME === \"TAKEN\") {\n message = \"That username is already taken\";\n }\n return modalService.showModal(\"Error\", message);\n });\n };\n return $scope.fbRegister = function() {\n return FacebookService.login($scope.user).then(function() {\n return Auth.redirect();\n }, function(err) {\n var message;\n message = \"Registration error\";\n return modalService.showModal(\"Error\", message);\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('MainController', function() {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('LoginController', function(modalService, $scope, cogniss, $state, FacebookService, Auth) {\n 'ngInject';\n if (cogniss.user != null) {\n return Auth.redirect();\n }\n $scope.user = {\n userName: \"\",\n password: \"\"\n };\n $scope.login = function() {\n if ($scope.pending) {\n return;\n }\n $scope.pending = true;\n return cogniss.login($scope.user).then(function() {\n $scope.pending = false;\n return Auth.redirect();\n }, function(err) {\n var message;\n $scope.pending = false;\n message = \"Invalid username or password\";\n return modalService.showModal(\"Error\", message);\n });\n };\n return $scope.fbLogin = function() {\n return FacebookService.login($scope.user).then(function() {\n return Auth.redirect();\n }, function(err) {\n var message;\n message = \"Login error\";\n return modalService.showModal(\"Error\", message);\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('ForgotController', function(modalService, $scope, cogniss, $state, Auth) {\n 'ngInject';\n if (cogniss.user != null) {\n return Auth.redirect();\n }\n $scope.userNameOrEmail = \"\";\n return $scope.forgot = function() {\n if ($scope.pending) {\n return;\n }\n $scope.pending = true;\n return cogniss.forgot($scope.userNameOrEmail).then(function() {\n $scope.pending = false;\n return modalService.showModal(\"Reset email sent\", \"Please check your email for a reset password link\");\n }, function(err) {\n var message;\n $scope.pending = false;\n message = \"Unknown username or email\";\n return modalService.showModal(\"Error\", message);\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').controller('AdminController', function($scope) {\n return 'ngInject';\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('VoucherService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n getVouchers: function(tenant, limit, skip) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"VOUCHER_LIST\", {\n tenant: tenant.code,\n limit: limit,\n skip: skip\n }).then(function(response) {\n return deferred.resolve(response.scriptData);\n }, deferred.reject);\n return deferred.promise;\n },\n saveVoucher: function(voucher) {\n var deferred, event;\n deferred = $q.defer();\n event = \"VOUCHER_CREATE\";\n if (voucher.id != null) {\n event = \"VOUCHER_UPDATE\";\n }\n cogniss.logEventRequest(event, {\n voucher: voucher\n }).then(function(response) {\n return deferred.resolve(response.scriptData.voucher);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteVoucher: function(voucher) {\n var deferred, event;\n deferred = $q.defer();\n event = \"VOUCHER_DELETE\";\n cogniss.logEventRequest(event, {\n id: voucher.id\n }).then(function(response) {\n return deferred.resolve(true);\n }, deferred.reject);\n return deferred.promise;\n },\n bulkCreateVouchers: function(voucher, count, codes) {\n var data, deferred, event;\n console.log(\"bulkCreateVouchers\", voucher, count, codes);\n deferred = $q.defer();\n event = \"VOUCHER_CREATE_BULK\";\n data = {\n voucher: voucher\n };\n if ((codes != null) && codes.length > 0) {\n data.codes = codes.join(',');\n } else if (count > 0) {\n data.count = count;\n }\n cogniss.logEventRequest(event, data).then(function(response) {\n console.log(\"bulkCreateVouchers response\", response);\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('UtilService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n localISOString: function(date) {\n var d, day, hour, min, month, pad, sec, tz, tzs, year;\n d = new Date;\n if (date != null) {\n d = date;\n }\n pad = function(n) {\n if (n < 10) {\n return '0' + n;\n } else {\n return n;\n }\n };\n tz = d.getTimezoneOffset();\n tzs = (tz > 0 ? '-' : '+') + pad(parseInt(Math.abs(tz / 60)));\n if (tz % 60 !== 0) {\n tzs += pad(Math.abs(tz % 60));\n }\n if (tz === 0) {\n tzs = 'Z';\n }\n year = d.getFullYear();\n month = pad(d.getMonth() + 1);\n day = pad(d.getDate());\n hour = pad(d.getHours());\n min = pad(d.getMinutes());\n sec = pad(d.getSeconds());\n return year + '-' + month + '-' + day + 'T' + hour + ':' + min + ':' + sec + tzs;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgUserThumb', function(TenantService, UserService, $state, ProgressService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/userthumb/userthumb.html',\n scope: {\n userId: \"=\",\n tenant: \"=\"\n },\n link: function($scope) {\n var pending, update;\n pending = false;\n $scope.$watch(\"userId\", function(val) {\n if ($scope.userId != null) {\n return update();\n }\n });\n $scope.$watch(\"tenant\", function(val) {\n if (val != null) {\n pending = false;\n }\n if (($scope.userId != null) && $scope.tenant) {\n return update();\n }\n });\n return update = function() {\n if (pending) {\n return;\n }\n pending = true;\n UserService.getUserDetails($scope.userId, $scope.tenant).then(function(details) {\n return $scope.details = details;\n });\n if ($scope.tenant != null) {\n return ProgressService.getQuestionAggregate([$scope.userId], $scope.tenant).then(function(response) {\n return $scope.questionAggregate = response;\n });\n }\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('UserService', function(cogniss, $q, CacheService) {\n 'ngInject';\n var service;\n service = {\n user: null,\n userDetails: {},\n userQuestion: {},\n userSubject: {},\n userTopic: {}\n };\n service.getUserDetails = function(userId, tenant) {\n var deferred, key;\n deferred = $q.defer();\n if (tenant != null) {\n key = \"userDetailsAggregate_\" + userId + \"_\" + tenant.code;\n } else {\n key = \"userDetailsAggregate_\" + userId;\n }\n if (CacheService.getItem(key) != null) {\n deferred.resolve(CacheService.getItem(key));\n } else {\n cogniss.getUserDetails(userId, tenant).then(function(details) {\n CacheService.addItem(key, details, 60);\n return deferred.resolve(details);\n }, function(error) {\n return deferred.reject(error);\n });\n }\n return deferred.promise;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('uploadURL', function($q, cogniss, CacheService, $sce) {\n 'ngInject';\n var filter;\n filter = function(uploadId) {\n var cached, deferred, promise;\n cached = CacheService.getItem(uploadId);\n if (cached != null) {\n if (typeof cached === \"string\") {\n return cached;\n } else {\n return void 0;\n }\n } else {\n deferred = $q.defer();\n cogniss.getUploadedUrl(uploadId).then(function(url) {\n $sce.trustAsResourceUrl(url);\n CacheService.addItem(uploadId, url, 60);\n return deferred.resolve(url);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(displayName) {};\n return CacheService.addItem(uploadId, promise, 60);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgUpload', function(cogniss, FileUploader) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/upload/upload.html',\n scope: {\n uploadId: \"=\",\n accept: \"@\"\n },\n link: function($scope) {\n var uploadUrl, uploader;\n uploadUrl = \"\";\n uploader = $scope.uploader = new FileUploader();\n uploader.onWhenAddingFileFailed = function(item, filter, options) {};\n uploader.onAfterAddingFile = function(fileItem) {\n var random;\n random = Math.random();\n return cogniss.getUploadUrl({\n random: random\n }).then(function(url) {\n uploadUrl = url;\n uploader.uploadAll();\n return cogniss.onMessage.then(null, null, function(message) {\n console.log(\"on message handler\", message);\n if ((message.uploadData != null) && message.uploadData.random === random) {\n console.log(\"completed upload\", message.uploadData.uploadId);\n return $scope.uploadId = message.uploadData.uploadId;\n }\n });\n });\n };\n uploader.onAfterAddingAll = function(addedFileItems) {};\n uploader.onBeforeUploadItem = function(item) {\n return item.url = uploadUrl;\n };\n uploader.onProgressItem = function(fileItem, progress) {};\n uploader.onProgressAll = function(progress) {};\n uploader.onSuccessItem = function(fileItem, response, status, headers) {};\n uploader.onErrorItem = function(fileItem, response, status, headers) {};\n uploader.onCancelItem = function(fileItem, response, status, headers) {};\n uploader.onCompleteItem = function(fileItem, response, status, headers) {};\n return uploader.onCompleteAll = function() {};\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('topicName', function($q, ContentService, CacheService) {\n 'ngInject';\n var filter;\n filter = function(topicId) {\n var cached, deferred, promise;\n if (topicId == null) {\n return \"\";\n }\n cached = CacheService.getItem(topicId);\n if (cached) {\n if (typeof cached === \"string\") {\n return cached;\n } else {\n return void 0;\n }\n } else {\n deferred = $q.defer();\n ContentService.getTopic(topicId).then(function(topic) {\n var name;\n name = topic.name;\n CacheService.addItem(topicId, name);\n return deferred.resolve(name);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(name) {};\n return CacheService.addItem(topicId, promise);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('titlecase', function() {\n 'ngInject';\n return function(input) {\n var smallWords;\n smallWords = /^(a|an|and|as|at|but|by|con|de|en|for|if|in|la|las|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\n if (!input) {\n return;\n }\n input = input.toLowerCase();\n return input.replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function(match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== \":\" && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('TenantService', function(cogniss, $q, CacheService, ContentService) {\n 'ngInject';\n var service;\n service = {\n tenants: null,\n tenant: null\n };\n service.getTenants = function() {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TENANT_LIST\").then(function(response) {\n return deferred.resolve(response.scriptData.tenants);\n }, deferred.reject);\n return deferred.promise;\n };\n service.getTenantByCode = function(ref) {\n var deferred, doGetTenant;\n deferred = $q.defer();\n doGetTenant = function() {\n var found, i, len, ref1, tenant;\n found = false;\n ref1 = service.tenants;\n for (i = 0, len = ref1.length; i < len; i++) {\n tenant = ref1[i];\n if (tenant.code === ref) {\n found = true;\n deferred.resolve(tenant);\n }\n }\n if (!found) {\n return deferred.reject();\n }\n };\n service.getTenants().then(function(tenants) {\n return doGetTenant();\n });\n return deferred.promise;\n };\n service.getTenantByUrlName = function(name) {\n var deferred, doGetTenant;\n deferred = $q.defer();\n doGetTenant = function() {\n var found, i, len, ref1, tenant;\n found = false;\n ref1 = service.tenants;\n for (i = 0, len = ref1.length; i < len; i++) {\n tenant = ref1[i];\n if (tenant.urlName === name) {\n found = true;\n deferred.resolve(tenant);\n }\n }\n if (!found) {\n return deferred.reject();\n }\n };\n if (service.tenants) {\n doGetTenant();\n } else {\n service.getTenants().then(function(tenants) {\n service.tenants = tenants;\n return doGetTenant();\n }, deferred.reject);\n }\n return deferred.promise;\n };\n service.getDefaultTenant = function() {\n var deferred, doGetTenant;\n deferred = $q.defer();\n doGetTenant = function() {\n var i, len, ref1, results, tenant;\n ref1 = service.tenants;\n results = [];\n for (i = 0, len = ref1.length; i < len; i++) {\n tenant = ref1[i];\n if (tenant.insights) {\n deferred.resolve(tenant);\n break;\n } else {\n results.push(void 0);\n }\n }\n return results;\n };\n if (service.tenants) {\n doGetTenant();\n } else {\n service.getTenants().then(function(tenants) {\n service.tenants = tenants;\n return doGetTenant();\n });\n }\n return deferred.promise;\n };\n service.getContent = function(tenant) {\n var deferred, key;\n deferred = $q.defer();\n key = \"tenant_content_\" + tenant.code;\n if (CacheService.getItem(key) != null) {\n deferred.resolve(CacheService.getItem(key));\n } else {\n ContentService.exportContent(tenant).then(function(content) {\n var activity, i, j, k, l, len, len1, len2, len3, len4, m, question, questionById, ref1, ref2, ref3, ref4, ref5, subject, subjectById, template, templateById, topic, topicById;\n templateById = {};\n topicById = {};\n subjectById = {};\n questionById = {};\n ref1 = content.subjects;\n for (i = 0, len = ref1.length; i < len; i++) {\n subject = ref1[i];\n subjectById[subject.id] = subject;\n subject.questions = [];\n subject.topics = [];\n }\n ref2 = content.templates;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n template = ref2[j];\n templateById[template.id] = template;\n }\n ref3 = content.topics;\n for (k = 0, len2 = ref3.length; k < len2; k++) {\n topic = ref3[k];\n topicById[topic.id] = topic;\n topic.subject = subjectById[topic.subjectId];\n topic.questions = [];\n topic.subject.topics.push(topic);\n }\n ref4 = content.activities;\n for (l = 0, len3 = ref4.length; l < len3; l++) {\n activity = ref4[l];\n activity.topic = topicById[activity.topicId];\n activity.template = templateById[activity.templateId];\n }\n ref5 = content.questions;\n for (m = 0, len4 = ref5.length; m < len4; m++) {\n question = ref5[m];\n questionById[question.id] = question;\n question.topic = topicById[question.topicId];\n question.topic.questions.push(question);\n question.topic.subject.questions.push(question);\n }\n CacheService.addItem(key, content, 60 * 20);\n return deferred.resolve(content);\n }, function(error) {\n return deferred.reject(error);\n });\n }\n return deferred.promise;\n };\n service.getUsers = function(tenant) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TENANT_LIST_PLAYER_DETAILS\", {\n tenant: tenant.code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.details);\n }, deferred.reject);\n return deferred.promise;\n };\n service.saveTenant = function(tenant) {\n var deferred, event;\n deferred = $q.defer();\n event = \"TENANT_CREATE_TENANT\";\n if (tenant.id != null) {\n event = \"TENANT_UPDATE_TENANT\";\n }\n cogniss.logEventRequest(event, {\n tenant: tenant\n }).then(function(response) {\n return deferred.resolve(response.scriptData.tenant);\n }, deferred.reject);\n return deferred.promise;\n };\n service.deleteTenant = function(tenant) {\n var deferred, event;\n deferred = $q.defer();\n if (tenant.id != null) {\n event = \"TENANT_DELETE_TENANT\";\n }\n cogniss.logEventRequest(event, {\n code: tenant.code\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('templateName', function($q, ContentService, CacheService) {\n 'ngInject';\n var filter;\n filter = function(id) {\n var cached, deferred, promise;\n cached = CacheService.getItem(id);\n if (cached) {\n if (typeof cached === \"string\") {\n return cached;\n } else {\n return void 0;\n }\n } else {\n deferred = $q.defer();\n ContentService.getTemplate(id).then(function(template) {\n var displayName;\n displayName = template.name;\n CacheService.addItem(id, displayName);\n return deferred.resolve(displayName);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(displayName) {};\n return CacheService.addItem(id, promise);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgTeamThumb', function(TenantService, TeamService, ProgressService, $state) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/teamthumb/teamthumb.html',\n scope: {\n team: \"=\",\n tenant: \"=\"\n },\n link: function($scope) {\n var pending, update;\n pending = false;\n $scope.$watch(\"team\", function(val) {\n if ($scope.team != null) {\n return update();\n }\n });\n $scope.$watch(\"tenant\", function(val) {\n if (val != null) {\n pending = false;\n }\n if (($scope.team != null) && $scope.tenant) {\n return update();\n }\n });\n return update = function() {\n var i, len, member, ref, userIds;\n if (pending) {\n return;\n }\n pending = true;\n if ($scope.tenant != null) {\n userIds = [];\n ref = $scope.team.members;\n for (i = 0, len = ref.length; i < len; i++) {\n member = ref[i];\n userIds.push(member.id);\n }\n return ProgressService.getQuestionAggregate(userIds, $scope.tenant).then(function(response) {\n return $scope.questionAggregate = response;\n });\n }\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('TeamService', function(cogniss, $q) {\n 'ngInject';\n var service;\n service = {};\n service.teams = null;\n service.getTeams = function() {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_LIST_TEAMS\").then(function(response) {\n service.teams = response.scriptData.teams;\n return deferred.resolve(response.scriptData.teams);\n }, deferred.reject);\n return deferred.promise;\n };\n service.getTeam = function(id) {\n var deferred, findTeam;\n deferred = $q.defer();\n findTeam = function() {\n var i, len, ref, team;\n ref = service.teams;\n for (i = 0, len = ref.length; i < len; i++) {\n team = ref[i];\n if (team.id === id) {\n deferred.resolve(team);\n return;\n }\n }\n };\n service.getTeams().then(function(teams) {\n return findTeam();\n }, deferred.reject);\n return deferred.promise;\n };\n service.addTeam = function(team) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_CREATE_TEAM\", {\n team: team\n }).then(function(response) {\n console.log(\"response\", response);\n service.teams.push(response.scriptData.team);\n return deferred.resolve(response.scriptData.team);\n }, deferred.reject);\n return deferred.promise;\n };\n service.addCode = function(team, code) {\n var deferred;\n console.log(\"addCode\", team, code);\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_ADD_CODE\", {\n code: code,\n team: team.id\n }).then(function(response) {\n return deferred.resolve(code);\n }, deferred.reject);\n return deferred.promise;\n };\n service.joinTeam = function(code) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_JOIN_TEAM\", {\n code: code\n }).then(function(response) {\n service.teams.push(response.scriptData.team);\n return deferred.resolve(response.scriptData.team);\n }, deferred.reject);\n return deferred.promise;\n };\n service.leaveTeam = function(team) {\n var deferred;\n console.log(\"leave team\", team);\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_LEAVE_TEAM\", {\n id: team.id\n }).then(function(response) {\n service.teams = _.without(service.teams, team);\n return deferred.resolve();\n }, deferred.reject);\n return deferred.promise;\n };\n service.disbandTeam = function(team) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"TEAMS_DELETE_TEAM\", {\n id: team.id\n }).then(function(response) {\n console.log(\"response\", response);\n service.teams = _.without(service.teams, team);\n return deferred.resolve();\n }, deferred.reject);\n return deferred.promise;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgTeamProfilePanel', function(cogniss, UserService, modalService, $state, $uibModal, TeamService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/teamprofilepanel/teamprofilepanel.html',\n scope: {\n tenant: \"=\",\n team: \"=\"\n },\n link: function($scope) {\n $scope.$watch(function() {\n return cogniss.user;\n }, function(val) {\n return $scope.user = val;\n });\n $scope.disbandTeam = function() {\n return TeamService.disbandTeam(team).then(function() {\n return $state.go(\"teams.overview\");\n });\n };\n $scope.leaveTeam = function() {\n return TeamService.leaveTeam(team).then(function() {\n return $state.go(\"teams.overview\");\n });\n };\n return $scope.addCode = function() {\n var modal, modalScope;\n modalScope = $scope.$new();\n modalScope.code = \"\";\n modalScope.submitCode = function(code) {\n console.log(\"submit code\", modalScope);\n return TeamService.addCode($scope.team, code).then(function(code) {\n return modal.close();\n }, function(error) {\n console.log(\"error\", error);\n if ((error.data != null) && error.data.code === \"409\") {\n return modalService.showModal(\"Error\", \"This team code is in use. Please choose another.\");\n }\n });\n };\n return modal = $uibModal.open({\n templateUrl: \"app/screens/teams/team/add-code-modal.html\",\n scope: modalScope\n });\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('teamName', function($q, TeamService, CacheService) {\n 'ngInject';\n var filter;\n filter = function(teamId) {\n var cached, deferred, promise;\n cached = CacheService.getItem(teamId);\n if (cached) {\n return cached;\n } else {\n deferred = $q.defer();\n TeamService.getTeam(teamId).then(function(team) {\n var name;\n name = team.name;\n if ((name == null) || name.length === 0) {\n name = teamId;\n }\n CacheService.addItem(teamId, name);\n return deferred.resolve(name);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(name) {};\n return CacheService.addItem(teamId, promise);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('subjectName', function($q, ContentService, CacheService) {\n 'ngInject';\n var filter;\n filter = function(subjectId) {\n var cached, deferred, promise;\n if (subjectId == null) {\n return \"\";\n }\n cached = CacheService.getItem(subjectId);\n if (cached) {\n if (typeof cached === \"string\") {\n return cached;\n } else {\n return void 0;\n }\n } else {\n deferred = $q.defer();\n ContentService.getSubject(subjectId).then(function(subject) {\n var name;\n name = subject.name;\n CacheService.addItem(subjectId, name);\n return deferred.resolve(name);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(name) {};\n return CacheService.addItem(subjectId, promise);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgSplash', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/splash/splash.html',\n scope: {},\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgSidebar', function(TenantService, $state, cogniss, UserService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/sidebar/sidebar.html',\n scope: {},\n link: function($scope) {\n $scope.$watch(function() {\n return cogniss.user;\n }, function(user) {\n $scope.user = user;\n if (user != null) {\n TenantService.getTenants().then(function(tenants) {\n return $scope.tenants = tenants;\n });\n return UserService.getUserDetails(user.userId).then(function(details) {\n return $scope.userDetails = details;\n });\n }\n });\n return $scope.selectTenant = function(tenant) {\n return $state.go(\"tenant.users\", {\n tenantRef: tenant.urlName\n });\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgQuestionInput', function(QuestionTypes, ContentService, TopicTypes, TenantService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/questioninput/questioninput.html',\n scope: {\n topic: \"=\",\n question: \"=\"\n },\n link: function($scope) {\n $scope.QuestionTypes = QuestionTypes;\n $scope.TopicTypes = TopicTypes;\n return $scope.$watch(\"topic\", function(topic) {\n if (topic == null) {\n return;\n }\n $scope.noQuestionType = topic.questionType == null;\n return TenantService.getTenantByCode(topic.tenant).then(function(tenant) {\n return ContentService.getTopics(tenant).then(function(topics) {\n return $scope.topics = topics;\n });\n });\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('ProgressService', function(cogniss, $q, CacheService) {\n 'ngInject';\n var service;\n service = {};\n service.getUserActivityResponses = function(userIds, tenant, subject, topic, start, end, skip, limit) {\n var deferred, params;\n deferred = $q.defer();\n params = {\n tenant: tenant.code,\n players: userIds\n };\n if (subject != null) {\n params.subject = subject.id;\n }\n if (topic != null) {\n params.topic = topic.id;\n }\n if (start != null) {\n params.dateMin = start.getTime();\n }\n if (end != null) {\n params.dateMax = end.getTime();\n }\n if (skip != null) {\n params.skip = skip;\n }\n if (limit != null) {\n params.limit = limit;\n }\n cogniss.logEventRequest(\"PROGRESS_LIST_ACTIVITY_RESPONSES\", params).then(function(response) {\n return deferred.resolve(response.scriptData);\n }, deferred.reject);\n return deferred.promise;\n };\n service.saveActivityResponse = function(response) {\n var deferred, event;\n deferred = $q.defer();\n event = \"PROGRESS_SAVE_ACTIVITY_RESPONSE\";\n if (response.id) {\n event = \"PROGRESS_UPDATE_ACTIVITY_RESPONSE\";\n }\n cogniss.logEventRequest(event, {\n response: response\n }).then(function(response) {\n return deferred.resolve(response.scriptData.response);\n }, deferred.reject);\n return deferred.promise;\n };\n service.saveQuestionResponse = function(response) {\n var deferred, event;\n deferred = $q.defer();\n event = \"PROGRESS_SAVE_QUESTION_RESPONSE\";\n cogniss.logEventRequest(event, {\n response: response\n }).then(function(response) {\n return deferred.resolve(response.scriptData.response);\n }, deferred.reject);\n return deferred.promise;\n };\n service.getActivityResponse = function(responseId) {\n var deferred, event, key;\n deferred = $q.defer();\n key = \"activityResponse_\" + responseId;\n if (CacheService.getItem(key) != null) {\n deferred.resolve(CacheService.getItem(key));\n } else {\n event = \"PROGRESS_GET_ACTIVITY_RESPONSE\";\n cogniss.logEventRequest(event, {\n id: responseId\n }).then(function(response) {\n return deferred.resolve(response.scriptData.response);\n }, deferred.reject);\n }\n return deferred.promise;\n };\n service.listQuestionResponses = function(questionId, activityResponseId) {\n var deferred, event, key, params;\n deferred = $q.defer();\n key = \"questionResponses_\" + questionId + \"_\" + activityResponseId;\n if (CacheService.getItem(key) != null) {\n deferred.resolve(CacheService.getItem(key));\n } else {\n event = \"PROGRESS_LIST_QUESTION_RESPONSES\";\n params = {\n question: \"\",\n activityResponse: \"\",\n topicResponse: \"\",\n player: \"\",\n tenant: \"\"\n };\n if (questionId != null) {\n params.question = questionId;\n }\n if (activityResponseId != null) {\n params.activityResponse = activityResponseId;\n }\n cogniss.logEventRequest(event, params).then(function(response) {\n return deferred.resolve(response.scriptData.responses);\n }, deferred.reject);\n }\n return deferred.promise;\n };\n service.getQuestionAggregate = function(userIds, tenant, subjectId, topicId) {\n var deferred, event, key, params, tenantCode;\n tenantCode = \"null\";\n if (tenant != null) {\n tenantCode = tenant.code;\n }\n deferred = $q.defer();\n key = \"usersQuestionAggregate_\" + (userIds.join()) + \"_\" + tenantCode + \"_\" + subjectId + \"_\" + topicId;\n if (CacheService.getItem(key) != null) {\n deferred.resolve(CacheService.getItem(key));\n } else {\n event = \"PROGRESS_GET_QUESTION_AGGREGATE\";\n params = {\n players: userIds,\n tenant: tenantCode\n };\n if (subjectId != null) {\n params.subject = subjectId;\n }\n if (topicId != null) {\n params.topic = topicId;\n }\n cogniss.logEventRequest(event, params).then(function(response) {\n return deferred.resolve(response.scriptData.data);\n }, deferred.reject);\n }\n return deferred.promise;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgProfilePanel', function(cogniss, UserService, modalService, $state) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/profilepanel/profilepanel.html',\n scope: {\n tenant: \"=\",\n userId: \"=\"\n },\n link: function($scope) {\n var pending, update;\n pending = false;\n $scope.$watch(\"userId\", function(val) {\n if ($scope.userId != null) {\n return update();\n }\n });\n $scope.$watch(\"tenant\", function(val) {\n if (val != null) {\n pending = false;\n }\n if (($scope.userId != null) && $scope.tenant) {\n return update();\n }\n });\n update = function() {\n if (pending) {\n return;\n }\n pending = true;\n return UserService.getUserDetails($scope.userId, $scope.tenant).then(function(details) {\n return $scope.userDetails = details;\n });\n };\n $scope.deleteUser = function() {\n var doDelete;\n doDelete = function() {\n return cogniss.removeInsightsUser($scope.tenant, $scope.userDetails.playerId).then(function() {\n return $state.go(\"tenant.users\");\n }, function(error) {\n return modalService.showModal(\"Error\", \"Error removing user\");\n });\n };\n return modalService.showModal(\"Confirm removing user\", \"Are you sure you want to remove this user from your insights dashboard?\", true, true, \"Cancel\", doDelete, \"Confirm\");\n };\n return $scope.getIsCurrentUser = function() {\n return $scope.userId === cogniss.user.userId;\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgPagination', function() {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/pagination/pagination.html',\n scope: {\n index: \"=\",\n limit: \"=\",\n max: \"=\",\n pageLimit: \"=?\"\n },\n link: function($scope) {\n var update;\n update = function() {\n var displayPages, first, i, j, k, last, page, pages, ref, ref1, ref2, ref3;\n pages = [];\n for (i = j = 0, ref = $scope.max, ref1 = $scope.limit; ref1 > 0 ? j <= ref : j >= ref; i = j += ref1) {\n page = {\n index: pages.length,\n first: pages.length * $scope.limit,\n last: (pages.length * $scope.limit) + ($scope.limit - 1)\n };\n if (page.first < $scope.max) {\n page.current = (page.first <= $scope.index) && (page.last >= $scope.index);\n if (page.current) {\n $scope.current = page;\n }\n pages.push(page);\n }\n }\n $scope.pages = pages;\n $scope.lastPage = pages[pages.length - 1];\n if (pages.length <= $scope.pageLimit) {\n return $scope.displayPages = pages;\n } else {\n first = Math.round(($scope.index / $scope.limit) - ($scope.pageLimit / 2));\n if (first < 0) {\n first = 0;\n }\n if (first >= pages.length - $scope.pageLimit) {\n first = pages.length - $scope.pageLimit;\n } else {\n last = first + ($scope.pageLimit - 1);\n }\n displayPages = [];\n for (i = k = ref2 = first, ref3 = first + ($scope.pageLimit - 1); ref2 <= ref3 ? k <= ref3 : k >= ref3; i = ref2 <= ref3 ? ++k : --k) {\n displayPages.push(pages[i]);\n }\n return $scope.displayPages = displayPages;\n }\n };\n $scope.$watch(\"index\", update);\n $scope.$watch(\"limit\", update);\n $scope.$watch(\"max\", update);\n $scope.$watch(\"pageLimit\", update);\n $scope.first = function() {\n return $scope.goPage($scope.pages[0]);\n };\n $scope.previous = function() {\n return $scope.goPage($scope.pages[$scope.current.index - 1]);\n };\n $scope.next = function() {\n return $scope.goPage($scope.pages[$scope.current.index + 1]);\n };\n $scope.last = function() {\n return $scope.goPage($scope.pages[$scope.pages.length - 1]);\n };\n $scope.goPage = function(page) {\n if (page == null) {\n return;\n }\n return $scope.index = page.first;\n };\n return $scope.pageLimit = 5;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module(\"cogniss\").service('OptionsService', function() {\n 'ngInject';\n var service;\n service = {};\n service.showSidebar = function() {\n return $scope.$root.showSidebar = !$scope.$root.showSidebar;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('NotesService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n getNotes: function(playerIds, tenant, start, end, skip, limit) {\n var deferred, params;\n console.log('getNotes', playerIds, tenant, start, end, skip, limit);\n deferred = $q.defer();\n params = {\n tenant: tenant.code,\n players: playerIds\n };\n if (start != null) {\n params.dateMin = start.getTime();\n }\n if (end != null) {\n params.dateMax = end.getTime();\n }\n if (skip != null) {\n params.skip = skip;\n }\n if (limit != null) {\n params.limit = limit;\n }\n cogniss.logEventRequest(\"NOTES_LIST_NOTES\", params).then(function(response) {\n console.log(\"gamesparks notes response\", response);\n return deferred.resolve(response.scriptData);\n }, deferred.reject);\n return deferred.promise;\n },\n addNote: function(note) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"NOTES_CREATE_NOTE\", {\n note: note\n }).then(function(response) {\n console.log(\"gamesparks notes response\", response);\n return deferred.resolve(response.scriptData.note);\n }, deferred.reject);\n return deferred.promise;\n },\n updateNote: function(note) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"NOTES_UPDATE_NOTE\", {\n note: note\n }).then(function(response) {\n console.log(\"gamesparks notes response\", response);\n return deferred.resolve(response.scriptData.note);\n }, deferred.reject);\n return deferred.promise;\n },\n addComment: function(note, text) {\n var comment, deferred;\n deferred = $q.defer();\n comment = {\n playerId: cogniss.user.userId,\n text: text\n };\n cogniss.logEventRequest(\"NOTES_ADD_COMMENT\", {\n comment: comment,\n id: note.id\n }).then(function(response) {\n console.log(\"gamesparks comment response\", response);\n return deferred.resolve(response.scriptData.comment);\n }, deferred.reject);\n return deferred.promise;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgNotes', function(TenantService, $state, NotesService, $uibModal, NoteTypes, cogniss) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/notes/notes.html',\n scope: {\n tenant: \"=\",\n playerId: \"=\",\n playerIds: \"=?\"\n },\n link: function($scope) {\n var pending, update;\n console.log('notes');\n pending = false;\n $scope.limit = 10;\n $scope.skip = 0;\n $scope.max = 0;\n $scope.noteTypes = NoteTypes;\n $scope.startDateOptions = {\n showWeeks: false\n };\n $scope.endDateOptions = {\n showWeeks: false\n };\n update = function() {\n var end, start;\n if ($scope.tenant == null) {\n return;\n }\n if ($scope.playerIds == null) {\n return;\n }\n if (pending) {\n return;\n }\n start = $scope.start;\n end = $scope.end;\n if (end != null) {\n end = moment(end);\n end.add(23, 'h');\n end.add(59, 'm');\n end.add(59, 's');\n end = end.toDate();\n }\n pending = true;\n $scope.showAddNoteButton = $scope.playerIds.length === 1;\n if ($scope.playerIds.length === 1) {\n $scope.showAddNoteButton = cogniss.user.userId !== $scope.playerIds[0];\n }\n return NotesService.getNotes($scope.playerIds, $scope.tenant, start, end, $scope.skip, $scope.limit).then(function(data) {\n $scope.max = data.count;\n $scope.notes = data.notes;\n return pending = false;\n });\n };\n $scope.$watch(\"playerId\", function(val) {\n if (val != null) {\n return $scope.playerIds = [val];\n }\n });\n $scope.$watch(\"playerIds\", function(val) {\n if (val != null) {\n return update();\n }\n });\n $scope.$watch(\"start\", update);\n $scope.$watch(\"end\", update);\n $scope.$watch(\"skip\", update);\n $scope.addNote = function() {\n var modal, modalScope, note;\n note = {\n playerId: $scope.playerId,\n tenant: $scope.tenant.code,\n text: \"\",\n type: NoteTypes.NOTE\n };\n modalScope = $scope.$new();\n modalScope.noteTypes = NoteTypes;\n modalScope.note = note;\n modalScope.saveNote = function(note) {\n return NotesService.addNote(note).then(function(note) {\n update();\n return modal.close();\n });\n };\n return modal = $uibModal.open({\n templateUrl: \"app/components/notes/addnote.modal.html\",\n scope: modalScope\n });\n };\n return $scope.selectNote = function(note) {\n var modal, modalScope;\n modalScope = $scope.$new();\n modalScope.noteTypes = NoteTypes;\n modalScope.note = note;\n modalScope.commentText = \"\";\n modalScope.saveComment = function(text) {\n modalScope.commentText = \"\";\n return NotesService.addComment(note, text).then(function(comment) {\n return modalScope.note.comments.push(comment);\n });\n };\n modalScope.saveNote = function(note) {\n return NotesService.updateNote(note).then(function(note) {\n update();\n return modal.close();\n });\n };\n return modal = $uibModal.open({\n templateUrl: \"app/components/notes/note.modal.html\",\n scope: modalScope\n });\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('modalService', function($rootScope, $uibModal) {\n 'ngInject';\n var service;\n service = {\n showModal: function(title, body, close, footer, dismissLabel, onAccept, acceptLabel) {\n var backdrop, modal, modalScope;\n modal = null;\n if (close == null) {\n close = true;\n }\n if (footer == null) {\n footer = false;\n }\n if (dismissLabel == null) {\n dismissLabel = \"Ok\";\n }\n modalScope = $rootScope.$new();\n modalScope.title = title;\n modalScope.body = body;\n modalScope.close = close;\n modalScope.footer = footer;\n if (onAccept != null) {\n modalScope.accept = function() {\n onAccept();\n return modal.close();\n };\n }\n modalScope.dismissLabel = dismissLabel;\n modalScope.acceptLabel = acceptLabel;\n backdrop = true;\n if (!close) {\n backdrop = \"static\";\n }\n return modal = $uibModal.open({\n templateUrl: \"app/components/modal/modal.html\",\n scope: modalScope,\n backdrop: backdrop\n });\n }\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('LeaderboardService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n getLeaderboards: function(tenant) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"LEADERBOARD_LIST\", {\n tenant: tenant.code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.leaderboards);\n }, deferred.reject);\n return deferred.promise;\n },\n getLeaderboard: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"LEADERBOARD_GET\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.leaderboard);\n }, deferred.reject);\n return deferred.promise;\n },\n saveLeaderboard: function(leaderboard) {\n var deferred, event;\n deferred = $q.defer();\n event = \"LEADERBOARD_CREATE\";\n if (leaderboard.id != null) {\n event = \"LEADERBOARD_UPDATE\";\n }\n cogniss.logEventRequest(event, {\n leaderboard: leaderboard\n }).then(function(response) {\n return deferred.resolve(response.scriptData.leaderboard);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteLeaderboard: function(leaderboard) {\n var deferred, event;\n deferred = $q.defer();\n if (leaderboard.id != null) {\n event = \"LEADERBOARD_DELETE\";\n }\n cogniss.logEventRequest(event, {\n id: leaderboard.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgHeader', function(cogniss, $state, Auth, $translate, OptionsService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/header/header.html',\n scope: {},\n link: function($scope) {\n $scope.toggleSidebar = function() {\n return OptionsService.showSidebar = !OptionsService.showSidebar;\n };\n $scope.logout = function() {\n return Auth.logout();\n };\n $scope.$watch(function() {\n return cogniss.user;\n }, function(val) {\n return $scope.user = val;\n });\n $scope.home = function() {\n if ($scope.user != null) {\n return $state.go(\"tenant.users\");\n } else {\n return $state.go(\"login\");\n }\n };\n $scope.lang = 'English';\n $scope.setLang = function(lang) {\n switch (lang) {\n case 'English':\n $translate.use('en');\n break;\n case 'Deutsch':\n $translate.use('de');\n break;\n case 'Español':\n $translate.use('es');\n break;\n case '中文':\n $translate.use('zh');\n break;\n case '日本語':\n $translate.use('ja');\n break;\n case 'Portugal':\n $translate.use('pt');\n break;\n case 'Русский язык':\n $translate.use('ru');\n }\n return $scope.lang = lang;\n };\n $scope.getFlag = function() {\n var lang;\n lang = $scope.lang;\n switch (lang) {\n case 'English':\n return 'flags-american';\n case 'Deutsch':\n return 'flags-germany';\n case 'Español':\n return 'flags-spain';\n case '中文':\n return 'flags-china';\n case 'Portugal':\n return 'flags-portugal';\n case '日本語':\n return 'flags-japan';\n case 'Русский язык':\n return 'flags-russia';\n }\n };\n return $scope.$watch(function() {\n return cogniss.pendingCount;\n }, function(val) {\n return $scope.pendingCount = val;\n });\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgFooter', function(cogniss, $state, Auth, $translate, OptionsService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/footer/footer.html',\n scope: {},\n link: function($scope) {}\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').factory('FacebookService', function(cogniss, ezfb, $q) {\n 'ngInject';\n var service;\n service = {\n login: function() {\n var deferred;\n deferred = $q.defer();\n ezfb.login(function(response) {\n if (response.authResponse) {\n return cogniss.fbLogin(response.authResponse.accessToken).then(function() {\n return deferred.resolve();\n }, function() {\n return deferred.reject();\n });\n } else {\n\n }\n }, {\n scope: 'email'\n });\n return deferred.promise;\n }\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').filter('displayName', function($q, cogniss, CacheService) {\n 'ngInject';\n var filter;\n filter = function(userId) {\n var cached, deferred, promise;\n cached = CacheService.getItem(userId);\n if (cached) {\n return cached;\n } else {\n deferred = $q.defer();\n cogniss.getUserDetails(userId).then(function(details) {\n var displayName;\n displayName = details.displayName;\n if ((displayName == null) || displayName.length === 0) {\n displayName = userId;\n }\n CacheService.addItem(userId, displayName);\n return deferred.resolve(displayName);\n }, deferred.reject);\n promise = deferred.promise;\n promise.success = function(displayName) {};\n return CacheService.addItem(userId, promise);\n }\n };\n filter.$stateful = true;\n return filter;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('ContentService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n getTemplates: function() {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_LIST_TEMPLATES\", {}).then(function(response) {\n return deferred.resolve(response.scriptData.templates);\n }, deferred.reject);\n return deferred.promise;\n },\n getTemplate: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_GET_TEMPLATE\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.template);\n }, deferred.reject);\n return deferred.promise;\n },\n saveTemplate: function(template) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_CREATE_TEMPLATE\";\n if (template.id != null) {\n event = \"CONTENT_UPDATE_TEMPLATE\";\n }\n cogniss.logEventRequest(event, {\n template: template\n }).then(function(response) {\n return deferred.resolve(response.scriptData.template);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteTemplate: function(template) {\n var deferred, event;\n deferred = $q.defer();\n if (template.id != null) {\n event = \"CONTENT_DELETE_TEMPLATE\";\n }\n cogniss.logEventRequest(event, {\n id: template.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n getSubjects: function(tenant) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_LIST_SUBJECTS\", {\n tenant: tenant.code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.subjects);\n }, deferred.reject);\n return deferred.promise;\n },\n getSubject: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_GET_SUBJECT\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.subject);\n }, deferred.reject);\n return deferred.promise;\n },\n saveSubject: function(subject) {\n var deferred;\n deferred = $q.defer();\n if (subject.id == null) {\n cogniss.logEventRequest(\"CONTENT_CREATE_SUBJECT\", {\n subject: subject\n }).then(function(response) {\n return deferred.resolve(response.scriptData.subject);\n }, deferred.reject);\n } else {\n cogniss.logEventRequest(\"CONTENT_UPDATE_SUBJECT\", {\n subject: subject\n }).then(function(response) {\n return deferred.resolve(response.scriptData.subject);\n }, deferred.reject);\n }\n return deferred.promise;\n },\n deleteSubject: function(subject) {\n var deferred, event;\n deferred = $q.defer();\n if (subject.id != null) {\n event = \"CONTENT_DELETE_SUBJECT\";\n }\n cogniss.logEventRequest(event, {\n id: subject.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n getTopics: function(tenant, subjectId) {\n var deferred;\n if (subjectId == null) {\n subjectId = \"\";\n }\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_LIST_TOPICS\", {\n tenant: tenant.code,\n subject: subjectId\n }).then(function(response) {\n return deferred.resolve(response.scriptData.topics);\n }, deferred.reject);\n return deferred.promise;\n },\n getTopic: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_GET_TOPIC\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.topic);\n }, deferred.reject);\n return deferred.promise;\n },\n saveTopic: function(topic) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_CREATE_TOPIC\";\n if (topic.id != null) {\n event = \"CONTENT_UPDATE_TOPIC\";\n }\n cogniss.logEventRequest(event, {\n topic: topic\n }).then(function(response) {\n return deferred.resolve(response.scriptData.topic);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteTopic: function(topic) {\n var deferred, event;\n deferred = $q.defer();\n if (topic.id != null) {\n event = \"CONTENT_DELETE_TOPIC\";\n }\n cogniss.logEventRequest(event, {\n id: topic.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n getQuestions: function(tenant, topicId) {\n var deferred;\n if (topicId == null) {\n topicId = \"\";\n }\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_LIST_QUESTIONS\", {\n tenant: tenant.code,\n topic: topicId\n }).then(function(response) {\n return deferred.resolve(response.scriptData.questions);\n }, deferred.reject);\n return deferred.promise;\n },\n getQuestion: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_GET_QUESTION\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.question);\n }, deferred.reject);\n return deferred.promise;\n },\n saveQuestion: function(question) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_CREATE_QUESTION\";\n if (question.id != null) {\n event = \"CONTENT_UPDATE_QUESTION\";\n }\n cogniss.logEventRequest(event, {\n question: question\n }).then(function(response) {\n return deferred.resolve(response.scriptData.question);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteQuestion: function(question) {\n var deferred, event;\n deferred = $q.defer();\n if (question.id != null) {\n event = \"CONTENT_DELETE_QUESTION\";\n }\n cogniss.logEventRequest(event, {\n id: question.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n getActivities: function(tenant, template, topic, subject) {\n var deferred, query;\n query = {};\n if (tenant != null) {\n query.tenant = tenant.code;\n }\n if (topic != null) {\n query.topic = topic.id;\n }\n if (template != null) {\n query.template = template.id;\n }\n if (template != null) {\n query.subject = subject.id;\n }\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_LIST_ACTIVITIES\", query).then(function(response) {\n return deferred.resolve(response.scriptData.activities);\n }, deferred.reject);\n return deferred.promise;\n },\n getActivity: function(id) {\n var deferred;\n deferred = $q.defer();\n cogniss.logEventRequest(\"CONTENT_GET_ACTIVITY\", {\n id: id\n }).then(function(response) {\n return deferred.resolve(response.scriptData.activity);\n }, deferred.reject);\n return deferred.promise;\n },\n saveActivity: function(activity) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_CREATE_ACTIVITY\";\n if (activity.id != null) {\n event = \"CONTENT_UPDATE_ACTIVITY\";\n }\n cogniss.logEventRequest(event, {\n activity: activity\n }).then(function(response) {\n return deferred.resolve(response.scriptData.activity);\n }, deferred.reject);\n return deferred.promise;\n },\n deleteActivity: function(activity) {\n var deferred, event;\n deferred = $q.defer();\n if (activity.id != null) {\n event = \"CONTENT_DELETE_ACTIVITY\";\n }\n cogniss.logEventRequest(event, {\n id: activity.id\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n importContent: function(tenant, content) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_IMPORT\";\n cogniss.logEventRequest(event, {\n tenant: tenant.code,\n content: content\n }).then(function(response) {\n return deferred.resolve(response);\n }, deferred.reject);\n return deferred.promise;\n },\n exportContent: function(tenant) {\n var deferred, event;\n deferred = $q.defer();\n event = \"CONTENT_EXPORT\";\n cogniss.logEventRequest(event, {\n tenant: tenant.code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.content);\n }, deferred.reject);\n return deferred.promise;\n },\n orderItem: function(item, list, saveCallback) {\n var index, next, oldOrder, pre;\n index = list.indexOf(item);\n oldOrder = item.order;\n pre = false;\n next = false;\n if (index > 0) {\n pre = list[index - 1];\n }\n if (index < list.length - 1) {\n next = list[index + 1];\n }\n if (pre && next) {\n item.order = pre.order + (next.order - pre.order) / 2;\n } else if (pre) {\n item.order = pre.order + 10000;\n } else if (next) {\n item.order = next.order - 10000;\n }\n if (oldOrder !== item.order) {\n return typeof saveCallback === \"function\" ? saveCallback(item) : void 0;\n }\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('cogniss', function(gamesparksPreview, gamesparksKey, gamesparksSecret, $rootScope, bowser, $localStorage, $window, $uibModal, tenantShortcode, $timeout, $q) {\n 'ngInject';\n var messageDeferred, service;\n messageDeferred = $q.defer();\n service = {\n connected: false,\n pendingCount: 0,\n onMessage: messageDeferred.promise\n };\n service.init = function() {\n var authToken, deferred, gamesparks, onInit, onMessage, onNonce, sessionId;\n deferred = $q.defer();\n gamesparks = new GameSparks();\n service.gs = gamesparks;\n service.pendingCount++;\n window.gamesparks = gamesparks;\n $rootScope.$watch(function() {\n return service.user;\n }, function(val) {\n if (val != null) {\n return service.getUserDetails(service.user.userId).then(function(details) {\n return service.user.details = details;\n }, function(err) {});\n }\n });\n authToken = $localStorage.gsAuthToken;\n sessionId = $localStorage.gsSessionId;\n onNonce = function(nonce) {\n return CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(nonce, gamesparksSecret));\n };\n onInit = function() {\n return service.gs.accountDetailsRequest(function(response) {\n var err;\n err = response.error;\n service.connected = true;\n service.pendingCount--;\n if (err != null) {\n deferred.reject(err);\n } else {\n service._storeTokens();\n service.user = response;\n }\n return $rootScope.$apply();\n });\n };\n onMessage = function(message) {\n console.log(\"gamesparks on message\", message);\n return $rootScope.$apply(function() {\n return messageDeferred.notify(message);\n });\n };\n if (gamesparksPreview) {\n service.gs.initPreview({\n authToken: authToken,\n sessionId: sessionId,\n key: gamesparksKey,\n onNonce: onNonce,\n onInit: onInit,\n onMessage: onMessage\n });\n } else {\n service.gs.initLive({\n authToken: authToken,\n sessionId: sessionId,\n key: gamesparksKey,\n onNonce: onNonce,\n onInit: onInit,\n onMessage: onMessage\n });\n }\n return deferred.promise;\n };\n service.deviceAuthenticationRequest = function() {\n var deferred, deviceId, deviceModel, deviceName, deviceOS, deviceType, operatingSystem;\n deferred = $q.defer();\n service.pendingCount++;\n deviceId = $localStorage.deviceId;\n if (deviceId == null) {\n deviceId = random.alphaNum(32);\n }\n $localStorage.deviceId = deviceId;\n deviceModel = bowser.version;\n deviceName = bowser.name;\n deviceOS = $window.navigator.platform;\n deviceType = \"browser\";\n operatingSystem = $window.navigator.platform;\n service.gs.deviceAuthenticationRequest(deviceId, deviceModel, deviceName, deviceOS, deviceType, operatingSystem, function(response) {\n var err;\n err = response.error;\n service.pendingCount--;\n if (err != null) {\n deferred.reject(err);\n } else {\n deferred.resolve(response);\n }\n return $rootScope.$apply();\n });\n return deferred.promise;\n };\n service.register = function(user, cb) {\n var deferred, request;\n deferred = $q.defer();\n service.pendingCount++;\n request = {\n password: user.password,\n userName: user.userName,\n displayName: user.userName,\n scriptData: {\n playerDetails: {\n email: user.email\n }\n }\n };\n service.gs.sendWithData(\"RegistrationRequest\", request, function(response) {\n var err;\n err = response.error;\n service.pendingCount--;\n if (err != null) {\n deferred.reject(err);\n } else {\n service._storeTokens();\n service.user = response;\n deferred.resolve(response);\n }\n return $rootScope.$apply();\n });\n return deferred.promise;\n };\n service.login = function(user, cb) {\n var deferred, request;\n deferred = $q.defer();\n service.pendingCount++;\n request = {\n password: user.password,\n userName: user.userName\n };\n service.gs.sendWithData(\"AuthenticationRequest\", request, function(response) {\n var err;\n err = response.error;\n service.pendingCount--;\n if (err != null) {\n deferred.reject(err);\n } else {\n service._storeTokens();\n service.user = response;\n deferred.resolve(response);\n }\n return $rootScope.$apply();\n });\n return deferred.promise;\n };\n service.fbLogin = function(token) {\n var deferred;\n deferred = $q.defer();\n service.pendingCount++;\n service.gs.facebookConnectRequest(token, null, function(response) {\n var err;\n err = response.error;\n service.pendingCount--;\n if (err != null) {\n deferred.reject(err);\n } else {\n service._storeTokens();\n service.user = response;\n deferred.resolve(response);\n }\n return $rootScope.$apply();\n });\n return deferred.promise;\n };\n service.logout = function() {\n var deferred;\n deferred = $q.defer();\n $localStorage.gsAuthToken = null;\n $localStorage.gsSessionId = null;\n service.user = null;\n deferred.resolve();\n return deferred.promise;\n };\n service.forgot = function(userNameOrEmail) {\n var deferred;\n deferred = $q.defer();\n service.deviceAuthenticationRequest().then(function() {\n var data;\n data = {\n userNameOrEmail: userNameOrEmail,\n tenant: tenantShortcode\n };\n return service.logEventRequest(\"ACCOUNT_FORGOT_PASSWORD\", data).then(deferred.resolve, deferred.reject);\n });\n return deferred.promise;\n };\n service.reset = function(userId, token, password) {\n var deferred;\n deferred = $q.defer();\n service.deviceAuthenticationRequest().then(function() {\n var data;\n data = {\n token: token,\n player: userId,\n tenant: tenantShortcode,\n password: password\n };\n return service.logEventRequest(\"ACCOUNT_RESET_PASSWORD\", data).then(deferred.resolve, deferred.reject);\n });\n return deferred.promise;\n };\n service.getUserDetails = function(userId, tenant) {\n var deferred, onAuth;\n deferred = $q.defer();\n onAuth = function() {\n var code;\n code = tenantShortcode;\n if (tenant != null) {\n code = tenant.code;\n }\n return service.logEventRequest(\"PROFILE_GET_PLAYER_DETAILS\", {\n tenant: code,\n player: userId\n }).then(function(response) {\n return deferred.resolve(response.scriptData.response);\n }, deferred.reject);\n };\n if (service.user != null) {\n onAuth();\n } else {\n service.deviceAuthenticationRequest().then(onAuth);\n }\n return deferred.promise;\n };\n service.updateUserDetails = function(details) {\n var data, deferred;\n deferred = $q.defer();\n data = {\n details: details\n };\n service.logEventRequest(\"PROFILE_UPDATE_PLAYER_DETAILS\", data).then(function(response) {\n return deferred.resolve(response.scriptData);\n }, deferred.reject);\n return deferred.promise;\n };\n service.getInsightsUsers = function(tenant) {\n var deferred;\n deferred = $q.defer();\n service.logEventRequest(\"INSIGHTS_GET_USERS\", {\n tenant: tenant.code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.users);\n }, deferred.reject);\n return deferred.promise;\n };\n service.addInsightsUser = function(tenant, code) {\n var deferred;\n deferred = $q.defer();\n service.logEventRequest(\"INSIGHTS_ADD_USER\", {\n tenant: tenant.code,\n code: code\n }).then(function(response) {\n return deferred.resolve(response.scriptData.user);\n }, deferred.reject);\n return deferred.promise;\n };\n service.removeInsightsUser = function(tenant, userId) {\n var deferred;\n deferred = $q.defer();\n service.logEventRequest(\"INSIGHTS_REMOVE_USER\", {\n tenant: tenant.code,\n player: userId\n }).then(function(response) {\n return deferred.resolve();\n }, deferred.reject);\n return deferred.promise;\n };\n service.getUploadUrl = function(data) {\n var deferred;\n if (!data) {\n data = {};\n }\n deferred = $q.defer();\n service.gs.getUploadUrlRequest(data, function(res) {\n if (res.error != null) {\n return deferred.reject();\n } else {\n return deferred.resolve(res.url);\n }\n });\n return deferred.promise;\n };\n service.getUploadedUrl = function(uploadId) {\n var deferred;\n deferred = $q.defer();\n service.gs.getUploadedRequest(uploadId, function(res) {\n if (res.error != null) {\n return deferred.reject();\n } else {\n return deferred.resolve(res.url);\n }\n });\n return deferred.promise;\n };\n service._storeTokens = function() {\n $localStorage.gsAuthToken = service.gs.getAuthToken();\n return $localStorage.gsSessionId = service.gs.getSessionId();\n };\n service.logEventRequest = function(key, data) {\n var deferred;\n deferred = $q.defer();\n if (data == null) {\n data = {};\n }\n data = JSON.parse(angular.toJson(data));\n data.eventKey = key;\n service.pendingCount++;\n service.gs.sendWithData(\"LogEventRequest\", data, function(response) {\n return $timeout(function() {\n if (response.error != null) {\n service.pendingCount--;\n return deferred.reject(response.error);\n } else {\n service.pendingCount--;\n return deferred.resolve(response);\n }\n });\n });\n return deferred.promise;\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').factory('CacheService', function() {\n var service;\n service = {\n _cache: {},\n addItem: function(key, item, lifespan) {\n var expires;\n expires = false;\n if (lifespan != null) {\n expires = moment().add(lifespan, \"seconds\");\n }\n return service._cache[key] = {\n item: item,\n expires: expires\n };\n },\n removeItem: function(key) {\n return service._cache[key] = null;\n },\n getItem: function(key) {\n var cache, expired;\n cache = service._cache[key];\n if (cache == null) {\n return;\n }\n expired = false;\n if (cache.expires) {\n expired = moment().isAfter(cache.expires);\n }\n if (expired) {\n service.removeItem(key);\n return;\n }\n return cache.item;\n }\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').service('BehaviorService', function(cogniss, $q) {\n 'ngInject';\n var service;\n return service = {\n getBehaviors: function(tenant, team, playerId, template) {\n var deferred, params;\n deferred = $q.defer();\n params = {};\n if (tenant != null) {\n params.tenant = tenant.code;\n }\n if (team != null) {\n params.teamId = team.id;\n }\n if (playerId != null) {\n params.player = playerId;\n }\n if (template != null) {\n params.template = template ? 1 : 0;\n }\n cogniss.logEventRequest(\"BEHAVIORS_LIST_BEHAVIORS\", params).then(function(response) {\n return deferred.resolve(response.scriptData.behaviors);\n }, deferred.reject);\n return deferred.promise;\n },\n saveBehavior: function(behavior) {\n var deferred, event;\n deferred = $q.defer();\n event = \"BEHAVIORS_CREATE_BEHAVIOR\";\n if (behavior.id != null) {\n event = \"BEHAVIORS_UPDATE_BEHAVIOR\";\n }\n cogniss.logEventRequest(event, {\n behavior: behavior\n }).then(function(response) {\n return deferred.resolve(response.scriptData.behavior);\n }, deferred.reject);\n return deferred.promise;\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgBehaviorInput', function(TriggerTypes, CriteriaTypes, ResultTypes, BehaviorService, Auth) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behaviorinput/behaviorinput.html',\n scope: {\n behavior: \"=\",\n tenant: \"=\",\n team: \"=\",\n playerId: \"=\"\n },\n link: function($scope) {\n var update;\n $scope.$watch(\"tenant\", function(tenant) {\n return update();\n });\n $scope.$watch(\"team\", function(team) {\n return update();\n });\n $scope.$watch(\"playerId\", function(playerId) {\n return update();\n });\n update = function() {\n return Auth.isAdmin().then(function(admin) {\n var doConfig, tenantAdmin;\n tenantAdmin = false;\n doConfig = function() {\n $scope.enabledTriggerTypes = [TriggerTypes.SCHEDULED, TriggerTypes.ACTIVITY_RESPONSE, TriggerTypes.COMPLETE_ACTIVITY, TriggerTypes.QUESTION_RESPONSE];\n $scope.enabledCriteriaTypes = [];\n $scope.enabledResultTypes = [ResultTypes.VIRTUAL_GOOD, ResultTypes.NOTIFICATION, ResultTypes.NEWS];\n if ($scope.tenant) {\n $scope.enabledTriggerTypes = $scope.enabledTriggerTypes.concat([]);\n $scope.enabledCriteriaTypes = $scope.enabledCriteriaTypes.concat([CriteriaTypes.ACTIVITY_RESPONSE, CriteriaTypes.QUESTION_RESPONSE]);\n $scope.enabledResultTypes = $scope.enabledResultTypes.concat([ResultTypes.NOTE]);\n if (tenantAdmin) {\n return $scope.enabledResultTypes = $scope.enabledResultTypes.concat([ResultTypes.VOUCHER, ResultTypes.COINS, ResultTypes.XP]);\n }\n } else {\n $scope.enabledTriggerTypes = $scope.enabledTriggerTypes.concat([TriggerTypes.ADD_FRIEND, TriggerTypes.CREATE_TEAM]);\n return $scope.enabledCriteriaTypes = $scope.enabledCriteriaTypes.concat([CriteriaTypes.ADD_FRIEND]);\n }\n };\n if ($scope.tenant != null) {\n return Auth.isTenantAdmin().then(function(isTenantAdmin) {\n tenantAdmin = isTenantAdmin;\n return doConfig();\n });\n } else {\n return doConfig();\n }\n });\n };\n $scope.criteriaTypes = CriteriaTypes;\n $scope.resultTypes = ResultTypes;\n $scope.$watch(\"behavior\", function(behavior) {\n if (behavior == null) {\n return;\n }\n if (behavior.triggers.length === 0) {\n $scope.addTrigger();\n }\n if (behavior.results.length === 0) {\n return $scope.addResult();\n }\n });\n $scope.addTrigger = function() {\n return $scope.behavior.triggers.push({\n type: null\n });\n };\n $scope.addCriteria = function() {\n return $scope.behavior.criteria.push({\n type: null\n });\n };\n $scope.addResult = function() {\n return $scope.behavior.results.push({\n type: null\n });\n };\n $scope.deleteTrigger = function(trigger) {\n return $scope.behavior.triggers.splice($scope.behavior.triggers.indexOf(trigger), 1);\n };\n $scope.deleteCriteria = function(criteria) {\n return $scope.behavior.criteria.splice($scope.behavior.criteria.indexOf(criteria), 1);\n };\n return $scope.deleteResults = function(result) {\n return $scope.behavior.results.splice($scope.behavior.results.indexOf(result), 1);\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgBehaviorEditor', function(TriggerTypes, CriteriaTypes, ResultTypes, BehaviorService, modalService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/behavioreditor/behavioreditor.html',\n scope: {\n tenant: \"=\",\n team: \"=\",\n playerId: \"=\"\n },\n link: function($scope) {\n var refresh;\n refresh = function() {\n BehaviorService.getBehaviors($scope.tenant, $scope.team, $scope.playerId).then(function(behaviors) {\n return $scope.behaviors = behaviors;\n });\n return BehaviorService.getBehaviors($scope.tenant, null, null, true).then(function(behaviors) {\n return $scope.templateBehaviors = behaviors;\n });\n };\n $scope.$watch(\"tenant\", refresh);\n $scope.$watch(\"team\", refresh);\n $scope.$watch(\"playerId\", refresh);\n $scope.copyBehavior = function() {\n var behavior;\n behavior = angular.copy($scope.selectedBehaviorTemplate);\n $scope.selectedBehaviorTemplate = null;\n if (behavior == null) {\n return;\n }\n delete behavior.id;\n behavior.template = false;\n if ($scope.tenant != null) {\n behavior.tenant = $scope.tenant.code;\n }\n if ($scope.team != null) {\n behavior.teamId = $scope.team.id;\n }\n if ($scope.playerId != null) {\n behavior.playerId = $scope.playerId;\n }\n return $scope.formData = behavior;\n };\n $scope.newBehavior = function() {\n var behavior;\n behavior = {\n name: \"\",\n triggers: [],\n criteria: [],\n results: [],\n open: false,\n recurring: false\n };\n if ($scope.tenant != null) {\n behavior.tenant = $scope.tenant.code;\n }\n if ($scope.team != null) {\n behavior.teamId = $scope.team.id;\n }\n if ($scope.playerId != null) {\n behavior.playerId = $scope.playerId;\n }\n return $scope.formData = behavior;\n };\n $scope.saveBehavior = function() {\n var index;\n index = $scope.behaviors.indexOf($scope.editBehavior);\n $scope.editBehavior = angular.copy($scope.formData);\n console.log(\"saving behavior\", $scope.editBehavior);\n return BehaviorService.saveBehavior($scope.editBehavior).then(function(behavior) {\n if ($scope.editBehavior.id == null) {\n $scope.behaviors.push(behavior);\n $scope.editBehavior = behavior;\n } else {\n $scope.behaviors.splice(index, 1, behavior);\n }\n return $scope.newBehavior();\n });\n };\n $scope.selectBehavior = function(behavior) {\n $scope.editBehavior = behavior;\n return $scope.formData = angular.copy($scope.editBehavior);\n };\n $scope.archiveBehavior = function(behavior) {\n var doArchive;\n doArchive = function() {\n var index;\n index = $scope.behaviors.indexOf(behavior);\n behavior.archived = true;\n BehaviorService.saveBehavior(behavior).then(function(behavior) {\n return $scope.behaviors.splice(index, 1);\n }, function(error) {\n console.log(\"error\", error);\n return modalService.showModal(\"Error\", \"Error archiving behavior\");\n });\n return $scope.newBehavior();\n };\n return modalService.showModal(\"Confirm archiving Behavior\", \"Are you sure you want to archive this behavior?\", true, true, \"Cancel\", doArchive, \"Confirm\");\n };\n return $scope.newBehavior();\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').factory('Auth', function(cogniss, $state, AccessLevels, $q, $rootScope, TenantService, UserService) {\n var service;\n service = {\n _redirectName: null,\n _redirectParams: null,\n redirect: function() {\n var redirectName, redirectParams;\n if (service._redirectName != null) {\n redirectName = service._redirectName;\n redirectParams = service._redirectParams;\n service._redirectName = null;\n service._redirectParams = null;\n return $state.go(redirectName, redirectParams);\n } else {\n return $state.go(\"tenant.users\");\n }\n },\n setRedirect: function(name, params) {\n service._redirectName = name;\n return service._redirectParams = params;\n },\n getUser: function() {\n return cogniss.user;\n },\n logout: function(redirect) {\n cogniss.logout();\n $state.go(\"login\");\n },\n isTenantAdmin: function(tenant) {\n var deferred;\n deferred = $q.defer();\n if (cogniss.user != null) {\n UserService.getUserDetails(cogniss.user.userId, tenant).then(function(details) {\n if (details.tenantDetails.admin) {\n return deferred.resolve(true);\n } else {\n return service.isAdmin().then(function(isAdmin) {\n return deferred.resolve(isAdmin);\n }, deferred.reject);\n }\n }, function() {\n return deferred.reject();\n });\n } else {\n deferred.reject();\n }\n return deferred.promise;\n },\n isAdmin: function() {\n var deferred;\n deferred = $q.defer();\n if (cogniss.user != null) {\n UserService.getUserDetails(cogniss.user.userId).then(function(details) {\n if (details.admin) {\n return deferred.resolve(true);\n } else {\n return deferred.resolve(false);\n }\n }, function() {\n return deferred.reject();\n });\n } else {\n deferred.reject();\n }\n return deferred.promise;\n },\n authorize: function(access, stateParams) {\n var deferred, doCheck, unwatch;\n deferred = $q.defer();\n doCheck = function() {\n var tenantRef;\n if (access === AccessLevels.user) {\n if (cogniss.user != null) {\n return deferred.resolve();\n } else {\n return deferred.reject();\n }\n } else if (access === AccessLevels.admin) {\n return service.isAdmin().then(function(isAdmin) {\n if (isAdmin) {\n return deferred.resolve();\n } else {\n return deferred.reject();\n }\n });\n } else if (access === AccessLevels.tenantAdmin) {\n if (cogniss.user != null) {\n tenantRef = stateParams.tenantRef;\n return TenantService.getTenantByUrlName(tenantRef).then(function(tenant) {\n return service.isTenantAdmin(tenant).then(function(isAdmin) {\n if (isAdmin) {\n return deferred.resolve();\n } else {\n return deferred.reject();\n }\n }, deferred.reject);\n }, deferred.reject);\n } else {\n return deferred.reject();\n }\n } else {\n return deferred.resolve();\n }\n };\n if (cogniss.connected) {\n doCheck();\n } else {\n unwatch = $rootScope.$watch(function() {\n return cogniss.connected;\n }, function(val) {\n if (val) {\n doCheck();\n return unwatch();\n }\n });\n }\n return deferred.promise;\n }\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').factory('Analytics', function($q, TenantService) {\n var service;\n service = {\n trackerByTenant: {},\n init: function(code, callback) {\n var deferred;\n deferred = $q.defer();\n (function(i, s, o, g, r, a, m) {\n i[\"GoogleAnalyticsObject\"] = r;\n i[r] = i[r] || function() {\n (i[r].q = i[r].q || []).push(arguments);\n };\n i[r].l = 1 * new Date();\n a = s.createElement(o);\n m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n m.parentNode.insertBefore(a, m);\n })(window, document, \"script\", \"//www.google-analytics.com/analytics.js\", \"ga\");\n ga(\"create\", code, \"auto\");\n ga(function(tracker) {\n var clientId;\n clientId = tracker.get('clientId');\n return service.clientId = clientId;\n });\n deferred.resolve();\n if (callback) {\n deferred.promise.then(callback());\n }\n return deferred.promise;\n },\n getTenantTracker: function(tenant) {\n if (service.trackerByTenant[tenant.code] != null) {\n return tenant.code;\n }\n if (tenant.gaCode == null) {\n return false;\n }\n if (tenant.gaCode != null) {\n ga(\"create\", tenant.gaCode, \"auto\", tenant.code);\n service.trackerByTenant[tenant.code] = tenant.code;\n return tenant.code;\n } else {\n return false;\n }\n },\n trackPageview: function(path) {\n var tracker;\n ga(\"send\", \"pageview\", path);\n if (TenantService.tenant != null) {\n tracker = service.getTenantTracker(TenantService.tenant);\n if (tracker) {\n return ga(tracker + \".send\", \"pageview\", path);\n }\n }\n },\n trackEvent: function(category, action, label, value, nonInteraction) {\n var tracker;\n ga('send', 'event', category, action, label, value, nonInteraction);\n if (TenantService.tenant != null) {\n tracker = service.getTenantTracker(TenantService.tenant);\n if (tracker) {\n return ga('#{tracker}.send', 'event', category, action, label, value, nonInteraction);\n }\n }\n }\n };\n return service;\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').directive('cgActivityHistory', function(TenantService, $state, ProgressService) {\n 'ngInject';\n var directive;\n return directive = {\n restrict: 'A',\n templateUrl: 'app/components/activityhistory/activityhistory.html',\n scope: {\n tenant: \"=\",\n playerId: \"=?\",\n playerIds: \"=?\",\n subject: \"=\"\n },\n link: function($scope) {\n var noSubject, pending, update;\n pending = false;\n $scope.limit = 10;\n $scope.skip = 0;\n $scope.max = 0;\n noSubject = {\n name: \"Subject\"\n };\n $scope.selectedSubject = noSubject;\n $scope.startDateOptions = {\n showWeeks: false\n };\n $scope.endDateOptions = {\n showWeeks: false\n };\n update = function() {\n var end, start, subject;\n if ($scope.tenant == null) {\n return;\n }\n if ($scope.playerIds == null) {\n return;\n }\n if (pending) {\n return;\n }\n start = $scope.start;\n end = $scope.end;\n if (end != null) {\n end = moment(end);\n end.add(23, 'h');\n end.add(59, 'm');\n end.add(59, 's');\n end = end.toDate();\n }\n pending = true;\n subject = $scope.selectedSubject;\n if (subject && (subject.id == null)) {\n subject = null;\n }\n return ProgressService.getUserActivityResponses($scope.playerIds, $scope.tenant, subject, $scope.selectedTopic, $scope.start, end, $scope.skip, $scope.limit).then(function(data) {\n $scope.max = data.count;\n $scope.activityResponses = data.responses;\n return pending = false;\n });\n };\n $scope.$watch(\"tenant\", function(val) {\n if ($scope.tenant == null) {\n return;\n }\n return TenantService.getContent($scope.tenant).then(function(content) {\n var filterSubjects;\n filterSubjects = _.clone(content.subjects);\n filterSubjects.splice(0, 0, noSubject);\n $scope.subjects = filterSubjects;\n return update();\n });\n });\n $scope.$watch(\"playerId\", function(val) {\n if (val != null) {\n return $scope.playerIds = [val];\n }\n });\n $scope.$watch(\"playerIds\", function(val) {\n if (val != null) {\n return update();\n }\n });\n $scope.$watch(\"subject\", function(val) {\n if (val == null) {\n return;\n }\n pending = false;\n $scope.selectedSubject = val;\n return update();\n });\n $scope.$watch(\"selectedSubject\", update);\n $scope.$watch(\"start\", update);\n $scope.$watch(\"end\", update);\n $scope.$watch(\"skip\", update);\n return $scope.selectActivityResponse = function(response) {\n return $state.go(\"tenant.user.response\", {\n tenantRef: $scope.tenant.urlName,\n userId: response.playerId,\n responseId: response.id\n });\n };\n }\n };\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').run(function($log, cogniss, $rootScope, $state, fbAppId, ezfb, $window, Analytics, Auth, gaCode, TenantService, modalService, OptionsService, html5Mode) {\n 'ngInject';\n cogniss.init();\n ezfb.init({\n appId: fbAppId\n });\n $rootScope.$watch(function() {\n return cogniss.connected;\n }, function(val) {\n return $rootScope.connected = val;\n });\n $rootScope.$watch(function() {\n return OptionsService.showSidebar;\n }, function(val) {\n return $rootScope.showSidebar = val;\n });\n Analytics.init(gaCode);\n $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {\n var checkAuth, checkConnected, checkTenant, continueNavigation, doLogout;\n if (fromParams.fromAsync) {\n return;\n }\n event.preventDefault();\n doLogout = function(toStateName, toParams) {\n Auth.setRedirect(toStateName, toParams);\n return Auth.logout();\n };\n checkConnected = function() {\n var watcher;\n if (cogniss.connected) {\n return checkTenant();\n } else {\n return watcher = $rootScope.$watch(function() {\n return cogniss.connected;\n }, function(val) {\n if (val) {\n return checkTenant();\n }\n });\n }\n };\n checkTenant = function() {\n if (toParams.tenantRef) {\n if (toParams.tenantRef.length > 0) {\n return TenantService.getTenantByUrlName(toParams.tenantRef).then(function(tenant) {\n TenantService.tenant = tenant;\n return checkAuth();\n }, function(err) {\n return doLogout(toState.name, toParams);\n });\n } else {\n return TenantService.getDefaultTenant().then(function(tenant) {\n TenantService.tenant = tenant;\n return checkAuth();\n });\n }\n } else {\n TenantService.tenant = null;\n TenantService.getTenants();\n return checkAuth();\n }\n };\n checkAuth = function() {\n return Auth.authorize(toState.data.access, toParams).then(function() {\n return continueNavigation();\n }, function() {\n return doLogout(toState.name, toParams);\n });\n };\n continueNavigation = function() {\n fromParams.fromAsync = true;\n return $state.go(toState.name, toParams);\n };\n return checkConnected();\n });\n return $rootScope.$on(\"$stateChangeSuccess\", function(event, toState, toParams, fromState, fromParams) {\n var url;\n url = toState.url;\n if (!html5Mode) {\n url = $window.location.hash.split(\"#!\").join(\"\");\n }\n Analytics.trackPageview(url);\n return $window.scrollTo(0, 0);\n });\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').config(function($stateProvider, $urlRouterProvider, AccessLevels) {\n 'ngInject';\n var createScreen;\n createScreen = function(name, route, access, template, resolve) {\n var controllerName, stateConfig;\n if (access == null) {\n access = AccessLevels.anon;\n }\n controllerName = name + \"Controller\";\n controllerName = _.upperFirst(controllerName);\n if (template == null) {\n template = \"app/screens/\" + name + \"/\" + name + \".html\";\n }\n if (route == null) {\n route = \"/\" + name;\n }\n stateConfig = {\n url: route,\n templateUrl: template,\n controller: controllerName,\n data: {\n access: access\n },\n resolve: resolve\n };\n return $stateProvider.state(name, stateConfig);\n };\n createScreen('forgot');\n createScreen('login', '/');\n createScreen('register');\n createScreen('reset', '/reset?user&users&token');\n $stateProvider.state('tenant', {\n url: '/app/:tenantRef',\n templateUrl: \"app/screens/tenant/tenant.html\",\n controller: \"TenantController\",\n abstract: true,\n data: {\n access: AccessLevels.user\n },\n resolve: {\n tenant: function($stateParams, TenantService) {\n var tenant, tenantRef;\n tenantRef = $stateParams.tenantRef;\n if ((tenantRef != null) && tenantRef.length > 0) {\n tenant = TenantService.getTenantByUrlName(tenantRef);\n } else {\n tenant = TenantService.getDefaultTenant();\n }\n return tenant;\n }\n }\n }).state('tenant.users', {\n url: \"\",\n templateUrl: \"app/screens/tenant/users/users.html\",\n controller: \"TenantUsersController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.user', {\n url: \"/user/:userId\",\n templateUrl: \"app/screens/tenant/user/user.html\",\n controller: \"TenantUserController\",\n abstract: true,\n data: {\n access: AccessLevels.user\n },\n resolve: {\n userDetails: function($stateParams, UserService, tenant) {\n var details, userId;\n userId = $stateParams.userId;\n details = UserService.getUserDetails(userId, tenant);\n return details;\n }\n }\n }).state('tenant.user.overview', {\n url: \"\",\n templateUrl: \"app/screens/tenant/user/overview/overview.html\",\n controller: \"TenantUserOverviewController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.user.subject', {\n url: \"/subject/:subjectId\",\n templateUrl: \"app/screens/tenant/user/subject/subject.html\",\n controller: \"TenantUserSubjectController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n subjectId: function($stateParams, TenantService, tenant, $q) {\n var subjectId;\n subjectId = $stateParams.subjectId;\n return subjectId;\n }\n }\n }).state('tenant.user.response', {\n url: \"/response/:responseId\",\n templateUrl: \"app/screens/tenant/user/response/response.html\",\n controller: \"TenantUserResponseController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n responseId: function($stateParams, TenantService, tenant, $q) {\n var responseId;\n responseId = $stateParams.responseId;\n return responseId;\n }\n }\n }).state('tenant.teams', {\n url: \"/teams\",\n templateUrl: \"app/screens/tenant/teams/teams.html\",\n controller: \"TenantTeamsController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.team', {\n url: \"/teams/:teamId\",\n templateUrl: \"app/screens/tenant/team/team.html\",\n controller: \"TenantTeamController\",\n abstract: true,\n data: {\n access: AccessLevels.user\n },\n resolve: {\n team: function($stateParams, TeamService, tenant) {\n var details, teamId;\n teamId = $stateParams.teamId;\n details = TeamService.getTeam(teamId, tenant);\n return details;\n }\n }\n }).state('tenant.team.overview', {\n url: \"\",\n templateUrl: \"app/screens/tenant/team/overview/overview.html\",\n controller: \"TenantTeamOverviewController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.team.subject', {\n url: \"/subject/:subjectId\",\n templateUrl: \"app/screens/tenant/team/subject/subject.html\",\n controller: \"TenantTeamSubjectController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n subjectId: function($stateParams, TenantService, tenant, $q) {\n var subjectId;\n subjectId = $stateParams.subjectId;\n return subjectId;\n }\n }\n }).state('tenant.team.behaviors', {\n url: \"/behaviors\",\n templateUrl: \"app/screens/tenant/team/behaviors/behaviors.html\",\n controller: \"TenantTeamBehaviorsController\",\n data: {\n access: AccessLevels.teamAdmin\n }\n }).state('tenant.subjects', {\n url: \"/subjects\",\n templateUrl: \"app/screens/tenant/subjects/subjects.html\",\n controller: \"TenantSubjectsController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.content', {\n abstract: true,\n url: \"/content\",\n templateUrl: \"app/screens/tenant/content/content.html\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.content.subjects', {\n url: \"/\",\n templateUrl: \"app/screens/tenant/content/subjects/subjects.html\",\n controller: \"TenantContentSubjectsController\",\n data: {\n access: AccessLevels.user\n }\n }).state('tenant.content.subject', {\n url: \"/subject/:subjectId\",\n templateUrl: \"app/screens/tenant/content/subject/subject.html\",\n controller: \"TenantContentSubjectController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n subjectId: function($stateParams, TenantService, tenant, $q) {\n var subjectId;\n subjectId = $stateParams.subjectId;\n return subjectId;\n }\n }\n }).state('tenant.content.activity', {\n url: \"/activity/:activityId\",\n templateUrl: \"app/screens/tenant/content/activity/activity.html\",\n controller: \"TenantContentActivityController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n activityId: function($stateParams, TenantService, tenant, $q) {\n var activityId;\n activityId = $stateParams.activityId;\n return activityId;\n }\n }\n }).state('tenant.admin', {\n abstract: true,\n url: \"/admin\",\n templateUrl: \"app/screens/tenant/admin/admin.html\",\n controller: \"TenantAdminController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.users', {\n url: \"\",\n templateUrl: \"app/screens/tenant/admin/users/users.html\",\n controller: \"TenantAdminUsersController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.vouchers', {\n url: \"/vouchers\",\n templateUrl: \"app/screens/tenant/admin/vouchers/vouchers.html\",\n controller: \"TenantAdminVouchersController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.behaviors', {\n url: \"/behaviors\",\n templateUrl: \"app/screens/tenant/admin/behaviors/behaviors.html\",\n controller: \"TenantAdminBehaviorsController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.leaderboards', {\n url: \"/leaderboards\",\n templateUrl: \"app/screens/tenant/admin/leaderboards/leaderboards.html\",\n controller: \"TenantAdminLeaderboardsController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content', {\n abstract: true,\n url: \"/content\",\n templateUrl: \"app/screens/tenant/admin/content/content.html\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.overview', {\n url: \"/overview\",\n templateUrl: \"app/screens/tenant/admin/content/overview/overview.html\",\n controller: \"TenantAdminContentOverviewController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.subjects', {\n url: \"/subjects\",\n templateUrl: \"app/screens/tenant/admin/content/subjects/subjects.html\",\n controller: \"TenantAdminSubjectsController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.subject', {\n abstract: true,\n url: \"/subjects/:subjectId\",\n templateUrl: \"app/screens/tenant/admin/content/subject/subject.html\",\n controller: \"TenantAdminSubjectController\",\n resolve: {\n subject: function($stateParams, ContentService) {\n var subjectId;\n subjectId = $stateParams.subjectId;\n return ContentService.getSubject(subjectId);\n }\n },\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.subject.topics', {\n url: \"/topics\",\n templateUrl: \"app/screens/tenant/admin/content/topics/topics.html\",\n controller: \"TenantAdminTopicsController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.subject.activities', {\n url: \"/activities\",\n templateUrl: \"app/screens/tenant/admin/content/activities/activities.html\",\n controller: \"TenantAdminActivitiesController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.topic', {\n abstract: true,\n url: \"/topics/:topicId\",\n templateUrl: \"app/screens/tenant/admin/content/topic/topic.html\",\n controller: \"TenantAdminTopicController\",\n resolve: {\n topic: function($stateParams, ContentService) {\n var topicId;\n topicId = $stateParams.topicId;\n return ContentService.getTopic(topicId);\n }\n },\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.topic.questions', {\n url: \"/questions\",\n templateUrl: \"app/screens/tenant/admin/content/questions/questions.html\",\n controller: \"TenantAdminQuestionsController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('tenant.admin.content.topic.activities', {\n url: \"/activities\",\n templateUrl: \"app/screens/tenant/admin/content/activities/activities.html\",\n controller: \"TenantAdminActivitiesController\",\n data: {\n access: AccessLevels.tenantAdmin\n }\n }).state('teams', {\n url: \"/teams\",\n abstract: true,\n templateUrl: \"app/screens/teams/teams.html\",\n controller: \"TeamsController\",\n data: {\n access: AccessLevels.user\n }\n }).state('teams.overview', {\n url: \"\",\n templateUrl: \"app/screens/teams/overview/overview.html\",\n controller: \"TeamsOverviewController\",\n data: {\n access: AccessLevels.user\n }\n }).state('teams.team', {\n url: \"/team/:teamId\",\n templateUrl: \"app/screens/teams/team/team.html\",\n controller: \"TeamsTeamController\",\n data: {\n access: AccessLevels.user\n },\n resolve: {\n team: function($stateParams, TeamService) {\n var team, teamId;\n teamId = $stateParams.teamId;\n team = TeamService.getTeam(teamId);\n return team;\n }\n }\n }).state('admin', {\n url: \"/admin\",\n abstract: true,\n templateUrl: \"app/screens/admin/admin.html\",\n controller: \"AdminController\",\n data: {\n access: AccessLevels.admin\n }\n }).state('admin.templates', {\n url: \"\",\n templateUrl: \"app/screens/admin/templates/templates.html\",\n controller: \"AdminTemplatesController\",\n data: {\n access: AccessLevels.admin\n }\n }).state('admin.tenants', {\n url: \"/tenants\",\n templateUrl: \"app/screens/admin/tenants/tenants.html\",\n controller: \"AdminTenantsController\",\n data: {\n access: AccessLevels.admin\n }\n }).state('admin.behaviors', {\n url: \"/behaviors\",\n templateUrl: \"app/screens/admin/behaviors/behaviors.html\",\n controller: \"AdminBehaviorsController\",\n data: {\n access: AccessLevels.admin\n }\n });\n return $urlRouterProvider.otherwise('/');\n });\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').constant('gamesparksPreview', false).constant('gamesparksKey', '292003BKwVoF').constant('gamesparksSecret', 'hrZwvY95Zrh8lLk0BmaFLBB0oXuG5r3s').constant('fbAppId', '336822373342250').constant('tenantShortcode', 'COGNISS').constant('AccessLevels', {\n user: \"user\",\n admin: \"admin\",\n tenantAdmin: \"tenantAdmin\",\n teamAdmin: \"teamAdmin\",\n anon: \"anon\"\n }).constant('gaCode', 'UA-89044603-1').constant('html5Mode', true).constant('QuestionTypes', {\n MULTICHOICE: \"MULTICHOICE\",\n FILL_BLANKS: \"FILL_BLANKS\",\n EQUATION: \"EQUATION\",\n TEXT_RANGE: \"TEXT_RANGE\",\n IMAGE_RESPONSE: \"IMAGE_RESPONSE\",\n AUDIO_RESPONSE: \"AUDIO_RESPONSE\",\n CATEGORISATION: \"CATEGORISATION\",\n TEMPLATE_INTERPRETED: \"TEMPLATE_INTERPRETED\"\n }).constant('TopicTypes', {\n LEARNING: \"LEARNING\",\n PLACEMENT: \"PLACEMENT\",\n PRACTICE: \"PRACTICE\",\n ASSESSMENT: \"ASSESSMENT\",\n SURVEY: \"SURVEY\",\n SCORED_SURVEY: \"SCORED_SURVEY\"\n }).constant('NoteTypes', {\n NOTE: \"NOTE\",\n PHONE_CALL: \"PHONE_CALL\",\n EMAIL: \"EMAIL\",\n FOLLOW_UP: \"FOLLOW_UP\"\n }).constant('TriggerTypes', {\n ACTIVITY_RESPONSE: \"ACTIVITY_RESPONSE\",\n COMPLETE_ACTIVITY: \"COMPLETE_ACTIVITY\",\n QUESTION_RESPONSE: \"QUESTION_RESPONSE\",\n SCHEDULED: \"SCHEDULED\",\n ADD_FRIEND: \"ADD_FRIEND\",\n CREATE_TEAM: \"CREATE_TEAM\"\n }).constant('CriteriaTypes', {\n ACTIVITY_RESPONSE: \"ACTIVITY_RESPONSE\",\n QUESTION_RESPONSE: \"QUESTION_RESPONSE\",\n ADD_FRIEND: \"ADD_FRIEND\"\n }).constant('ResultTypes', {\n VOUCHER: \"VOUCHER\",\n VIRTUAL_GOOD: \"VIRTUAL_GOOD\",\n COINS: \"COINS\",\n XP: \"XP\",\n NOTIFICATION: \"NOTIFICATION\",\n NEWS: \"NEWS\",\n NOTE: \"NOTE\"\n }).constant('gaCode', 'UA-90415165-4').constant('html5Mode', false);\n\n}).call(this);\n\n\n\n(function() {\n angular.module('cogniss').config(function($logProvider, $translateProvider, $locationProvider, html5Mode, tagsInputConfigProvider) {\n 'ngInject';\n var absUrl, redirect;\n console.log(\"window.location\", window.location);\n absUrl = window.location.href;\n if (absUrl.indexOf(\"/#/reset\") > -1) {\n redirect = absUrl.split(\"/#/reset\").join(\"/reset\");\n window.location.href = redirect;\n return;\n }\n $logProvider.debugEnabled(true);\n $locationProvider.html5Mode({\n enabled: html5Mode,\n requireBase: html5Mode\n });\n $translateProvider.useStaticFilesLoader({\n prefix: 'assets/languages/',\n suffix: '.json'\n });\n $translateProvider.preferredLanguage('en');\n $translateProvider.useSanitizeValueStrategy('sanitize');\n $translateProvider.useMissingTranslationHandlerLog();\n return tagsInputConfigProvider.setDefaults('tagsInput', {\n replaceSpacesWithDashes: false\n });\n });\n\n}).call(this);\n\n\n\n/*\r\nCryptoJS v3.1.2\r\ncode.google.com/p/crypto-js\r\n(c) 2009-2013 by Jeff Mott. All rights reserved.\r\ncode.google.com/p/crypto-js/wiki/License\r\n*/\r\nvar CryptoJS=CryptoJS||function(h,s){var f={},g=f.lib={},q=function(){},m=g.Base={extend:function(a){q.prototype=this;var c=new q;a&&c.mixIn(a);c.hasOwnProperty(\"init\")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(\"toString\")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},\r\nr=g.WordArray=m.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=s?c:4*a.length},toString:function(a){return(a||k).stringify(this)},concat:function(a){var c=this.words,d=a.words,b=this.sigBytes;a=a.sigBytes;this.clamp();if(b%4)for(var e=0;e>>2]|=(d[e>>>2]>>>24-8*(e%4)&255)<<24-8*((b+e)%4);else if(65535>>2]=d[e>>>2];else c.push.apply(c,d);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<\r\n32-8*(c%4);a.length=h.ceil(c/4)},clone:function(){var a=m.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],d=0;d>>2]>>>24-8*(b%4)&255;d.push((e>>>4).toString(16));d.push((e&15).toString(16))}return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b>>3]|=parseInt(a.substr(b,\r\n2),16)<<24-4*(b%8);return new r.init(d,c/2)}},n=l.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var d=[],b=0;b>>2]>>>24-8*(b%4)&255));return d.join(\"\")},parse:function(a){for(var c=a.length,d=[],b=0;b>>2]|=(a.charCodeAt(b)&255)<<24-8*(b%4);return new r.init(d,c)}},j=l.Utf8={stringify:function(a){try{return decodeURIComponent(escape(n.stringify(a)))}catch(c){throw Error(\"Malformed UTF-8 data\");}},parse:function(a){return n.parse(unescape(encodeURIComponent(a)))}},\r\nu=g.BufferedBlockAlgorithm=m.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){\"string\"==typeof a&&(a=j.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,d=c.words,b=c.sigBytes,e=this.blockSize,f=b/(4*e),f=a?h.ceil(f):h.max((f|0)-this._minBufferSize,0);a=f*e;b=h.min(4*a,b);if(a){for(var g=0;gn;){var j;a:{j=k;for(var u=h.sqrt(j),t=2;t<=u;t++)if(!(j%t)){j=!1;break a}j=!0}j&&(8>n&&(m[n]=l(h.pow(k,0.5))),r[n]=l(h.pow(k,1/3)),n++);k++}var a=[],f=f.SHA256=q.extend({_doReset:function(){this._hash=new g.init(m.slice(0))},_doProcessBlock:function(c,d){for(var b=this._hash.words,e=b[0],f=b[1],g=b[2],j=b[3],h=b[4],m=b[5],n=b[6],q=b[7],p=0;64>p;p++){if(16>p)a[p]=\r\nc[d+p]|0;else{var k=a[p-15],l=a[p-2];a[p]=((k<<25|k>>>7)^(k<<14|k>>>18)^k>>>3)+a[p-7]+((l<<15|l>>>17)^(l<<13|l>>>19)^l>>>10)+a[p-16]}k=q+((h<<26|h>>>6)^(h<<21|h>>>11)^(h<<7|h>>>25))+(h&m^~h&n)+r[p]+a[p];l=((e<<30|e>>>2)^(e<<19|e>>>13)^(e<<10|e>>>22))+(e&f^e&g^f&g);q=n;n=m;m=h;h=j+k|0;j=g;g=f;f=e;e=k+l|0}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+g|0;b[3]=b[3]+j|0;b[4]=b[4]+h|0;b[5]=b[5]+m|0;b[6]=b[6]+n|0;b[7]=b[7]+q|0},_doFinalize:function(){var a=this._data,d=a.words,b=8*this._nDataBytes,e=8*a.sigBytes;\r\nd[e>>>5]|=128<<24-e%32;d[(e+64>>>9<<4)+14]=h.floor(b/4294967296);d[(e+64>>>9<<4)+15]=b;a.sigBytes=4*d.length;this._process();return this._hash},clone:function(){var a=q.clone.call(this);a._hash=this._hash.clone();return a}});s.SHA256=q._createHelper(f);s.HmacSHA256=q._createHmacHelper(f)})(Math);\r\n(function(){var h=CryptoJS,s=h.enc.Utf8;h.algo.HMAC=h.lib.Base.extend({init:function(f,g){f=this._hasher=new f.init;\"string\"==typeof g&&(g=s.parse(g));var h=f.blockSize,m=4*h;g.sigBytes>m&&(g=f.finalize(g));g.clamp();for(var r=this._oKey=g.clone(),l=this._iKey=g.clone(),k=r.words,n=l.words,j=0;j>>2]>>>24-8*(a%4)&255)<<16|(e[a+1>>>2]>>>24-8*((a+1)%4)&255)<<8|e[a+2>>>2]>>>24-8*((a+2)%4)&255,g=0;4>g&&a+0.75*g>>6*(3-g)&63));if(e=c.charAt(64))for(;b.length%4;)b.push(e);return b.join(\"\")},parse:function(b){var b=b.replace(/\\s/g,\"\"),e=b.length,f=this._map,c=f.charAt(64);c&&(c=b.indexOf(c),-1!=c&&(e=c));\r\nfor(var c=[],a=0,d=0;d>>6-2*(d%4);c[a>>>2]|=(g|h)<<24-8*(a%4);a++}return i.create(c,a)},_map:\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"}})();\nGameSparks = function() {\r\n\r\n\tvar appSecret;\r\n\t\r\n\tvar socketUrl;\r\n\tvar lbUrl;\r\n\t\r\n\tvar authToken;\r\n\tvar sessionId;\r\n\r\n\tvar initialised = false;\r\n\tvar connected;\r\n\tvar error;\r\n\tvar closing;\r\n\t\r\n\tvar initCallback;\r\n\tvar messageCallback;\r\n\tvar errorCallback;\r\n\r\n\tvar nonceCallback;\r\n\t\r\n\tvar pendingRequests = {};\r\n\t\r\n\tvar webSocket;\r\n\t\r\n\tvar requestCounter = 0;\r\n\t\r\n\tthis.getSessionId = function(){\r\n\t\treturn sessionId;\r\n\t}\r\n \r\n this.getAuthToken = function(){\r\n return authToken;\r\n }\r\n\t\r\n\tthis.isInitialised = function(){\r\n\t\treturn initialised;\r\n\t}\r\n\t\r\n\tthis.initPreview = function(options){\r\n\t\toptions.url = \"wss://preview.gamesparks.net/ws/\" + options.key;\r\n\t\tthis.init(options);\r\n\t}\r\n\r\n\tthis.initLive = function(options){\r\n\t\toptions.url = \"wss://service.gamesparks.net/ws/\" + options.key;\r\n\t\tthis.init(options);\r\n\t}\r\n\t\r\n\tthis.init = function(options) {\r\n\t\tsocketUrl = options.url;\r\n\t\tlbUrl = options.url;\r\n\t\tappSecret = options.secret;\r\n\t\tinitCallback = options.onInit;\r\n\t\tmessageCallback = options.onMessage;\r\n\t\terrorCallback = options.onError;\r\n\t\tnonceCallback = options.onNonce;\r\n authToken = options.authToken;\r\n sessionId = options.sessionId;\r\n\t\t\r\n\t\tinitialised = false;\r\n\t\tconnected = false;\r\n\t\terror = false;\r\n\t\tclosing = false;\r\n\t\tcleanup();\r\n\t\tconnect();\r\n\t};\r\n\t\r\n\tthis.send = function(requestType, onResponse){\r\n\t\tthis.sendWithData(requestType, {}, onResponse);\r\n\t};\r\n\t\r\n\tthis.sendWithData = function(requestType, json, onResponse){\r\n\t\t\r\n\t\tif(!initialised){\r\n\t\t\tonResponse({error:\"NOT_INITIALISED\"});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(requestType.indexOf('.') !== 0){\r\n\t\t\trequestType = \".\"+requestType;\r\n\t\t}\r\n\t\tjson[\"@class\"] = requestType;\r\n\t\t\r\n\t\tjson.requestId = (new Date()).getTime() + \"_\" + (++requestCounter);\r\n\r\n\t\tif(onResponse != null){\r\n\t\t\tpendingRequests[json.requestId] = onResponse;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(pendingRequests[json.requestId]){\r\n\t\t\t\t\tpendingRequests[json.requestId]({error:\"NO_RESPONSE\"});\r\n\t\t\t\t}\r\n\t\t\t}, 32000);\r\n\t\t}\r\n\t\t\r\n\t\tvar requestString = JSON.stringify(json);\r\n\t\tconsole.log(\"WebSocket send: \" + requestString);\r\n\t\twebSocket.send(requestString);\r\n\t};\r\n\t\r\n\tfunction cleanup(){\r\n\t\tif(webSocket != null){\r\n\t\t\twebSocket.onclose = null;\r\n\t\t\twebSocket.close();\r\n\t\t}\r\n\t}\r\n\t\r\n\tvar keepAliveId;\r\n\r\n\tfunction keepAlive(){\r\n\t\tif(initialised && connected){\r\n\t\t\twebSocket.send(\" \");\r\n\t\t}\r\n\t\tkeepAliveId = setTimeout(keepAlive, 30000);\r\n\t}\r\n\r\n\tfunction getWebSocket(location) {\r\n\t\tif (window.WebSocket) {\r\n\t\t\treturn new WebSocket(location);\r\n\t\t} else {\r\n\t\t\treturn new MozWebSocket(location);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction connect() {\r\n\t\ttry{\r\n\t\t\twebSocket = getWebSocket(socketUrl);\r\n\t\t\twebSocket.onopen = onWebSocketOpen;\r\n\t\t\twebSocket.onclose = onWebSocketClose;\r\n\t\t\twebSocket.onerror = onWebSocketError;\r\n\t\t\twebSocket.onmessage = onWebSocketMessage;\r\n\t\t}catch(e){}\r\n\t}\r\n\r\n\tfunction onWebSocketError() {\r\n\t\tsocketUrl = lbUrl;\r\n\t\tconsole.log('WebSocket onError: Sorry, but there is some problem with your socket or the server is down');\r\n\t\tif(errorCallback){\r\n\t\t\terrorCallback();\r\n\t\t}\r\n\t\terror = true;\r\n\t}\r\n\r\n\tfunction onWebSocketClose(closeEvent) {\r\n\t\tconnected = false;\r\n\t\tconsole.log('WebSocket onClose executed ');\r\n\t\tif (!error) {\r\n\t\t\tconnect();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction onWebSocketOpen(openEvent) {\r\n\t\tconnected = true;\r\n\t\tconsole.log('WebSocket onOpen: Connected ' + openEvent);\r\n\t}\r\n\r\n\tfunction onWebSocketMessage(message) {\r\n\t\t\r\n\t\tvar messageData = message.data;\r\n\t\t\r\n\t\tconsole.log('WebSocket onMessage: ' + messageData);\r\n\t\t\r\n\t\tvar result;\r\n\t\t\r\n\t\ttry {\r\n\t\t\tresult = JSON.parse(messageData);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"An error ocurred while parsing the JSON Data: \"\r\n\t\t\t\t\t+ message + \"; Error: \" + e);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (result['authToken']) {\r\n\t\t\tauthToken = result['authToken'];\r\n\t\t\tdelete result['authToken'];\r\n\t\t}\r\n\r\n\t\tvar resultType = result['@class'];\r\n\r\n\t\tif (resultType == \".AuthenticatedConnectResponse\") {\r\n\t\t\thandshake(result);\r\n\t\t} else if (resultType.match(/Response$/)){\r\n\t\t\tif(result[\"requestId\"]){\r\n\t\t\t\tvar requestId = result[\"requestId\"];\r\n\t\t\t\tdelete result[\"requestId\"];\r\n\t\t\t\tif(pendingRequests[requestId]){\r\n\t\t\t\t\tpendingRequests[requestId](result);\r\n\t\t\t\t\tpendingRequests[requestId] = null;\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tmessageCallback(result);\r\n\t\t};\r\n\r\n\t}\r\n\t\r\n\tfunction handshake(result){\r\n\t\t\r\n\t\tif (result['connectUrl']) {\r\n\t\t\tsocketUrl = result['connectUrl'];\r\n\t\t\treturn;\r\n\t\t} else if (result['nonce']) {\r\n\t\t\t\r\n\t\t\tvar hmac;\r\n\r\n\t\t\tif(nonceCallback != null){\r\n\t\t\t\thmac = nonceCallback(result['nonce']);\r\n\t\t\t} else {\r\n\t\t\t\thmac = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(result['nonce'], appSecret));\r\n\t\t\t}\r\n\r\n\t\t\tvar toSend = {\r\n\t\t\t\t\"@class\" : \".AuthenticatedConnectRequest\",\r\n\t\t\t\thmac : hmac\r\n\t\t\t};\r\n\r\n\t\t\tif (authToken) {\r\n\t\t\t\ttoSend.authToken = authToken;\r\n\t\t\t}\r\n\r\n\t\t\tif (sessionId) {\r\n\t\t\t\ttoSend.sessionId = sessionId;\r\n\t\t\t}\r\n\r\n\t\t\ttoSend.platform = BrowserDetect.browser;\r\n\t\t\ttoSend.os = BrowserDetect.OS;\r\n\t\t\twebSocket.send(JSON.stringify(toSend));\r\n\t\t\treturn;\r\n\t\t} else if (result['sessionId']) {\r\n\t\t\tsessionId = result['sessionId'];\r\n\t\t\tinitialised = true;\r\n\t\t\tif(initCallback){\r\n\t\t\t\tinitCallback();\r\n\t\t\t}\r\n\t\t\tkeepAliveId = setTimeout(keepAlive, 30000);\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\n\r\nvar BrowserDetect = {\r\n\t\tinit: function () {\r\n\t\t\tthis.browser = this.searchString(this.dataBrowser) || \"An unknown browser\";\r\n\t\t\tthis.version = this.searchVersion(navigator.userAgent)\r\n\t\t\t\t|| this.searchVersion(navigator.appVersion)\r\n\t\t\t\t|| \"an unknown version\";\r\n\t\t\tthis.OS = this.searchString(this.dataOS) || \"an unknown OS\";\r\n\t\t},\r\n\t\tsearchString: function (data) {\r\n\t\t\tfor (var i=0;i
{{response.playerId | displayName}}{{response.date | date:\\'MMM d, y h:mm a\\'}}{{response.subjectId | subjectName}}{{response.topicId | topicName}}{{response.score}}{{response.correctPercent}}%{{response.completeDate | date:\\'shortTime\\'}}
\");\n$templateCache.put(\"app/components/behavioreditor/behavioreditor.html\",\"
  •   {{behavior.name}}  {{behavior.triggers[0].type | translate}}

\");\n$templateCache.put(\"app/components/behaviorinput/behaviorinput.html\",\"
\");\n$templateCache.put(\"app/components/footer/footer.html\",\"
\");\n$templateCache.put(\"app/components/header/header.html\",\"
 
\");\n$templateCache.put(\"app/components/modal/modal.html\",\"\");\n$templateCache.put(\"app/components/profilepanel/profilepanel.html\",\"

{{userDetails.displayName}}

\");\n$templateCache.put(\"app/components/notes/addnote.modal.html\",\"
\");\n$templateCache.put(\"app/components/notes/note.modal.html\",\"
\");\n$templateCache.put(\"app/components/notes/notes.html\",\"
{{note.playerId | displayName}}{{note.created | date:\\'MMM d, y h:mm a\\'}}{{note.authorId | displayName}}    {{note.type | translate}}{{note.text}}  {{note.dueDate | date:\\'MMM d, y\\'}}{{note.complete ? \\'complete\\': \\'\\'}}
\");\n$templateCache.put(\"app/components/pagination/pagination.html\",\"\");\n$templateCache.put(\"app/components/questioninput/questioninput.html\",\"
\");\n$templateCache.put(\"app/components/sidebar/sidebar.html\",\"\");\n$templateCache.put(\"app/components/splash/splash.html\",\"

Cogniss

\");\n$templateCache.put(\"app/components/teamprofilepanel/teamprofilepanel.html\",\"

{{team.name}}

{{team.description}}

\");\n$templateCache.put(\"app/components/teamthumb/teamthumb.html\",\"

{{team.name}}

  • {{questionAggregate.topicPlayed | number : 0}}

    Topics played

  • {{questionAggregate.attempted | number : 0}}

    Questions answered

\");\n$templateCache.put(\"app/components/upload/upload.html\",\"
\");\n$templateCache.put(\"app/components/userthumb/userthumb.html\",\"

{{details.displayName}}

  • {{questionAggregate.topicPlayed}}

    Topics played

  • {{questionAggregate.attempted}}

    Questions answered

\");\n$templateCache.put(\"app/screens/admin/admin.html\",\"\");\n$templateCache.put(\"app/screens/main/main.html\",\"
Cogniss web client

Content goes here

\");\n$templateCache.put(\"app/screens/register/register.html\",\"

{{ \\'SIGN_UP_INFO\\' | translate}}

{{ \\'CLICK_AGREEMENT\\' | translate}}{{ \\'TERMS_CONDITIONS\\' | translate}} {{ \\'AND\\' | translate}} {{ \\'PRIVACY_POLICY\\' | translate}}

{{ \\'HAVE_ACCOUNT\\' | translate}}{{ \\'LOG_IN_NOW\\' | translate}}

\");\n$templateCache.put(\"app/screens/login/login.html\",\"\");\n$templateCache.put(\"app/screens/forgot/forgot.html\",\"

{{ \\'HAVE_ACCOUNT\\' | translate}}{{ \\'LOG_IN_NOW\\' | translate}}

\");\n$templateCache.put(\"app/screens/teams/teams.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/tenant-info-modal.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/tenant.html\",\"\");\n$templateCache.put(\"app/screens/reset/reset.html\",\"
{{ \\'SELECT_USER\\' | translate}}

{{ \\'LOG_IN_NOW\\' | translate}}

\");\n$templateCache.put(\"app/components/behaviorinput/activityselect/activityselect.html\",\"\");\n$templateCache.put(\"app/components/behaviorinput/criteriainput/criteriainput.html\",\"
\");\n$templateCache.put(\"app/components/behaviorinput/questionselect/questionselect.html\",\"\");\n$templateCache.put(\"app/components/behaviorinput/resultinput/resultinput.html\",\"
\");\n$templateCache.put(\"app/components/behaviorinput/triggerinput/triggerinput.html\",\"
:
:
\");\n$templateCache.put(\"app/components/questioninput/audioresponse/audioresponse.html\",\"
\");\n$templateCache.put(\"app/components/questioninput/categorisation/categorisation.html\",\"\");\n$templateCache.put(\"app/components/questioninput/fillblanks/fillblanks.html\",\"
\");\n$templateCache.put(\"app/components/questioninput/multichoice/multichoice.html\",\"
options
\");\n$templateCache.put(\"app/components/questioninput/imageresponse/imageresponse.html\",\"
\");\n$templateCache.put(\"app/components/questioninput/textrange/textrange.html\",\"
\");\n$templateCache.put(\"app/components/questioninput/templateinterpreted/templateinterpreted.html\",\"
Invalid JSON
\");\n$templateCache.put(\"app/components/questioninput/equation/equation.html\",\"
\");\n$templateCache.put(\"app/screens/admin/behaviors/behaviors.html\",\"

\");\n$templateCache.put(\"app/screens/admin/templates/templates.html\",\"

  •   {{template.name}}
\");\n$templateCache.put(\"app/screens/admin/tenants/tenants.html\",\"

  •   {{tenant.name}}
\");\n$templateCache.put(\"app/screens/teams/overview/add-team-modal.html\",\"
\");\n$templateCache.put(\"app/screens/teams/overview/join-team-modal.html\",\"
\");\n$templateCache.put(\"app/screens/teams/overview/overview.html\",\"

{{team.name}}

{{team.description}}

\");\n$templateCache.put(\"app/screens/teams/team/add-code-modal.html\",\"
\");\n$templateCache.put(\"app/screens/teams/team/team.html\",\"\");\n$templateCache.put(\"app/screens/tenant/admin/admin.html\",\"\");\n$templateCache.put(\"app/screens/tenant/content/content.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/team/team.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/teams/teams.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/subjects/subjects.html\",\"
{{ \\'CONTENT_OVERVIEW\\' | translate}}
{{ \\'SUBJECT\\' | translate}}
{{ \\'TOPIC\\' | translate}}
{{topic.subject.name}}{{topic.name}}
\");\n$templateCache.put(\"app/screens/tenant/user/user.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/users/add-user-modal.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/users/users.html\",\"

{{ \\'ADD_USER\\' | translate}}

\");\n$templateCache.put(\"app/screens/tenant/admin/behaviors/behaviors.html\",\"

\");\n$templateCache.put(\"app/screens/tenant/admin/content/content.html\",\"\");\n$templateCache.put(\"app/screens/tenant/admin/leaderboards/leaderboards.html\",\"
{{ \\'LEADERBOARDS\\' | translate}}
  •   {{leaderboard.name}}
  • {{team.teamId | teamName}}

    {{team.xp}} ({{team.xp * team.multiplyer}})

\");\n$templateCache.put(\"app/screens/tenant/admin/users/users.html\",\"
Display nameDisplay coinsDisplay xpCreatedUpdated
{{user.playerId | displayName}}{{user.coins}}{{user.xp}}{{user.created.$date | date : \\\"dd/mm/yy\\\"}}{{user.updated.$date | date : \\\"dd/mm/yy\\\"}}
\");\n$templateCache.put(\"app/screens/tenant/admin/vouchers/vouchercreate-modal.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/admin/vouchers/vouchers.html\",\"
NameDescriptionCodeCreatedUpdatedTags
{{voucher.name}}{{voucher.description}}{{voucher.code}}{{voucher.created | date : \\\"mediumDate\\\"}}{{voucher.updated | date : \\\"mediumDate\\\"}}
  • {{tag}}
\");\n$templateCache.put(\"app/screens/tenant/content/activity/activity.html\",\"
{{ topic.name}}

{{question.text}}

  • {{option.text}}

{{topic.name}} {{\\'COMPLETE\\' | translate}}

\");\n$templateCache.put(\"app/screens/tenant/content/subject/subject.html\",\"
{{ subject.name}}
  •   {{topic.name}}
\");\n$templateCache.put(\"app/screens/tenant/content/subjects/subjects.html\",\"
{{ \\'SUBJECTS\\' | translate}}
  •   {{subject.name}}
\");\n$templateCache.put(\"app/screens/tenant/team/overview/overview.html\",\"

{{progress.topicPlayed | number : 0}}

{{ \\'TOPICS_PLAYED\\' | translate}}

{{progress.attempted | number : 0}}

{{ \\'QUESTIONS_ANSWERED\\' | translate}}

{{overview.subject.name}}
{{ \\'ACTIVITY_HISTORY\\' | translate}}
\");\n$templateCache.put(\"app/screens/tenant/team/behaviors/behaviors.html\",\"\");\n$templateCache.put(\"app/screens/tenant/team/subject/subject.html\",\"
{{ \\'TOPICS\\' | translate}}
{{ \\'TOPIC\\' | translate}}
{{ \\'MASTERY\\' | translate}}
{{overview.topic.name}}
  • {{tag}}
{{ \\'ACTIVITY_HISTORY\\' | translate}}
\");\n$templateCache.put(\"app/screens/tenant/user/overview/overview.html\",\"

{{progress.topicPlayed}}

{{ \\'TOPICS_PLAYED\\' | translate}}

{{progress.attempted}}

{{ \\'QUESTIONS_ANSWERED\\' | translate}}

{{overview.subject.name}}
{{overview.activityResponses}}
\");\n$templateCache.put(\"app/screens/tenant/user/response/image-response-modal.html\",\"
\");\n$templateCache.put(\"app/screens/tenant/user/response/response.html\",\"
{{activityResponse.topicId | topicName}}

: {{activityResponse.date | date:\\'short\\'}}

: {{activityResponse.score}}

: {{activityResponse.percentCorrect}}

: {{activityResponse.completeDate | date:\\'short\\'}}

{{$index + 1}}{{getQuestionText(response.question)}}{{response.answer}}{{response.duration/1000 | number:1}} seconds
\");\n$templateCache.put(\"app/screens/tenant/user/subject/subject.html\",\"
{{ \\'TOPICS\\' | translate}}
{{ \\'TOPIC\\' | translate}}
{{ \\'MASTERY\\' | translate}}
{{overview.topic.name}}
  • {{tag}}
{{ \\'ACTIVITY_HISTORY\\' | translate}}
\");\n$templateCache.put(\"app/screens/tenant/admin/content/activities/activities.html\",\"
{{ \\'ACTIVITIES\\' | translate}}
  •   {{activity.topicId | topicName}}  {{activity.templateId | templateName}}
\");\n$templateCache.put(\"app/screens/tenant/admin/content/overview/overview.html\",\"
{{ \\'OVERVIEW\\' | translate}}

\");\n$templateCache.put(\"app/screens/tenant/admin/content/questions/questions.html\",\"
{{ \\'QUESTIONS\\' | translate}}
  •   {{question.label}}  {{question.text}}  {{question.id}}

id:{{questionFormData.id}}

\");\n$templateCache.put(\"app/screens/tenant/admin/content/subject/subject.html\",\"\");\n$templateCache.put(\"app/screens/tenant/admin/content/subjects/subjects.html\",\"
{{ \\'SUBJECTS\\' | translate}}
\");\n$templateCache.put(\"app/screens/tenant/admin/content/topic/topic.html\",\"\");\n$templateCache.put(\"app/screens/tenant/admin/content/topics/topics.html\",\"
{{ \\'TOPICS\\' | translate}}
  •   {{topic.name}}
{{topicFormData.questionType}}
\");}]);",null],"sourceRoot":"/source/"}