/* * * ConnectionWidget.js * */ window.tc = window.tc || {}; tc.ConnectionWidget = Backbone.View.extend({ className:'ConnectionWidget', initialize:function(){ this.trig = $('
').addClass('cw_trig'); this.ctnr = $('
').addClass('cw_ctnr'); this.nr = $('
Add Connection
').addClass('cw_nr'); this.sb = $('
Save
').addClass('cw_save'); this.nr.on('click', this.add_row.bind(this)); this.sb.on('click', this.save.bind(this)); this.$el.append(this.trig); this.$el.append(this.ctnr); }, render:function(data){ data = data || {title:'',connections:[]}; var ctnr = this.ctnr; this.sb.detach(); this.nr.detach(); ctnr.empty(); template.render('ConnectionWidget', this, function(t){ ctnr.append(this.sb); ctnr.append(t(data)); ctnr.append(this.nr); }); }, add_row:function(){ var ctnr = this.ctnr; template.render('ConnectionWidgetNewRow', this, function(t){ var html = $(t({})); ctnr.append(html); this.nr.detach(); ctnr.append(this.nr); html.find('.drop').droppable({ accept: ".Bookmark", tolerance: "pointer" , drop: function( event, ui ) { console.log(ui); var elt = ui.draggable; var id = elt.attr('id').split('_').pop(); var model = tc.BookmarkCollection.get_item(id); var note = model.get('note'); var that = $(this); that.html(note); var isIn = that.hasClass('in'); if(isIn) that.attr('id', 'In_'+id); else that.attr('id', 'Out_'+id); } }); }); }, save:function(){ var ctnr = this.ctnr; var title = ctnr.find('.title').val(); var cids = []; var conns = ctnr.find('.new_conn'); var f = function(){ tc.PathCollection.create({ title:title, trackpoints:cids }, { wait:true, attrs: { title:title, trackpoints:cids } }); } var save_all = _.after(conns.length, f); conns.each(function(idx, el){ var $el = $(el); var _in = $el.find('.in').attr('id').split('_').pop(); var _out = $el.find('.out').attr('id').split('_').pop(); var cin = tc.BookmarkCollection.get(_in).get('cursor'); var cout = tc.BookmarkCollection.get(_out).get('cursor'); var anot = $el.find('.annotation').val(); var m = new tc.Connection({start:cin, end:cout, annotation:anot}); // tc.ConnectionCollection.create(m, {wait:true}); m.on('sync', function(){ cids.push(m.id); save_all(); }); m.save(); }); }, });