Files
edx-platform/cms/static/js/views/group_configuration_item.js
2014-08-07 12:27:28 -04:00

78 lines
2.5 KiB
JavaScript

define([
'js/views/baseview', 'jquery', "gettext", 'js/views/group_configuration_details',
'js/views/group_configuration_edit', "js/views/utils/view_utils"
], function(
BaseView, $, gettext, GroupConfigurationDetails, GroupConfigurationEdit, ViewUtils
) {
'use strict';
var GroupConfigurationsItem = BaseView.extend({
tagName: 'section',
attributes: function () {
return {
'id': this.model.get('id'),
'tabindex': -1
};
},
events: {
'click .delete': 'deleteConfiguration'
},
className: function () {
var index = this.model.collection.indexOf(this.model);
return [
'group-configuration',
'group-configurations-list-item',
'group-configurations-list-item-' + index
].join(' ');
},
initialize: function() {
this.listenTo(this.model, 'change:editing', this.render);
this.listenTo(this.model, 'remove', this.remove);
},
deleteConfiguration: function(event) {
if(event && event.preventDefault) { event.preventDefault(); }
var self = this;
ViewUtils.confirmThenRunOperation(
gettext('Delete this Group Configuration?'),
gettext('Deleting this Group Configuration is permanent and cannot be undone.'),
gettext('Delete'),
function() {
return ViewUtils.runOperationShowingMessage(
gettext('Deleting') + '…',
function () {
return self.model.destroy({ wait: true });
}
);
}
);
},
render: function() {
// Removes a view from the DOM, and calls stopListening to remove
// any bound events that the view has listened to.
if (this.view) {
this.view.remove();
}
if (this.model.get('editing')) {
this.view = new GroupConfigurationEdit({
model: this.model
});
} else {
this.view = new GroupConfigurationDetails({
model: this.model
});
}
this.$el.html(this.view.render().el);
return this;
}
});
return GroupConfigurationsItem;
});