diff -r 01f66ed90e32 -r 87569ad0ff53 server/src/main/webapp/static/js/main_test_models.js --- a/server/src/main/webapp/static/js/main_test_models.js Wed Feb 13 13:41:19 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,306 +0,0 @@ -(function() { - - var root = this; - - var Backbone = root.Backbone; - - var Rkns = root.Rkns = {}; - - root.ModelView = Backbone.View.extend({ - - events : { - "click .show_form" : "show_form", - "click .remove_button" : "remove_click", - }, - - initialize: function(options) { - _.bindAll(this); - this.template = _.template(options.template); - this.model.bind("change", this.render); - this.form_view = options.form_view; - this.form_el = options.form_el; - if(typeof options.getJSON === "function") { - this.getJSON = options.getJSON; - } - }, - render: function() { - $(this.el).html(this.template(this.getJSON())); - return this; - }, - show_form: function(evt) { - if(typeof this.form_view !== "undefined") { - this.form_view.render(); - $(this.form_el).empty(); - $(this.form_el).append(this.form_view.el); - } - }, - getJSON : function() { - return this.model.toJSON(); - }, - remove_click : function(evt) { - var obj_id = $(evt.currentTarget).attr("value"); - if(typeof this.model.collection !== "undefined") { - this.model.collection.remove(this.model); - } - }, - - }); - - root.ColView = Backbone.View.extend({ - initialize: function(options) { - - _.bindAll(this); - this.element = options.element; - this.element_form = options.element_form; - this.element_form_el = options.element_form_el; - this.rendered = false; - - var that = this; - this.element_views = []; - - var that = this; - this.collection.each(function(elt) { - that.add(elt); - }); - - this.collection.bind('add', this.add); - this.collection.bind('remove', this.remove); - }, - - render : function() { - this.rendered = true; - var that = this; - this.$el.empty(); - _(this.element_views).each(function(dvs){ - that.$el.append(dvs.disp.render().el); - }); - - return this; - }, - - add : function(elt) { - - var fv_args = _.extend({}, this.element_form, {model: elt}); - var fv = new FormView(fv_args); - - var dv_args = _.extend({}, this.element, {model: elt, tagName: 'li', form_view: fv, form_el: this.element_form_el}); - var dv = new ModelView(dv_args); - - this.element_views.push({disp:dv, form:fv}); - - if(this.rendered) { - this.$el.append(dv.render().el); - } - }, - - - remove : function(elt) { - var viewsToRemove = _(this.element_views).select(function(cvs) { return cvs.disp.model === elt; })[0]; - this.element_views = _(this.element_views).without(viewsToRemove); - - if(this.rendered) { - viewsToRemove.disp.$el.remove(); - viewsToRemove.form.$el.remove(); - } - }, - - remove_click : function(evt) { - var obj_id = $(evt.currentTarget).attr("value"); - this.collection.remove(this.collection.get(obj_id)); - } - - }); - - root.FormView = Backbone.View.extend({ - events : { - "change .form_field": "changed" - }, - initialize: function(options) { - _.bindAll(this); - this.template = _.template(options.template); - this.model.bind("change", this.render); - if(typeof options.getJSON === "function") { - this.getJSON = options.getJSON; - } - }, - render: function() { - this.$el.html(this.template(this.getJSON())); - return this; - }, - changed: function(evt) { - var value = $(evt.currentTarget).val(); - var field_name = $(evt.currentTarget).attr("name"); - if(this.model.get(field_name) != value) { - this.model.set(field_name, value); - } - }, - getJSON : function() { - return this.model.toJSON(); - } - }); - - - root.SelectCurrentUserView = Backbone.View.extend({ - initialize: function(options) { - _.bindAll(this); - this.rendered = false; - - this.child_view_constructor = options.child_view_constructor; - this.child_tag_name = options.child_tag_name; - - this.children_views = []; - this.collection.each(this.add); - - this.collection.bind('add', this.add); - this.collection.bind('remove', this.remove); - }, - add: function(elt) { - var child_view = new this.child_view_constructor({ - model: elt, - tagName : this.child_tag_name - }); - this.children_views.push(child_view); - - if (this.rendered) { - this.$el.append(child_view.render().el); - } - }, - remove: function(elt) { - var view_to_remove = _(this.children_views).select(function(cv) { return cv.model === elt; })[0]; - this.children_views = _(this.children_views).without(view_to_remove); - if (this.rendered) { - view_to_remove.$el.remove(); - } - }, - render: function() { - this.rendered = true; - var that = this; - - this.$el.empty().html(""); - - _(this.children_views).each(function(cv){ - that.$el.append(cv.render().el); - }); - - return this; - } - - }); - - root.SelectUserView = Backbone.View.extend({ - initialize: function(options) { - _.bindAll(this); - this.model.bind("change", this.render); - }, - render: function() { - this.$el.val(this.model.id).text(this.model.get("title")); - return this; - } - }); - - root.CurrentUserView = Backbone.View.extend({ - initialize : function() { - this._select_view = new SelectCurrentUserView({ - el : this.el, - collection : this.model.get("users"), - child_view_constructor: SelectUserView, - child_tag_name: "option", - }); - }, - render: function() { - this.$el.empty(); - this._select_view.render(); - return this; - } - - }); - - - root.BasicListView = Backbone.View.extend({ - - initialize: function(options) { - _.bindAll(this); - - this.element_view_constructor = options.element_view_constructor; - if(typeof options.template !== "undefined") { - this.template = _.template(options.template); - } - - this.rendered = false; - this.element_views = []; - this.collection.each(this.add); - - this.collection.bind('add', this.add); - this.collection.bind('remove', this.remove); - this.collection.bind('reset', this.reset); - this.collection.bind('destroy', this.destroy); - }, - - render: function() { - this.rendered = true; - var that = this; - this.$el.empty(); - if(typeof this.template !== "undefined") { - var data = {}; - if(typeof this.model !== "undefined") { - data = this.$el.model.toJSON(); - } - this.$el.html(this.template(data)); - } - _(this.element_views).each(function(dvs){ - that.$el.append(dvs.render().el); - }); - - return this; - }, - - add: function(elt) { - var element_view = new this.element_view_constructor({model: elt}); - this.element_views.push(element_view); - if(this.rendered) { - this.$el.append(element_view.render().el); - } - }, - - remove: function(elt) { - var element_view = _(this.element_views).select(function(cv) {return cv.model === elt;})[0]; - this.element_views = _(this.element_views).without(element_view); - if(this.rendered) { - element_view.$el.remove(); - } - - }, - - reset: function() { - _(this.element_views).each(function(cv) { - cv.$el.remove(); - }); - this.element_views = []; - this.collection.each(this.add); - } - - }); - - - root.BasicModelView = Backbone.View.extend({ - - initialize: function(options) { - _.bindAll(this); - if(typeof options.template !== "undefined") { - this.template = _.template(options.template); - } - if(typeof options.getJSON === "function") { - this.getJSON = options.getJSON; - } - this.model.bind("change", this.render); - }, - render: function() { - $(this.el).html(this.template(this.getJSON())); - return this; - }, - getJSON : function() { - return this.model.toJSON(); - } - }); - -}).call(this);