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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
var LayoutsIndex = View.extend({
initialize: function(){
this.$templates = this.$(".templates")
this.$templatesList = this.$(".templates-list")
this.$noTemplates = this.$(".no-templates")
this.$form = this.$("form")
this.$userTemplatesList = this.$(".userTemplatesList")
this.$blueprintsList = this.$(".blueprintsList")
this.$newBlueprintButton = this.$("[data-role='create-new-blueprint']")
},
load: function(type){
this.$templates.children("span").remove()
$.get(this.action, this.populate.bind(this))
},
populate: function(data){
if (! data.layouts.length) {
this.$templates.hide()
this.$form.hide()
this.$noTemplates.show()
}
this.$templatesList.empty()
data.layouts.forEach(function(room){
var $span = $("<span>")
$span.data("slug", room.slug)
var $label = $("<label>")
$label.html( room.name )
var $image = $("<span>")
$image.addClass("image").css("background-image", "url(" + room.photo + ")")
$span.append( $image )
$span.append( $label )
this.$templatesList.append($span)
}.bind(this))
this.show()
}
})
var ProjectsModal = ModalView.extend(LayoutsIndex.prototype).extend({
el: ".mediaDrawer.projects",
action: "/api/project",
events: {
"click .templates span": 'toggleActive',
"submit form": 'newProject',
},
populate: function(data){
if (! data.length) {
app.router.newProject()
}
else {
this.__super__.populate.call(this, data)
}
},
toggleActive: function(e){
e.preventDefault()
this.$(".templates .active").removeClass("active")
var $layout = $(e.currentTarget)
$layout.addClass("active")
// actually do
window.location.pathname = "/project/" + $layout.data("slug") + "/edit"
},
newProject: function(e){
e && e.preventDefault()
window.location.pathname = "/project/new"
}
})
|