85 lines
2.9 KiB
JavaScript
85 lines
2.9 KiB
JavaScript
/**
|
|
* This class defines a simple display view for a partition group.
|
|
* It is expected to be backed by a Group model.
|
|
*/
|
|
define([
|
|
'js/views/baseview', 'underscore', 'gettext', 'underscore.string',
|
|
'edx-ui-toolkit/js/utils/string-utils', 'edx-ui-toolkit/js/utils/html-utils'
|
|
], function(BaseView, _, gettext, str, StringUtils, HtmlUtils) {
|
|
'use strict';
|
|
|
|
var PartitionGroupDetailsView = BaseView.extend({
|
|
tagName: 'div',
|
|
events: {
|
|
'click .edit': 'editGroup',
|
|
'click .show-groups': 'showContentGroupUsages',
|
|
'click .hide-groups': 'hideContentGroupUsages'
|
|
},
|
|
|
|
className: function() {
|
|
var index = this.model.collection.indexOf(this.model);
|
|
|
|
return [
|
|
'collection',
|
|
'partition-group-details',
|
|
'partition-group-details-' + index
|
|
].join(' ');
|
|
},
|
|
|
|
editGroup: function() {
|
|
this.model.set({editing: true});
|
|
},
|
|
|
|
initialize: function() {
|
|
this.template = this.loadTemplate('partition-group-details');
|
|
this.restrictEditing = this.options.restrictEditing || false;
|
|
this.listenTo(this.model, 'change', this.render);
|
|
},
|
|
|
|
render: function(showContentGroupUsages) {
|
|
var attrs = $.extend({}, this.model.attributes, {
|
|
usageCountMessage: this.getUsageCountTitle(),
|
|
courseOutlineUrl: this.model.collection.parents[0].outlineUrl,
|
|
index: this.model.collection.indexOf(this.model),
|
|
showContentGroupUsages: showContentGroupUsages || false,
|
|
HtmlUtils: HtmlUtils,
|
|
restrictEditing: this.restrictEditing
|
|
});
|
|
HtmlUtils.setHtml(this.$el, HtmlUtils.HTML(this.template(attrs)));
|
|
return this;
|
|
},
|
|
|
|
showContentGroupUsages: function(event) {
|
|
if (event && event.preventDefault) { event.preventDefault(); }
|
|
this.render(true);
|
|
},
|
|
|
|
hideContentGroupUsages: function(event) {
|
|
if (event && event.preventDefault) { event.preventDefault(); }
|
|
this.render(false);
|
|
},
|
|
|
|
getUsageCountTitle: function() {
|
|
var count = this.model.get('usage').length;
|
|
|
|
if (count === 0) {
|
|
return gettext('Not in Use');
|
|
} else {
|
|
/* globals ngettext */
|
|
return StringUtils.interpolate(ngettext(
|
|
/*
|
|
Translators: 'count' is number of locations that the group
|
|
configuration is used in.
|
|
*/
|
|
'Used in {count} location', 'Used in {count} locations',
|
|
count
|
|
),
|
|
{count: count}
|
|
);
|
|
}
|
|
}
|
|
});
|
|
|
|
return PartitionGroupDetailsView;
|
|
});
|