From 6dc1e54dc7389218ea5fcac4052e945aa5f07c2f Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 11 Jun 2014 17:45:09 +0100 Subject: [PATCH] basic example using angular done --- .../Features/User/UserInfoController.coffee | 14 +++++--- services/web/app/views/project/list.jade | 28 ++++++++++++++++ .../public/coffee/UserDetailsUpdater.coffee | 33 +++++++++++++++++++ services/web/public/coffee/list.coffee | 1 + 4 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 services/web/public/coffee/UserDetailsUpdater.coffee diff --git a/services/web/app/coffee/Features/User/UserInfoController.coffee b/services/web/app/coffee/Features/User/UserInfoController.coffee index ac4a3fecaf..52d2b46a95 100644 --- a/services/web/app/coffee/Features/User/UserInfoController.coffee +++ b/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 } diff --git a/services/web/app/views/project/list.jade b/services/web/app/views/project/list.jade index 903bfcc60b..a116f46c2e 100644 --- a/services/web/app/views/project/list.jade +++ b/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") diff --git a/services/web/public/coffee/UserDetailsUpdater.coffee b/services/web/public/coffee/UserDetailsUpdater.coffee new file mode 100644 index 0000000000..c924e129b0 --- /dev/null +++ b/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 diff --git a/services/web/public/coffee/list.coffee b/services/web/public/coffee/list.coffee index aa6e66810b..359d896c40 100644 --- a/services/web/public/coffee/list.coffee +++ b/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)->