From 78d83ad4cf85db93ac5532e69e2c537b73fe8a8d Mon Sep 17 00:00:00 2001 From: Zachary Jones Date: Thu, 31 Jan 2013 16:47:04 -0600 Subject: [PATCH] Make "Activate" and "Deactivate" functionality work. When deactivating an active asset, its end_date is set to NOW. When activating an inactive asset, its start_date is set to NOW, and its end_date is set 10 years in the future. --- static/coffee/screenly-ose.coffee | 20 ++++++++++++++++++++ static/js/screenly-ose.js | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/static/coffee/screenly-ose.coffee b/static/coffee/screenly-ose.coffee index b91943a6..9375f64c 100644 --- a/static/coffee/screenly-ose.coffee +++ b/static/coffee/screenly-ose.coffee @@ -151,6 +151,16 @@ class ActiveAssetRowView extends Backbone.View deactivateAsset: (event) -> event.preventDefault() + + # To deactivate, set this asset's end_date to right now + @model.set('end_date', localizedDateString(new Date())) + + # Now persist the change on the server so this becomes + # active immediately. + @model.save() + + # Now let's update the local collections, which + # should change the view the user sees. screenly.ActiveAssets.remove(@model) screenly.InactiveAssets.add(@model) @@ -171,6 +181,16 @@ class InactiveAssetRowView extends Backbone.View activateAsset: (event) -> event.preventDefault() + + # To "activate" an asset, we set its start_date + # to now and, for now, set its end_date to + # 10 years from now. + @model.set('start_date', localizedDateString(new Date())) + @model.set('end_date', localizedDateString((new Date()).getTime() + (10 * 365 * 24 * 60 * 60000) )) + @model.save() + + # Now let's update the local collections, which + # should change the view the user sees. screenly.InactiveAssets.remove @model screenly.ActiveAssets.add @model diff --git a/static/js/screenly-ose.js b/static/js/screenly-ose.js index cc9a0977..43fb4fae 100644 --- a/static/js/screenly-ose.js +++ b/static/js/screenly-ose.js @@ -1,2 +1,2 @@ // Generated by CoffeeScript 1.4.0 -(function(){var e,t,n,r,i,s,o,u,a,f,l,c,h,p,d={}.hasOwnProperty,v=function(e,t){function r(){this.constructor=e}for(var n in t)d.call(t,n)&&(e[n]=t[n]);r.prototype=t.prototype;e.prototype=new r;e.__super__=t.prototype;return e},m=[].indexOf||function(e){for(var t=0,n=this.length;t=0)&&console.log("You need to specify the template name for this AssetsView.");(n=!1,m.call(e,n)>=0)&&console.log("You must specify the child view class for this AssetsView.");this.template=_.template($("#"+e.templateName).html());this.collection.bind("reset",this.render,this);this.collection.bind("remove",this.render,this);return this.collection.bind("add",this.render,this)};t.prototype.render=function(){var e=this;$(this.el).html(this.template());this.$("tbody").empty();this.collection.each(function(t){return e.$("tbody").append((new e.options.childViewClass({model:t})).render().el)});return this};return t}(Backbone.View);e=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}v(t,e);t.prototype.initialize=function(e){return this.template=_.template($("#active-asset-row-template").html())};t.prototype.events={"click #deactivate":"deactivateAsset"};t.prototype.tagName="tr";t.prototype.render=function(){$(this.el).html(this.template(this.model.toJSON()));return this};t.prototype.deactivateAsset=function(e){e.preventDefault();screenly.ActiveAssets.remove(this.model);return screenly.InactiveAssets.add(this.model)};return t}(Backbone.View);u=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}v(t,e);t.prototype.initialize=function(e){return this.template=_.template($("#inactive-asset-row-template").html())};t.prototype.events={"click #activate":"activateAsset"};t.prototype.tagName="tr";t.prototype.render=function(){$(this.el).html(this.template(this.model.toJSON()));return this};t.prototype.activateAsset=function(e){e.preventDefault();screenly.InactiveAssets.remove(this.model);return screenly.ActiveAssets.add(this.model)};return t}(Backbone.View);screenly.views.AssetsView=s;screenly.views.ActiveAssetRowView=e;jQuery(function(){var t,r;screenly.Assets.fetch();t=new s({collection:screenly.ActiveAssets,templateName:"active-assets-template",childViewClass:e});r=new s({collection:screenly.InactiveAssets,templateName:"inactive-assets-template",childViewClass:u});$("#active-assets-container").append(t.render().el);$("#inactive-assets-container").append(r.render().el);return $("#add-asset-button").click(function(e){var t;e.preventDefault();t=new n;$("body").append(t.render().el);return $(t.el).children(":first").modal()})})}).call(this); \ No newline at end of file +(function(){var e,t,n,r,i,s,o,u,a,f,l,c,h,p,d={}.hasOwnProperty,v=function(e,t){function r(){this.constructor=e}for(var n in t)d.call(t,n)&&(e[n]=t[n]);r.prototype=t.prototype;e.prototype=new r;e.__super__=t.prototype;return e},m=[].indexOf||function(e){for(var t=0,n=this.length;t=0)&&console.log("You need to specify the template name for this AssetsView.");(n=!1,m.call(e,n)>=0)&&console.log("You must specify the child view class for this AssetsView.");this.template=_.template($("#"+e.templateName).html());this.collection.bind("reset",this.render,this);this.collection.bind("remove",this.render,this);return this.collection.bind("add",this.render,this)};t.prototype.render=function(){var e=this;$(this.el).html(this.template());this.$("tbody").empty();this.collection.each(function(t){return e.$("tbody").append((new e.options.childViewClass({model:t})).render().el)});return this};return t}(Backbone.View);e=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}v(t,e);t.prototype.initialize=function(e){return this.template=_.template($("#active-asset-row-template").html())};t.prototype.events={"click #deactivate":"deactivateAsset"};t.prototype.tagName="tr";t.prototype.render=function(){$(this.el).html(this.template(this.model.toJSON()));return this};t.prototype.deactivateAsset=function(e){e.preventDefault();this.model.set("end_date",f(new Date));this.model.save();screenly.ActiveAssets.remove(this.model);return screenly.InactiveAssets.add(this.model)};return t}(Backbone.View);u=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}v(t,e);t.prototype.initialize=function(e){return this.template=_.template($("#inactive-asset-row-template").html())};t.prototype.events={"click #activate":"activateAsset"};t.prototype.tagName="tr";t.prototype.render=function(){$(this.el).html(this.template(this.model.toJSON()));return this};t.prototype.activateAsset=function(e){e.preventDefault();this.model.set("start_date",f(new Date));this.model.set("end_date",f((new Date).getTime()+31536e7));this.model.save();screenly.InactiveAssets.remove(this.model);return screenly.ActiveAssets.add(this.model)};return t}(Backbone.View);screenly.views.AssetsView=s;screenly.views.ActiveAssetRowView=e;jQuery(function(){var t,r;screenly.Assets.fetch();t=new s({collection:screenly.ActiveAssets,templateName:"active-assets-template",childViewClass:e});r=new s({collection:screenly.InactiveAssets,templateName:"inactive-assets-template",childViewClass:u});$("#active-assets-container").append(t.render().el);$("#inactive-assets-container").append(r.render().el);return $("#add-asset-button").click(function(e){var t;e.preventDefault();t=new n;$("body").append(t.render().el);return $(t.el).children(":first").modal()})})}).call(this); \ No newline at end of file