"use strict"; angular.module("vocabulary") .component("lessonOptions", { templateUrl: "/js/redesign-angular/lessonBuilder/lesson-options.html", controller: "LessonOptionsController", bindings: { onCloseOptions: "&" } }) .controller("LessonOptionsController", ["lessonService", function (lessonService) { var ctrl = this; ctrl.lessonName = ""; ctrl.noResourceSelected = false; ctrl.activityWithoutWorksheetsSelected = false; ctrl.$onInit = function () { initializeLessonOptions(); }; function initializeLessonOptions() { ctrl.typeSize = lessonService.getTypeSize(); lessonService.getAvailableLessonOptions() .then(function (options) { ctrl.wwActivities = buildCheckBoxObject( lessonService.getSelectedWwActivities(), options.wwActivities ); ctrl.files = buildCheckBoxObject( lessonService.getSelectedFiles(), options.files ); ctrl.lessonName = lessonService.getLessonName(); }); } ctrl.showActivities = function () { return ctrl.wwActivities && Object.keys(ctrl.wwActivities).length > 0; }; ctrl.generateFileName = function(activity) { return activity.toLowerCase().split(" ").join("-"); }; ctrl.updateTypeSize = function () { lessonService.setTypeSize(ctrl.typeSize); }; ctrl.updateFiles = function () { var files = removeFalsyProperties(ctrl.files); files = Object.keys(files); lessonService.setSelectedFiles(files); if(files.length > 0){ ctrl.noResourceSelected = false; } if (ctrl.files.worksheets) { ctrl.activityWithoutWorksheetsSelected = false; } }; ctrl.updateWwActivities = function () { var wwActivities = removeFalsyProperties(ctrl.wwActivities); wwActivities = Object.keys(wwActivities); lessonService.setSelectedWwActivities(wwActivities); if(wwActivities.length === 0){ ctrl.activityWithoutWorksheetsSelected = false; } }; ctrl.saveSelections = function(){ var ok = true; if(lessonService.getSelectedFiles().length === 0){ ctrl.noResourceSelected = true; ok = false; } if (!ctrl.files.worksheets && lessonService.getSelectedWwActivities().length > 0) { ctrl.activityWithoutWorksheetsSelected = true; ok = false; } if (ok) { lessonService.updateExistingLessonOptions().then(function (lessonId) { ctrl.onCloseOptions(); }); } }; function buildCheckBoxObject(selected, available) { var obj = {}; available.forEach(function (file) { if(selected.indexOf(file) === -1) { obj[file] = false; } else { obj[file] = true; } }); return obj; } function removeFalsyProperties(obj) { var newObj = {}; for(var prop in obj) { if(obj[prop]) { newObj[prop] = true; } } return newObj; } }]);