Просмотр исходного кода

basic example using angular done

Henry Oswald 12 лет назад
Родитель
Сommit
6dc1e54dc7

+ 10 - 4
services/web/app/coffee/Features/User/UserInfoController.coffee

@@ -8,14 +8,17 @@ module.exports = UserController =
 	getLoggedInUsersPersonalInfo: (req, res, next = (error) ->) ->
 		# this is funcky as hell, we don't use the current session to get the user
 		# we use the auth token, actually destroying session from the chat api request
-		req.session.destroy() 
+		if req.query?.auth_token?
+			req.session.destroy() 
 		logger.log user: req.user, "reciving request for getting logged in users personal info"
 		return next(new Error("User is not logged in")) if !req.user?
-		UserController.sendFormattedPersonalInfo(req.user, res, next)
+		UserGetter.getUser req.session.user._id, { first_name: true, last_name: true, role:true, institution:true }, (error, user) ->
+			UserController.sendFormattedPersonalInfo(user, res, next)
 
 	getPersonalInfo: (req, res, next = (error) ->) ->
-		UserGetter.getUser req.params.user_id, { _id: true, first_name: true, last_name: true, email: true }, (error, user) ->
-			logger.log user: req.params.user_id, "reciving request for getting users personal info"
+		UserGetter.getUser req.params.user_id, { _id: true, first_name: true, last_name: true, email: true}, (error, user) ->
+			logger.log user_id: req.params.user_id, "reciving request for getting users personal info"
+			console.log user
 			return next(error) if error?
 			return res.send(404) if !user?
 			UserController.sendFormattedPersonalInfo(user, res, next)
@@ -39,6 +42,7 @@ module.exports = UserController =
 	sendFormattedPersonalInfo: (user, res, next = (error) ->) ->
 		UserController._formatPersonalInfo user, (error, info) ->
 			return next(error) if error?
+			console.log info
 			res.send JSON.stringify(info)
 
 	_formatPersonalInfo: (user, callback = (error, info) ->) ->
@@ -48,6 +52,8 @@ module.exports = UserController =
 			last_name: user.last_name
 			email: user.email
 			signUpDate: user.signUpDate
+			role: user.role
+			institution: user.institution
 		}
 		
 

+ 28 - 0
services/web/app/views/project/list.jade

@@ -101,6 +101,31 @@ block content
 						ul#projectList
 							mixin projectList(projects)
 
+					#userProfileInformation(ng-app="userProfileInformationApp")
+						div(ng-controller="UpdateForm")
+							div(ng-hide="hidePersonalInfoSection")
+								div(ng-show="percentComplete == 100")
+									span Thanks!
+								div(ng-hide="percentComplete == 100")
+									.span3
+										.span8
+											.progress
+												.bar.bar-success(ng-style="{'width' : (percentComplete+'%')}")
+											span Account {{percentComplete}}% complete
+
+											button.btn(ng-hide="formVisable", ng-click="formVisable = true") Complete now
+
+									.span3(ng-show="formVisable")
+										form(enctype='multipart/form-data', method='post')
+											.input
+												input(type='text',  name='first_name', ng-model="userInfoForm.first_name",  ng-blur="sendUpdate()")
+											.input
+												input(type='text', name='last_name', ng-model="userInfoForm.last_name", ng-blur="sendUpdate()", placeholder='Last Name')
+											.input
+												input(type='text', name='institution',  ng-model="userInfoForm.institution", placeholder='Institution', ng-blur="sendUpdate()")
+											.input
+												input(type='text', name='role',  ng-model="userInfoForm.role", placeholder='Role', ng-blur="sendUpdate()")
+
 					.span3
 						.tag-list
 							h2 Tags
@@ -142,3 +167,6 @@ block content
 		src=jsPath+'libs/require.js?fingerprint='+fingerprint(jsPath + 'libs/require.js')
 	)
 
+	script(src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js")
+	script(src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js")
+	script(src=jsPath+"/UserDetailsUpdater.js")

+ 33 - 0
services/web/public/coffee/UserDetailsUpdater.coffee

@@ -0,0 +1,33 @@
+
+app = angular.module("userProfileInformationApp", [])
+
+
+
+app.controller "UpdateForm", ($scope, $http)->
+
+	$scope.hidePersonalInfoSection = true
+
+	$http.get("/user/personal_info").success (data)->
+		$scope.userInfoForm = 
+			first_name: data.first_name
+			last_name: data.last_name
+			role: 	   data.role
+			institution: data.institution
+			_csrf : window.csrfToken
+
+		if getPercentComplete() != 100
+			console.log "!!!!!!!"
+			$scope.percentComplete = getPercentComplete()
+			$scope.hidePersonalInfoSection = false
+			
+			console.log $scope.percentComplete
+
+
+	$scope.sendUpdate = ->
+		$http.post "/user/personal_info", $scope.userInfoForm
+		$scope.percentComplete = getPercentComplete()
+
+	getPercentComplete = ->
+		results = _.filter $scope.userInfoForm, (value)-> value? and value?.length != 0
+		console.log results.length * 20
+		results.length * 20

+ 1 - 0
services/web/public/coffee/list.coffee

@@ -6,6 +6,7 @@ require [
 	"libs/underscore"
 	"libs/fineuploader"
 	"libs/jquery.storage"
+	"UserDetailsUpdater"
 ], (tagsManager, moment)->
 
 	$('.isoDate').each (i, d)->