-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.coffee
60 lines (44 loc) · 1.47 KB
/
index.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class window.Skillz
skillz: []
constructor: (options) ->
$(document).ready @initialize
initialize: =>
@$el = $('.canvas')
if localStorage.key('skillz')
@skillz = JSON.parse(localStorage.getItem('skillz'))
@renderSkillz()
$.getJSON 'skillz.json', null, (result) =>
for skill in result
if !@getSkill(skill.id)
@skillz.push(skill)
@renderSkillz()
$(window).resize @onResize
renderSkillz: =>
$('ul').empty()
for skill in @skillz
$('ul').append("<li data-skill-id='#{skill.id}' class='#{skill.category}'>#{skill.name}</li>")
$('li').draggable
stop: @onDragStop
@onResize()
onDragStop: (ev) =>
x = (ev.pageX - ev.offsetX) / $(window).width()
y = (ev.pageY - ev.offsetY)/ $(window).height()
target = $(ev.target)
skill = @getSkill target.data('skill-id')
skill.x = x
skill.y = y
console.log("#{x},#{y} - #{target.css('top')}")
@save()
onResize: (ev) =>
for skill in @skillz
if skill.x
console.log("#{skill.x},#{skill.y} - #{$(window).width()}")
console.log("moving to #{skill.x * $(window).width()}, #{skill.y * $(window).height()}")
$("[data-skill-id=#{skill.id}]").css
top: skill.y * $(window).height()
left: skill.x * $(window).width()
save: ->
localStorage.setItem('skillz', JSON.stringify(@skillz))
getSkill: (id) ->
for skill in @skillz
return skill if skill.id == id