2017-01-12 00:38:39 -05:00
|
|
|
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, no-unused-vars, one-var, no-underscore-dangle, prefer-template, no-else-return, prefer-arrow-callback, max-len */
|
2017-01-11 22:49:57 -05:00
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
(function() {
|
2017-01-11 23:27:41 -05:00
|
|
|
var bind = function(fn, me) { return function() { return fn.apply(me, arguments); }; };
|
2016-07-24 16:45:11 -04:00
|
|
|
|
|
|
|
this.ProjectNew = (function() {
|
|
|
|
function ProjectNew() {
|
|
|
|
this.toggleSettings = bind(this.toggleSettings, this);
|
2016-09-16 15:15:39 -04:00
|
|
|
this.$selects = $('.features select');
|
|
|
|
this.$repoSelects = this.$selects.filter('.js-repo-select');
|
2016-09-02 09:51:36 -04:00
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
$('.project-edit-container').on('ajax:before', (function(_this) {
|
|
|
|
return function() {
|
|
|
|
$('.project-edit-container').hide();
|
|
|
|
return $('.save-project-loader').show();
|
|
|
|
};
|
|
|
|
})(this));
|
2016-11-22 12:16:30 -05:00
|
|
|
|
|
|
|
this.initVisibilitySelect();
|
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
this.toggleSettings();
|
|
|
|
this.toggleSettingsOnclick();
|
2016-09-16 15:15:39 -04:00
|
|
|
this.toggleRepoVisibility();
|
2016-07-24 16:45:11 -04:00
|
|
|
}
|
|
|
|
|
2016-11-22 12:16:30 -05:00
|
|
|
ProjectNew.prototype.initVisibilitySelect = function() {
|
|
|
|
const visibilityContainer = document.querySelector('.js-visibility-select');
|
|
|
|
if (!visibilityContainer) return;
|
|
|
|
const visibilitySelect = new gl.VisibilitySelect(visibilityContainer);
|
|
|
|
visibilitySelect.init();
|
|
|
|
};
|
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
ProjectNew.prototype.toggleSettings = function() {
|
2016-09-02 09:51:36 -04:00
|
|
|
var self = this;
|
|
|
|
|
|
|
|
this.$selects.each(function () {
|
2017-01-11 22:49:57 -05:00
|
|
|
var $select = $(this);
|
|
|
|
var className = $select.data('field')
|
|
|
|
.replace(/_/g, '-')
|
|
|
|
.replace('access-level', 'feature');
|
2016-09-02 09:51:36 -04:00
|
|
|
self._showOrHide($select, '.' + className);
|
|
|
|
});
|
2016-07-24 16:45:11 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
ProjectNew.prototype.toggleSettingsOnclick = function() {
|
2016-09-02 09:51:36 -04:00
|
|
|
this.$selects.on('change', this.toggleSettings);
|
2016-07-24 16:45:11 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
ProjectNew.prototype._showOrHide = function(checkElement, container) {
|
2016-09-02 09:51:36 -04:00
|
|
|
var $container = $(container);
|
|
|
|
|
2016-09-02 07:03:49 -04:00
|
|
|
if ($(checkElement).val() !== '0') {
|
2016-07-24 16:45:11 -04:00
|
|
|
return $container.show();
|
|
|
|
} else {
|
|
|
|
return $container.hide();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2016-09-16 15:15:39 -04:00
|
|
|
ProjectNew.prototype.toggleRepoVisibility = function () {
|
2017-01-11 22:49:57 -05:00
|
|
|
var $repoAccessLevel = $('.js-repo-access-level select');
|
|
|
|
var containerRegistry = document.querySelectorAll('.js-container-registry')[0];
|
|
|
|
var containerRegistryCheckbox = document.getElementById('project_container_registry_enabled');
|
2016-09-16 15:15:39 -04:00
|
|
|
|
|
|
|
this.$repoSelects.find("option[value='" + $repoAccessLevel.val() + "']")
|
|
|
|
.nextAll()
|
|
|
|
.hide();
|
|
|
|
|
|
|
|
$repoAccessLevel.off('change')
|
|
|
|
.on('change', function () {
|
2017-01-12 00:38:39 -05:00
|
|
|
var selectedVal = parseInt($repoAccessLevel.val(), 10);
|
2016-09-16 15:15:39 -04:00
|
|
|
|
|
|
|
this.$repoSelects.each(function () {
|
2017-01-11 22:49:57 -05:00
|
|
|
var $this = $(this);
|
2017-01-12 00:38:39 -05:00
|
|
|
var repoSelectVal = parseInt($this.val(), 10);
|
2016-09-16 15:15:39 -04:00
|
|
|
|
|
|
|
$this.find('option').show();
|
|
|
|
|
|
|
|
if (selectedVal < repoSelectVal) {
|
|
|
|
$this.val(selectedVal);
|
|
|
|
}
|
|
|
|
|
|
|
|
$this.find("option[value='" + selectedVal + "']").nextAll().hide();
|
|
|
|
});
|
|
|
|
|
|
|
|
if (selectedVal) {
|
|
|
|
this.$repoSelects.removeClass('disabled');
|
2016-10-21 06:21:14 -04:00
|
|
|
|
|
|
|
if (containerRegistry) {
|
|
|
|
containerRegistry.style.display = '';
|
|
|
|
}
|
2016-09-16 15:15:39 -04:00
|
|
|
} else {
|
|
|
|
this.$repoSelects.addClass('disabled');
|
2016-10-21 06:21:14 -04:00
|
|
|
|
|
|
|
if (containerRegistry) {
|
|
|
|
containerRegistry.style.display = 'none';
|
|
|
|
containerRegistryCheckbox.checked = false;
|
|
|
|
}
|
2016-09-16 15:15:39 -04:00
|
|
|
}
|
|
|
|
}.bind(this));
|
|
|
|
};
|
|
|
|
|
2016-07-24 16:45:11 -04:00
|
|
|
return ProjectNew;
|
|
|
|
})();
|
|
|
|
}).call(this);
|