blob: dcad9d05cb3072085dae886335cfc2f276178803 [file] [log] [blame]
angular.module('gettingStarted', [])
.directive('gettingStartedFactory', function() {
return {
bindToController : true,
controller: 'FactoryController',
controllerAs: 'factoryController',
templateUrl: 'scripts/factory-widget.html',
scope: {
factory: '=factory',
}
};
})
.filter('factoryCategoryFilter', function () {
return function (factories, enabledCategories) {
if (enabledCategories.length > 0) {
var filtered = [];
for (var i = 0; i < factories.length; i++) {
var factory = factories[i];
if (enabledCategories.indexOf(factory.category) >= 0) {
filtered.push(factory);
}
}
return filtered;
}
return factories;
}
})
.filter('factoryLanguageFilter', function () {
return function (factories, enabledLanguages) {
if (enabledLanguages.length > 0) {
var filtered = [];
for (var i = 0; i < factories.length; i++) {
var factory = factories[i];
var languages = factory.languages;
if (languages) {
languages.forEach(function (language) {
if (enabledLanguages.indexOf(language) >= 0) {
filtered.push(factory);
}
});
}
}
return filtered;
}
return factories;
}
})
.controller('FactoryController', function () {
})
.directive('gettingStartedFactories', function() {
return {
bindToController : true,
controller: 'FactoriesController',
controllerAs: 'factoriesController',
templateUrl: 'scripts/factories-widget.html'
};
})
.controller('FactoriesController', ['$http', function ($http) {
this.availableCategories = [];
this.availableLanguages = [];
this.enabledCategories = [];
this.enabledLanguages = [];
this.factories = [];
var self = this;
var promise = $http.get('scripts/factories.json');
this.toggleSelected = function (item, enabledArray) {
var index = enabledArray.indexOf(item);
if (index < 0) {
enabledArray.push(item);
} else {
enabledArray.splice(index, 1);
}
};
this.isChecked = function (item, enabledArray) {
return enabledArray.indexOf(item) >= 0;
};
this.checkAll = function (availableArray) {
return availableArray.slice(0);
};
this.toggleSelectedLanguage = function (language) {
return self.toggleSelected(language, self.enabledLanguages);
};
this.toggleSelectedCategory = function (category) {
return self.toggleSelected(category, self.enabledCategories);
};
this.isCheckedCategory = function (category) {
return self.isChecked(category, self.enabledCategories);
};
this.isCheckedLanguage = function (language) {
return self.isChecked(language, self.enabledLanguages);
};
this.checkAllLanguages = function () {
self.enabledLanguages = self.checkAll(self.availableLanguages);
};
this.checkAllCategories = function () {
self.enabledCategories = self.checkAll(self.availableCategories);
};
promise.then(function (response) {
self.factories = response.data.factories;
// now, populate the different categories
self.factories.forEach(function(factory) {
if (self.availableCategories.indexOf(factory.category) < 0) {
self.availableCategories.push(factory.category);
}
var languages = factory.languages;
if (languages) {
languages.forEach(function (language) {
if (self.availableLanguages.indexOf(language) < 0) {
self.availableLanguages.push(language);
}
});
}
});
// sort arrays
self.availableCategories.sort();
self.availableLanguages.sort();
});
this.toggleCategory = function (category) {
var index = self.enabledCategories.indexOf(category);
if (index >= 0) {
self.enabledCategories.splice(index, 1);
} else {
self.enabledCategories.push(category);
}
}
}]);