use compareArray filter to compare selected nodes with available nodes. Clean up controller

This commit is contained in:
Mads Rasmussen
2015-06-22 15:01:52 +02:00
parent 4e2143264c
commit fbc2a6fb4b
3 changed files with 4 additions and 48 deletions

View File

@@ -1,5 +1,5 @@
<div class="dialog-grid">
<a href="" class="dialog-grid-element" ng-repeat="contentType in model.contentTypes | filter:{show:true}" ng-click="model.chooseContentType(contentType)">
<a href="" class="dialog-grid-element" ng-repeat="contentType in model.contentTypes | compareArrays:model.allowedContentTypes:'alias'" ng-click="model.chooseContentType(contentType)">
<i class="icon {{contentType.icon}}"></i>
{{ contentType.name }}
</a>

View File

@@ -19,32 +19,7 @@ function PermissionsController($scope, contentTypeResource, $log, iconHelper) {
function init() {
contentTypeResource.getAll().then(function(contentTypes){
$scope.contentTypes = contentTypes;
angular.forEach($scope.contentTypes, function(contentType){
// convert legacy icons
iconHelper.formatContentTypeIcons($scope.contentTypes);
var exists = false;
angular.forEach($scope.contentType.allowedContentTypes, function(allowedContentType){
if( contentType.alias === allowedContentType.alias ) {
exists = true;
}
});
if(exists) {
contentType.show = false;
} else {
contentType.show = true;
}
});
});
}
@@ -55,16 +30,6 @@ function PermissionsController($scope, contentTypeResource, $log, iconHelper) {
var selectedContentTypeIndex = $scope.contentType.allowedContentTypes.indexOf(selectedContentType);
$scope.contentType.allowedContentTypes.splice(selectedContentTypeIndex, 1);
// show content type in content types array
for (var contentTypeIndex = 0; contentTypeIndex < $scope.contentTypes.length; contentTypeIndex++) {
var contentType = $scope.contentTypes[contentTypeIndex];
if( selectedContentType.alias === contentType.alias ) {
contentType.show = true;
}
}
};
$scope.addItemOverlay = function ($event) {
@@ -73,6 +38,7 @@ function PermissionsController($scope, contentTypeResource, $log, iconHelper) {
$scope.dialogModel = {};
$scope.dialogModel.title = "Choose content type";
$scope.dialogModel.contentTypes = $scope.contentTypes;
$scope.dialogModel.allowedContentTypes = $scope.contentType.allowedContentTypes;
$scope.dialogModel.event = $event;
$scope.dialogModel.view = "views/documentType/dialogs/contenttypes/contenttypes.html";
$scope.showDialog = true;
@@ -95,16 +61,6 @@ function PermissionsController($scope, contentTypeResource, $log, iconHelper) {
// push to content type model
$scope.contentType.allowedContentTypes.push(reformatedContentType);
// hide selected content type from content types array
for (var contentTypeIndex = 0; contentTypeIndex < $scope.contentTypes.length; contentTypeIndex++) {
var contentType = $scope.contentTypes[contentTypeIndex];
if( selectedContentType.alias === contentType.alias ) {
contentType.show = false;
}
}
$scope.showDialog = false;
$scope.dialogModel = null;
};

View File

@@ -51,12 +51,12 @@
</div>
<!-- NODE PLACEHOLDER -->
<div class="node node-placeholder" ng-if="(contentTypes | filter:{show:true}).length > 0" ng-click="addItemOverlay($event)">
<div class="node node-placeholder" ng-if="(contentTypes | compareArrays:contentType.allowedContentTypes:'alias').length > 0" ng-click="addItemOverlay($event)">
<div class="node-placeholder-text">Allow child node</div>
</div>
<!-- ALL NODES ADDED -->
<div class="text-center" ng-if="(contentTypes | filter:{show:true}).length === 0">
<div class="text-center" ng-if="(contentTypes | compareArrays:contentType.allowedContentTypes:'alias').length === 0">
<small>All content types are added as child nodes</small>
</div>