Files
edx-platform/cms/static/js/views/group_configuration_editor.js
Syed Ali Abbas Zaidi 228180b1ef fix: all auto fixable eslint issues (#31900)
* fix: eslint operator-linebreak issue

* fix: eslint quotes issue

* fix: react jsx indent and props issues

* fix: eslint trailing spaces issues

* fix: eslint line around directives issue

* fix: eslint prefer template issue

* fix: eslint semi rule

* fix: eslint newline per chain rule

* fix: eslint space infix ops rule

* fix: eslint space-in-parens issue

* fix: eslint space before function paren issue

* fix: eslint space before blocks issue

* fix: eslint arrow body style issue

* fix: eslint dot-location issue

* fix: eslint quotes issue

* fix: eslint quote props issue

* fix: eslint operator assignment issue

* fix: eslint new line after import issue

* fix: indent issues

* fix: operator assignment issue
2023-05-09 11:57:15 +05:00

123 lines
3.7 KiB
JavaScript

/**
* This class defines an editing view for content experiment group configurations.
* It is expected to be backed by a GroupConfiguration model.
*/
define([
'js/views/list_item_editor', 'underscore', 'jquery', 'gettext',
'js/views/experiment_group_edit'
],
function(ListItemEditorView, _, $, gettext, ExperimentGroupEditView) {
'use strict';
var GroupConfigurationEditorView = ListItemEditorView.extend({
tagName: 'div',
events: {
'change .collection-name-input': 'setName',
'change .group-configuration-description-input': 'setDescription',
'click .action-add-group': 'createGroup',
'focus .input-text': 'onFocus',
'blur .input-text': 'onBlur',
submit: 'setAndClose',
'click .action-cancel': 'cancel'
},
className: function() {
var index = this.model.collection.indexOf(this.model);
return [
'collection-edit',
'group-configuration-edit',
`group-configuration-edit-${index}`
].join(' ');
},
initialize: function() {
var groups = this.model.get('groups');
ListItemEditorView.prototype.initialize.call(this);
this.template = this.loadTemplate('group-configuration-editor');
this.listenTo(groups, 'add', this.onAddItem);
this.listenTo(groups, 'reset', this.addAll);
this.listenTo(groups, 'all', this.render);
},
render: function() {
ListItemEditorView.prototype.render.call(this);
this.addAll();
return this;
},
getTemplateOptions: function() {
return {
id: this.model.get('id'),
uniqueId: _.uniqueId(),
name: this.model.get('name'),
description: this.model.get('description'),
usage: this.model.get('usage'),
isNew: this.model.isNew()
};
},
getSaveableModel: function() {
return this.model;
},
onAddItem: function(group) {
var view = new ExperimentGroupEditView({model: group});
this.$('ol.groups').append(view.render().el);
return this;
},
addAll: function() {
this.model.get('groups').each(this.onAddItem, this);
},
createGroup: function(event) {
if (event && event.preventDefault) { event.preventDefault(); }
var collection = this.model.get('groups');
collection.add([{
name: collection.getNextDefaultGroupName(),
order: collection.nextOrder()
}]);
},
setName: function(event) {
if (event && event.preventDefault) { event.preventDefault(); }
this.model.set(
'name', this.$('.collection-name-input').val(),
{silent: true}
);
},
setDescription: function(event) {
if (event && event.preventDefault) { event.preventDefault(); }
this.model.set(
'description',
this.$('.group-configuration-description-input').val(),
{silent: true}
);
},
setValues: function() {
this.setName();
this.setDescription();
_.each(this.$('.groups li'), function(li, i) {
var group = this.model.get('groups').at(i);
if (group) {
group.set({
name: $('.group-name', li).val()
});
}
}, this);
return this;
}
});
return GroupConfigurationEditorView;
});