overleaf/services/web/public/coffee/main/user-details.coffee

62 lines
1.9 KiB
CoffeeScript

define [
"base"
"libs/algolia-2.5.2"
], (App, algolia)->
App.factory "Institutions", ->
new AlgoliaSearch(window.algolia.institutions.app_id, window.algolia.institutions.api_key).initIndex("institutions")
App.controller "UserProfileController", ($scope, $modal, $http)->
$scope.institutions = []
$http.get("/user/personal_info").then (response)->
{ data } = response
$scope.userInfoForm =
first_name: data.first_name || ""
last_name: data.last_name || ""
role: data.role || ""
institution: data.institution || ""
_csrf : window.csrfToken
$scope.showForm = ->
GrooveWidget.toggle()
$scope.formVisable = true
$scope.getPercentComplete = ->
results = _.filter $scope.userInfoForm, (value)-> !value? or value?.length != 0
results.length * 20
$scope.$watch "userInfoForm", (value) ->
if value?
$scope.percentComplete = $scope.getPercentComplete()
, true
$scope.openUserProfileModal = () ->
$modal.open {
templateUrl: "userProfileModalTemplate"
controller: "UserProfileModalController"
scope: $scope
}
App.controller "UserProfileModalController", ($scope, $modalInstance, $http, Institutions) ->
$scope.roles = ["Student", "Post-graduate student", "Post-doctoral researcher", "Lecturer", "Professor"]
$modalInstance.result.finally ->
sendUpdate()
sendUpdate = ->
request = $http.post "/user/settings", $scope.userInfoForm
request.then ()->
request.catch ()->
console.log "the request failed"
$scope.updateInstitutionsList = (inputVal)->
query = $scope.userInfoForm.institution
if query?.length <= 3
return #saves us algolia searches
Institutions.search $scope.userInfoForm.institution, (err, response)->
$scope.institutions = _.map response.hits, (institution)->
"#{institution.name} (#{institution.domain})"
$scope.done = () ->
$modalInstance.close()