Array.prototype.compact = -> @filter((n) -> n) # remove blank values
$ ->
$('.menu-inner').accordion
heightStyle: "content"
collapsible: true
BadgeMaker = angular.module 'BadgeMaker', []
BadgeMaker.controller 'MakeBadgesCtrl', ['$scope', '$http', '$timeout', ($scope, $http, $timeout) ->
$scope.reload = ->
location.reload()
$scope.reset = ->
$scope.badge = {
finished: false
uid: ""
category: 0
colour: "00"
customisation: []
name: ""
level: ""
description: ""
icon: ""
}
$scope.reset()
$scope.swatch_scaffolding = ->
if typeof $scope.swatches_cache != 'object'
$http.get("/swatches.json")
.success (data) ->
$scope.swatches_cache = [ swatch[0] for swatch in data ][0]
$scope.swatches_cache
$scope.icon_scaffolding = ->
if typeof $scope.icons_cache != 'object'
$http.get("/icons.json")
.success (data) ->
$scope.icons_cache = data[0]
$scope.icons_cache
$scope.scaffolding_requested = false
$scope.scaffolding = ->
unless $scope.scaffolding_requested
$scope.scaffolding_requested = true
$http.get("/scaffolding.json")
.success (data) ->
$scope.scaffolding_cache = [ scaffold[0][0] for scaffold in data ][0]
.error (data, status, headers, config) ->
$scope.scaffolding_requested = false
$scope.scaffolding_cache || []
$scope.categories = ->
if typeof $scope.categories_cache != 'object' or Object.keys($scope.categories_cache).length == 0
$scope.categories_cache = []
for shape in $scope.scaffolding()
$scope.categories_cache.push shape[0][0]
$scope.badge.customisation[0] = $scope.categories_cache[$scope.badge.category].char unless $scope.badge.customisation[0]
$scope.categories_cache
$scope.customisations = ->
return [] if "" == $scope.badge.category
$scope.scaffolding()[$scope.badge.category]
$scope.icons = ->
return [] if "" == $scope.badge.colour
$scope.icon_scaffolding()
$scope.base_thumbnail = (attributes) ->
while undefined == attributes['thumb'] or undefined == attributes
attributes = attributes[0]
attributes['thumb']
$scope.colours = ->
return [] if "" == $scope.badge.category
$scope.swatch_scaffolding()
$scope.badge_changed = ->
return false if JSON.stringify($scope.badge) == $scope.badge_old
$scope.badge_old = JSON.stringify $scope.badge
true
$scope.badge_preview_url = ->
if $scope.badge_changed()
$scope.badge_preview_url_cache = "/b/" + [
$scope.badge.colour
$scope.badge.customisation.join('-').replace(/-+/g, "-")
encodeURIComponent($scope.badge.name || " ")
encodeURIComponent($scope.badge.level || " ")
$scope.badge.icon
].join('/')
$scope.badge_preview_url_cache
$scope.badge_url = ""
$scope.save = ->
$scope.badge.finished = true
$scope.badge_url = $scope.badge_preview_url()
$http
method: "POST"
url: "/save"
headers:
'Content-Type': 'application/x-www-form-urlencoded'
data: $.param
path: $scope.badge_url
title: $scope.badge.name
level: $scope.badge.level
description: $scope.badge.description
.success (data) -> $scope.badge.uid = data
$scope.shared_by_email = false
$scope.share_email = ->
$http
method: "POST"
url: "/share/email"
headers:
'Content-Type': 'application/x-www-form-urlencoded'
data: $.param
image_link: $scope.badge_url
email: $scope.share_email_address
.success (data) -> $scope.shared_by_email = true
$scope.shared_on_twitter = false
$scope.share_twitter = ->
$http
method: "POST"
url: "/share/twitter"
headers:
'Content-Type': 'application/x-www-form-urlencoded'
data: $.param
link: $scope.badge_url
handle: $scope.share_twitter_handle
.success (data) -> $scope.shared_on_twitter = true
]