(function() { "use strict"; angular.module("raz") .component('lcmSequence', { templateUrl: '/js/angular/literacy-curriculum-map/components/lcm-sequence.html', controller: 'lcmSequenceController', bindings: { skillId: "<", gradeId: "<", } }) .controller("lcmSequenceController", ['coreSkills', 'lcmObjectiveStandardsService', 'lcmStateSelectorService', 'lcmGradeFolderIds', 'lcmGradeService', function (coreSkills, lcmObjectiveStandardsService, lcmStateSelectorService, lcmGradeFolderIds, lcmGradeService) { var ctrl = this; ctrl.coreSkillNames = coreSkills.CORE_SKILL_NAMES; ctrl.$onInit = function () { lcmGradeService.getLCMSSUnitsTreeById(lcmGradeFolderIds['grade_' + ctrl.gradeId]['folder_id']) .then(function (response) { ctrl.units = response['children']; setUnitWeeks(); }); ctrl.currentState = lcmStateSelectorService.getSelectedState(); lcmStateSelectorService.onUpdate(stateSelectorHasChanged); }; ctrl.getUnitWeeks = function (unit) { return ctrl.unitsWeeks[unit.id]; }; ctrl.getObjectiveStandards = function (coreSkillObjectiveMapId) { return lcmObjectiveStandardsService.getObjectiveStandards(coreSkillObjectiveMapId, ctrl.currentState.state_id); }; ctrl.getObjectiveName = function (objective) { var name = objective['objective_name']; var target = objective['target_skill_text']; if (target) { name += ': ' + target; } return name; }; function stateSelectorHasChanged(newState) { ctrl.currentState = newState; } function setUnitWeeks() { ctrl.unitsWeeks = {}; _.each(ctrl.units, function (unit) { var unitId = unit.id; _.each(unit.children, function (section) { if (section.core_block_id === null) { var objectivesForWeek = getObjectivesForWeek(section); if (objectivesForWeek.length !== 0) { var weekId = section.name; if (!ctrl.unitsWeeks[unitId]) { ctrl.unitsWeeks[unitId] = {}; } ctrl.unitsWeeks[unitId][weekId] = objectivesForWeek; } } }); }); } function getObjectivesForWeek(unitWeek) { var objectivesForWeek = []; _.each(unitWeek.children, function (group) { var blocks = group.children; _.each(blocks, function (block) { var skills = block.skill_objectives; _.each(skills, function (skill) { var coreSkillId = skill.core_skill_id; if (coreSkillId == ctrl.skillId) { var objectives = skill.objectives; _.each(objectives, function (objective) { objectivesForWeek.push(objective); }); } }); }); }); return objectivesForWeek; } }]); })();