update for user profile of UI.

This commit is contained in:
kunw 2016-06-21 13:28:21 +08:00
parent 4eb95078e0
commit c95d42b9fc
6 changed files with 101 additions and 42 deletions

View File

@ -6,26 +6,27 @@
.module('harbor.layout.account.setting')
.controller('AccountSettingController', AccountSettingController);
AccountSettingController.$inject = ['ChangePasswordService', '$scope', '$window', 'currentUser'];
AccountSettingController.$inject = ['ChangePasswordService', 'UpdateUserService', '$filter', 'trFilter', '$scope', '$window', 'currentUser'];
function AccountSettingController(ChangePasswordService, $scope, $window, currentUser) {
function AccountSettingController(ChangePasswordService, UpdateUserService, $filter, trFilter, $scope, $window, currentUser) {
var vm = this;
vm.isOpen = false;
vm.user = {};
vm.hasError = false;
vm.errorMessage = '';
vm.reset = reset;
vm.toggleChangePassword = toggleChangePassword;
vm.changeProfile = changeProfile;
vm.changePassword= changePassword;
vm.confirmToUpdate = confirmToUpdate;
vm.updateUser = updateUser;
vm.cancel = cancel;
vm.user = currentUser.get();
$scope.user = currentUser.get();
var userId = $scope.user.user_id;
function reset() {
$scope.form.$setUntouched();
$scope.form.$setPristine();
vm.hasError = false;
vm.errorMessage = '';
}
@ -37,25 +38,44 @@
vm.isOpen = true;
}
}
function getCurrentUserFailed(data) {
console.log('Failed get current user:' + data);
}
function changeProfile(user) {
console.log(user);
}
function changePassword(user) {
if(user && angular.isDefined(user.oldPassword) && angular.isDefined(user.password)) {
ChangePasswordService(vm.user.user_id, user.oldPassword, user.password)
function confirmToUpdate(user) {
vm.user = user;
if(vm.isOpen) {
if(vm.user && angular.isDefined(user.oldPassword) && angular.isDefined(user.password)) {
vm.modalTitle = $filter('tr')('change_password', []);
vm.modalMessage = $filte('tr')('confirm_to_change_password', []);
return true;
}
}else{
if(vm.user && angular.isDefined(vm.user.username) && angular.isDefined(vm.user.password) &&
angular.isDefined(vm.user.realname)) {
vm.modalTitle = $filter('tr')('change_profile', []);
vm.modalMessage = $filter('tr')('confirm_to_change_profile', []);
return true;
}
}
vm.modalTitle = $filter('tr')('form_is_invalid');
vm.modalMessage = $filter('tr')('form_is_invalid_message', []);
return false;
}
function updateUser() {
if(vm.isOpen){
ChangePasswordService(userId, vm.user.oldPassword, vm.user.password)
.success(changePasswordSuccess)
.error(changePasswordFailed);
}else{
UpdateUserService(userId, vm.user)
.success(updateUserSuccess)
.error(updateUserFailed);
currentUser.set(vm.user);
}
}
function changePasswordSuccess(data, status) {
$window.location.href = '/project';
$window.location.href = '/dashboard';
}
function changePasswordFailed(data, status) {
@ -66,11 +86,16 @@
}
}
function updateUserSuccess(data, status) {
$window.location.href = '/dashboard';
}
function updateUserFailed(data, status) {
console.log('Failed update user.');
}
function cancel(form) {
if(form) {
form.$setPristine();
}
$window.location.href = '/project';
$window.location.href = '/dashboard';
}
}

View File

@ -160,5 +160,10 @@ var locale_messages = {
'destination_setting': 'Destination Setting',
'endpoint': 'Endpoint',
'test_connection': 'Test connection',
'add_new_destination': 'New Destination'
'add_new_destination': 'New Destination',
'confirm_to_change_password': 'Are you sure to change your password?',
'change_profile': 'Change Profile',
'confirm_to_change_profile': 'Are you sure to change your profile?',
'form_is_invalid': 'Form content is invalid',
'form_is_invalid_message': 'Form content is invalid, please fill the required fields.'
};

View File

@ -159,5 +159,10 @@ var locale_messages = {
'endpoint': '终端URL',
'endpoint_is_required': '终端URL为必填项。',
'test_connection': '测试连接',
'add_new_destination': '新建目标'
'add_new_destination': '新建目标',
'confirm_to_change_password': '确认要修改密码吗?',
'change_profile': '修改个人信息',
'confirm_to_change_profile': '确认要修改个人信息吗?',
'form_is_invalid': '表单内容无效',
'form_is_invalid_message': '表单内容无效,请填写必填字段。'
};

View File

@ -0,0 +1,24 @@
(function() {
'use strict';
angular
.module('harbor.services.user')
.factory('UpdateUserService', UpdateUserService);
UpdateUserService.$inject = ['$http'];
function UpdateUserService($http) {
return updateUser;
function updateUser(userId, user) {
return $http
.put('/api/users/' + userId, {
'username': user.username,
'email': user.email,
'realname': user.realname,
'comment': user.comment
});
}
}
})();

View File

@ -4,11 +4,12 @@
<div class="section">
<h1 class="col-md-12 col-md-offset-2 main-title title-color">// 'account_setting' | tr //</h1>
<div class="col-md-12 col-md-offset-2 main-content">
<form name="form" class="form-horizontal" ng-submit="form.$valid && vm.changeProile(user)" >
<modal-dialog title="//vm.modalTitle//" message="//vm.modalMessage//" action="vm.updateUser()"></modal-dialog>
<form name="form" class="css-form form-horizontal" novalidate>
<div class="form-group">
<label for="username" class="col-sm-3 control-label">// 'username' | tr //:</label>
<div class="col-sm-7">
<input type="text" class="form-control" id="username" ng-model="user.username" ng-value="vm.user.username" name="uUsername" ng-model-options="{ updateOn: 'blur' }" ng-disabled="true" required maxlength="20" invalid-chars>
<input type="text" class="form-control" id="username" ng-model="user.username" name="uUsername" ng-disabled="vm.isOpen" required maxlength="20" invalid-chars>
<div ng-messages="form.$submitted && form.uUsername.$error">
<span ng-message="required">// 'username_is_required' | tr //</span>
<span ng-message="maxlength">// 'username_is_too_long' | tr //</span>
@ -22,7 +23,7 @@
<div class="form-group">
<label for="email" class="col-sm-3 control-label">// 'email' | tr //:</label>
<div class="col-sm-7">
<input type="email" class="form-control" id="email" ng-model="user.email" ng-value="vm.user.email" ng-model-options="{ updateOn: 'blur' }" ng-disabled="true" name="uEmail" required>
<input type="email" class="form-control" id="email" ng-model="user.email" name="uEmail" ng-disabled="vm.isOpen" required>
<div ng-messages="form.$submitted && form.uEmail.$error">
<span ng-message="required">// 'email_is_required' | tr //</span>
<span ng-message="email">// 'email_content_illegal' | tr //</span>
@ -35,7 +36,7 @@
<div class="form-group">
<label for="fullName" class="col-sm-3 control-label">// 'full_name' | tr //:</label>
<div class="col-sm-7">
<input type="text" class="form-control" id="fullName" ng-model="user.fullName" name="uFullName" ng-model-options="{ updateOn: 'blur' }" ng-value="vm.user.realname" ng-disabled="true" required maxlength="20" invalid-chars>
<input type="text" class="form-control" id="fullName" ng-model="user.realname" name="uFullName" ng-disabled="vm.isOpen" required maxlength="20" invalid-chars>
<div ng-messages="form.$submitted && form.uFullName.$error">
<span ng-message="required">// 'full_name_is_required' | tr //</span>
<span ng-message="invalidChars">// 'full_name_contains_illegal_chars' | tr //</span>
@ -49,14 +50,12 @@
<div class="form-group">
<label for="comments" class="col-sm-3 control-label">// 'comments' | tr //:</label>
<div class="col-sm-7">
<input type="text" class="form-control" id="comments" ng-model="user.comment" name="uComments" ng-model-options="{ updateOn: 'blur' }" ng-value="vm.user.comment" ng-disabled="true" ng-model-options="{ updateOn: 'blur' }" maxlength="20">
<input type="text" class="form-control" id="comments" ng-model="user.comment" name="uComments" ng-disabled="vm.isOpen" maxlength="20">
<div ng-messages="form.$submitted && form.uComments.$error">
<span ng-show="maxlength">// 'comment_is_too_long' | tr //</span>
</div>
</div>
</div>
</form>
<form name="form" class="form-horizontal css-form" ng-submit="form.$valid && vm.changePassword(user)" novalidate>
</div>
<div class="form-group">
<label for="toggleChangePassword" class="col-sm-3 control-label"><a id="toggleChangePassword" href="#" ng-click="vm.toggleChangePassword()">// 'change_password' | tr //</a></label>
</div>
@ -65,8 +64,8 @@
<div class="form-group">
<label for="oldPassword" class="col-sm-3 control-label">// 'old_password' | tr //:</label>
<div class="col-sm-7">
<input type="password" class="form-control" id="oldPassword" ng-model="user.oldPassword" ng-change="vm.reset()" name="uOldPassword" ng-model-options="{ updateOn: 'blur' }" required>
<div class="error-message" ng-messages="form.uOldPassword.$error" ng-if="form.uOldPassword.$touched">
<input type="password" class="form-control" id="oldPassword" ng-model="user.oldPassword" ng-change="vm.reset()" name="uOldPassword" required>
<div class="error-message" ng-messages="vm.isOpen && form.$submitted && form.uOldPassword.$touched && form.uOldPassword.$error">
<span ng-message="required">// 'old_password_is_required' | tr //</span>
</div>
</div>
@ -77,8 +76,8 @@
<div class="form-group">
<label for="password" class="col-sm-3 control-label">// 'new_password' | tr //:</label>
<div class="col-sm-7">
<input type="password" class="form-control" id="password" ng-model="user.password" ng-change="vm.reset()" name="uPassword" ng-model-options="{ updateOn: 'blur' }" required password>
<div class="error-message" ng-messages="form.uPassword.$error" ng-if="form.uPassword.$touched">
<input type="password" class="form-control" id="password" ng-model="user.password" ng-change="vm.reset()" name="uPassword" required password>
<div class="error-message" ng-messages="vm.isOpen && form.$submitted && form.uPassword.$touched && form.uPassword.$error">
<span ng-message="required">// 'password_is_required' | tr //</span>
<span ng-message="password">// 'password_is_invalid' | tr //</span>
</div>
@ -92,7 +91,7 @@
<label for="confirmPassword" class="col-sm-3 control-label">// 'confirm_password' | tr //:</label>
<div class="col-sm-7">
<input type="password" class="form-control" id="confirmPassword" ng-model="user.confirmPassword" ng-change="vm.reset()" name="uConfirmPassword" ng-model-options="{ updateOn: 'blur' }" compare-to="user.password">
<div class="error-message" ng-messages="form.uConfirmPassword.$error" ng-if="form.uConfirmPassword.$touched">
<div class="error-message" ng-messages="vm.isOpen && form.$submitted && form.uConfirmPassword.$touched && form.uConfirmPassword.$error">
<span ng-message="compareTo">// 'password_does_not_match' | tr //</span>
</div>
</div>
@ -103,8 +102,8 @@
</div>
<div class="form-group">
<div class="col-md-offset-7 col-md-10">
<input type="submit" class="btn btn-primary" ng-disabled="form.$invalid" value="// 'save' | tr //">
<input type="submit" class="btn btn-default" ng-click="vm.cancel(form)" value="// 'cancel' | tr //">
<input type="submit" class="btn btn-primary" ng-click="vm.confirmToUpdate(user)" data-toggle="modal" data-target="#myModal" value="// 'save' | tr //">
<input type="button" class="btn btn-default" ng-click="vm.cancel(form)" value="// 'cancel' | tr //">
</div>
</div>
<div class="error-message">

View File

@ -116,6 +116,7 @@
<script src="/static/resources/js/services/user/services.toggle-admin.js"></script>
<script src="/static/resources/js/services/user/services.delete-user.js"></script>
<script src="/static/resources/js/services/user/services.log-out.js"></script>
<script src="/static/resources/js/services/user/services.update-user.js"></script>
<script src="/static/resources/js/services/repository/services.repository.module.js"></script>
<script src="/static/resources/js/services/repository/services.list-repository.js"></script>