Files
doormanserver/static/coffee/controllers/doormanCtrl.coffee
T
2015-07-10 09:49:46 -04:00

77 lines
2.7 KiB
CoffeeScript

define ["app", "lodash", "directives/ratinput"], (app, _, ratinput) ->
app.controller "DoormanCtrl", ["$scope", "$http","$routeParams","$location", "$timeout", ($scope, $http, $routeParams, $location, $timeout) ->
$scope.doorman = {values: []}
$scope.somevalue = "2/6"
$scope.apiurl = "/api/doormen/#{$routeParams.id}"
$scope.user = localStorage.getItem("email")
$scope.doormanChanged = false
$http.get($scope.apiurl).then((res) ->
$scope.doorman = res.data
$scope.isAdmin = _.contains($scope.doorman.emails, $scope.user)
$scope.initEmails()
).catch((res) ->
if res.status == 404
$location.path("/doormen/error/#{res.status}/#{$routeParams.id}")
)
$scope.deleteDoorman = () ->
console.log("not yet implemented")
$scope.initEmails = () ->
[$scope.leftEmailColumns, $scope.rightEmailColumns] = _.chunk($scope.doorman.emails, 2)
$scope.rationalToFloat = (rat) ->
if _.contains(rat, "/")
num = Number(rat.substr(0, rat.indexOf("/")))
denum = Number(rat.substr(rat.indexOf("/") + 1))
return num / denum
Number(rat)
$scope.validate = ()->
ret = 0
for val in $scope.doorman.values
ret += $scope.rationalToFloat(val.probability)
return Math.abs(ret - 1.0) < 0.000001
$scope.addNewAuthorEmail = () ->
if not $scope.canAddNewEmail()
return
$scope.doorman.emails.push($scope.newEmail)
$scope.updateDoorman()
$scope.newEmail = ""
$scope.initEmails()
$scope.removeEmail = (email) ->
$scope.doorman.emails = _.reject($scope.doorman.emails , (email_) -> email_ == email)
$scope.initEmails()
$scope.updateDoorman()
$scope.canAddNewEmail = ()->
if !$scope.newEmail or $scope.newEmail.length < 5
return false
not _.contains($scope.doorman.emails, $scope.newEmail)
$scope.updateDoorman = () ->
if !$scope.validate()
return
params = {params: {user: $scope.user}}
$http.put($scope.apiurl, $scope.doorman, params).then((ret)->
console.log "update"
).then((res) ->
$scope.doormanChanged = true
$timeout(() ->
$scope.doormanChanged = false
, 3000)
).catch((res) ->
$scope.error =
message: res.data
status : res.status
)
]
return