Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: JavaScript  |  size: 2.57 KB  |  hits: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1.     var PartLayerView = Backbone.View.extend({
  2.         tagName: "img",
  3.         className: "layer",
  4.        
  5.         initialize: function() {
  6.             this.model.on("change:layerImgSrc change:layerZIndex change:layerAlwaysVisible updateLayer", this.render, this);
  7.             this.model.on("removePartLayerView", this.destroy, this);
  8.         },
  9.        
  10.         render: function() {
  11.             if (debug) console.log("rendering partlayerview for",this.model.get("name"));
  12.             var $el = this.$el;
  13.             var model = this.model;
  14.             $el.attr("src", model.get("layerImgSrc"));
  15.             $el.css("z-index", model.get("layerZIndex"));
  16.            
  17.             var active = !model.get("disabled") && model.get("selected") && steps.get(model.get("stepId")).get("active");
  18.             var hidden = !(model.get("layerAlwaysVisible") || active) || model.get("disabled");
  19.             if (active) {
  20.                 $el.fadeTo("slow", 1.0);
  21.                 if (debug) console.log("setting partlayer active");
  22.             } else if (hidden) {
  23.                 $el.fadeOut("slow");
  24.                 if (debug) console.log("setting partlayer hidden");
  25.             } else { // faded
  26.                 $el.fadeTo("slow", 0.3);
  27.                 if (debug) console.log("setting partlayer faded");
  28.             }
  29.             return this;
  30.         },
  31.        
  32.         destroy: function() {
  33.             if (debug) console.log("destroying partlayerview for",this.model.get("name"));
  34.             var self = this;
  35.             self.model.off("change:layerImgSrc change:layerZIndex change:layerAlwaysVisible", this.render, this);
  36.             self.model.off("removePartLayerView", this.destroy, this);
  37.             self.$el.fadeOut("slow", function() {
  38.                 self.remove();
  39.             });
  40.         }
  41.     });
  42.     var PartLayerListView = Backbone.View.extend({
  43.         el: $(".partLayers"),
  44.        
  45.         initialize: function() {
  46.             this.collection.on("add", this.addLayer, this);
  47.             this.collection.on("remove", this.removeLayer, this);
  48.             this.collection.on("reset", this.reset, this);
  49.         },
  50.        
  51.         addLayer: function(model) {
  52.             if (model.get("layerImgSrc")) {
  53.                 var sv = new PartLayerView({model: model});
  54.                 this.$el.append(sv.render().el);
  55.             }
  56.         },
  57.        
  58.         removeLayer: function(model) {
  59.             // custom event to trigger a destroy, since there's no built in way to completely destroy a view
  60.             model.trigger("removePartLayerView");
  61.         }
  62.     });