define(['jquery', 'views/abstract/itemView', 'underscore', 'views/fileView'], function($, itemView, _, fileView) { // Renders a single package item return itemView.extend({ tagName: 'li', className: 'package-view', template: _.compile($("#template-package").html()), events: { 'click .package-row .name': 'expand', 'click .icon-remove': 'delete', 'click .checkbox': 'select' }, // File views visible expanded: false, initialize: function() { this.model.on('filter:added', this.hide, this); this.model.on('filter:removed', this.show, this); this.model.on('change', this.render, this); this.model.on('remove', this.unrender, this); }, onDestroy: function() { this.model.off('filter:added', this.hide); // TODO }, // Render everything, optional only the fileViews render: function(fileOnly) { var container = this.$('.package-header'); if (!container.length) this.$el.html(this.template(this.model.toJSON())); else if(!fileOnly) container.replaceWith(this.template(this.model.toJSON())); // TODO: could be done in template if (this.model.get('checked')) this.$('.checkbox').addClass('checked'); else this.$('.checkbox').removeClass('checked'); // Only create this views a single time var ul = this.$('ul'); if (!ul.length && this.model.isLoaded()) { console.log('Rendered content of package ' + this.model.get('pid')); ul = $('