
Untitled
By: a guest on
Jun 14th, 2012 | syntax:
JavaScript | size: 2.57 KB | hits: 24 | expires: Never
var PartLayerView = Backbone.View.extend({
tagName: "img",
className: "layer",
initialize: function() {
this.model.on("change:layerImgSrc change:layerZIndex change:layerAlwaysVisible updateLayer", this.render, this);
this.model.on("removePartLayerView", this.destroy, this);
},
render: function() {
if (debug) console.log("rendering partlayerview for",this.model.get("name"));
var $el = this.$el;
var model = this.model;
$el.attr("src", model.get("layerImgSrc"));
$el.css("z-index", model.get("layerZIndex"));
var active = !model.get("disabled") && model.get("selected") && steps.get(model.get("stepId")).get("active");
var hidden = !(model.get("layerAlwaysVisible") || active) || model.get("disabled");
if (active) {
$el.fadeTo("slow", 1.0);
if (debug) console.log("setting partlayer active");
} else if (hidden) {
$el.fadeOut("slow");
if (debug) console.log("setting partlayer hidden");
} else { // faded
$el.fadeTo("slow", 0.3);
if (debug) console.log("setting partlayer faded");
}
return this;
},
destroy: function() {
if (debug) console.log("destroying partlayerview for",this.model.get("name"));
var self = this;
self.model.off("change:layerImgSrc change:layerZIndex change:layerAlwaysVisible", this.render, this);
self.model.off("removePartLayerView", this.destroy, this);
self.$el.fadeOut("slow", function() {
self.remove();
});
}
});
var PartLayerListView = Backbone.View.extend({
el: $(".partLayers"),
initialize: function() {
this.collection.on("add", this.addLayer, this);
this.collection.on("remove", this.removeLayer, this);
this.collection.on("reset", this.reset, this);
},
addLayer: function(model) {
if (model.get("layerImgSrc")) {
var sv = new PartLayerView({model: model});
this.$el.append(sv.render().el);
}
},
removeLayer: function(model) {
// custom event to trigger a destroy, since there's no built in way to completely destroy a view
model.trigger("removePartLayerView");
}
});