"use strict"; angular.module("vocabulary") .component("categoryNode", { templateUrl: "/js/redesign-angular/yourLessons/category-node.html", controller: "CategoryNodeController", bindings: { categoryData: "<", setSelectedCategory: "&", routeToSelected: "<" } }) .controller("CategoryNodeController", [ function () { var ctrl = this; ctrl.isOpen = false; ctrl.isSelected = false; ctrl.getName = function () { return ctrl.categoryData.categoryName; }; ctrl.getId = function () { return ctrl.categoryData.categoryId; }; ctrl.isLeaf = function () { return ctrl.categoryData.subcategories.length === 0; }; ctrl.hasChildren = function () { return ctrl.categoryData.subcategories.length > 0; }; ctrl.getIsOpen = function () { return ctrl.isOpen; }; ctrl.setIsOpen = function (isOpen) { ctrl.isOpen = isOpen; }; ctrl.selectCategory = function (category) { ctrl.setSelectedCategory({category: category}); }; ctrl.onClicked = function () { if (ctrl.hasChildren()) { ctrl.setIsOpen(!ctrl.getIsOpen()); } ctrl.setSelectedCategory({category: ctrl.categoryData}); }; }]);