Add business logic for group adding

This commit is contained in:
Johannes Zellner
2016-02-10 16:37:58 +01:00
parent 9ba4d52fb7
commit a8001995c8
2 changed files with 43 additions and 17 deletions

View File

@@ -156,23 +156,23 @@
<h4 class="modal-title">Add Group</h4>
</div>
<div class="modal-body">
<form name="groupAddForm" role="form" novalidate ng-submit="doAddGroup()" autocomplete="off">
<form name="groupAddForm" role="form" novalidate ng-submit="groupadd.submit()" autocomplete="off">
<div class="form-group" ng-class="{ 'has-error': (groupAddForm.name.$dirty && groupAddForm.name.$invalid) || (!groupAddForm.name.$dirty && groupadd.error.name) }">
<label class="control-label" for="groupAddUsername">Name</label>
<label class="control-label" for="groupAddName">Name</label>
<div class="control-label" ng-show="(!groupAddForm.name.$dirty && groupadd.error.name) || (groupAddForm.name.$dirty && groupAddForm.name.$invalid) || (!groupAddForm.name.$dirty && groupadd.error.name)">
<small ng-show="groupAddForm.name.$error.required">A name is required</small>
<small ng-show="groupAddForm.name.$error.minlength">The name is too short</small>
<small ng-show="groupAddForm.name.$error.maxlength">The name is too long</small>
<small ng-show="!groupAddForm.name.$dirty && groupadd.error.name">{{ groupadd.error.name }}</small>
</div>
<input type="text" class="form-control" ng-model="groupadd.name" id="groupAddUsername" name="name" ng-maxlength="200" ng-minlength="2" required autofocus>
<input type="text" class="form-control" ng-model="groupadd.name" id="groupAddName" name="name" ng-maxlength="200" ng-minlength="2" required autofocus>
</div>
<input class="ng-hide" type="submit" ng-disabled="groupAddForm.$invalid || groupadd.alreadyTaken === groupadd.name"/>
<input class="ng-hide" type="submit" ng-disabled="groupAddForm.$invalid || groupadd.busy"/>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-success" ng-click="doAddGroup()" ng-disabled="groupAddForm.$invalid || groupadd.busy"><i class="fa fa-spinner fa-pulse" ng-show="groupadd.busy"></i> Add Group</button>
<button type="button" class="btn btn-success" ng-click="groupadd.submit()" ng-disabled="groupAddForm.$invalid || groupadd.busy"><i class="fa fa-spinner fa-pulse" ng-show="groupadd.busy"></i> Add Group</button>
</div>
</div>
</div>
@@ -232,7 +232,7 @@
<div>
<div class="text-left">
<h1>Groups <button class="btn btn-primary btn-outline pull-right" ng-click="showGroupAdd()"><i class="fa fa-plus"></i> New Group</button></h1>
<h1>Groups <button class="btn btn-primary btn-outline pull-right" ng-click="groupadd.show()"><i class="fa fa-plus"></i> New Group</button></h1>
</div>
</div>

View File

@@ -38,7 +38,43 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.groupadd = {
busy: false,
error: {},
name: ''
name: '',
reset: function () {
$scope.groupadd.busy = false;
$scope.groupadd.error = {};
$scope.groupadd.name = '';
$scope.groupAddForm.$setUntouched();
$scope.groupAddForm.$setPristine();
},
show: function () {
$scope.groupadd.reset();
$('#groupAddModal').modal('show');
},
submit: function () {
$scope.groupadd.busy = true;
$scope.groupadd.error.name = null;
Client.createGroup($scope.groupadd.name, function (error) {
if (error && error.statusCode === 409) {
$scope.groupadd.error.name = 'Name already taken';
$scope.groupAddForm.name.$setPristine();
$('#groupAddName').focus();
return;
}
if (error) return console.error('Unable to create group.', error.statusCode, error.message);
$('#groupAddModal').modal('hide');
refresh();
$scope.groupadd.reset();
});
}
};
$scope.isMe = function (user) {
@@ -65,16 +101,6 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
});
};
$scope.showGroupAdd = function () {
$scope.groupadd.error = {};
$scope.groupadd.name = '';
$scope.groupAddForm.$setUntouched();
$scope.groupAddForm.$setPristine();
$('#groupAddModal').modal('show');
};
$scope.showUserAdd = function () {
$scope.useradd.error = {};
$scope.useradd.username = '';