68 lines
1.6 KiB
JavaScript
68 lines
1.6 KiB
JavaScript
app.views.AspectsDropdown = app.views.Base.extend({
|
|
templateName : "aspects-dropdown",
|
|
events : {
|
|
"click .dropdown-menu a" : "setVisibility"
|
|
},
|
|
|
|
postRenderTemplate : function(){
|
|
this.setVisibility({target : this.$("a[data-visibility='all-aspects']").first()})
|
|
},
|
|
|
|
setVisibility : function(evt){
|
|
var self = this
|
|
, link = $(evt.target).closest("a")
|
|
, visibilityCallbacks = {
|
|
'public' : setPublic,
|
|
'all-aspects' : setPrivate,
|
|
'custom' : setCustom
|
|
}
|
|
|
|
visibilityCallbacks[link.data("visibility")]()
|
|
|
|
this.setAspectIds()
|
|
|
|
function setPublic (){
|
|
deselectAll()
|
|
selectAspect()
|
|
self.setDropdownText(link.text())
|
|
}
|
|
|
|
function setPrivate (){
|
|
deselectAll()
|
|
selectAspect()
|
|
self.setDropdownText(link.text())
|
|
}
|
|
|
|
function setCustom (){
|
|
deselectOverrides()
|
|
link.parents("li").toggleClass("selected")
|
|
self.setDropdownText(link.text())
|
|
evt.stopImmediatePropagation();
|
|
}
|
|
|
|
function selectAspect() {
|
|
link.parents("li").addClass("selected")
|
|
}
|
|
|
|
function deselectOverrides() {
|
|
self.$("a.public, a.all-aspects").parent().removeClass("selected")
|
|
}
|
|
|
|
function deselectAll() {
|
|
self.$("li.selected").removeClass("selected")
|
|
}
|
|
},
|
|
|
|
setDropdownText : function(text){
|
|
$.trim(this.$(".dropdown-toggle .text").text(text))
|
|
},
|
|
|
|
setAspectIds : function(){
|
|
var selectedAspects = this.$("li.selected a")
|
|
var aspectIds = _.map(selectedAspects, function(aspect){
|
|
return $(aspect).data("aspect-id")}
|
|
)
|
|
|
|
this.$("input.aspect_ids").val(aspectIds)
|
|
}
|
|
})
|