(function() { var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; this.ProjectNew = (function() { function ProjectNew() { this.toggleSettings = bind(this.toggleSettings, this); this.$selects = $('.features select'); this.$repoSelects = this.$selects.filter('.js-repo-select'); $('.project-edit-container').on('ajax:before', (function(_this) { return function() { $('.project-edit-container').hide(); return $('.save-project-loader').show(); }; })(this)); this.toggleSettings(); this.toggleSettingsOnclick(); this.toggleRepoVisibility(); } ProjectNew.prototype.toggleSettings = function() { var self = this; this.$selects.each(function () { var $select = $(this), className = $select.data('field').replace(/_/g, '-') .replace('access-level', 'feature'); self._showOrHide($select, '.' + className); }); }; ProjectNew.prototype.toggleSettingsOnclick = function() { this.$selects.on('change', this.toggleSettings); }; ProjectNew.prototype._showOrHide = function(checkElement, container) { var $container = $(container); if ($(checkElement).val() !== '0') { return $container.show(); } else { return $container.hide(); } }; ProjectNew.prototype.toggleRepoVisibility = function () { var $repoAccessLevel = $('.js-repo-access-level select'); this.$repoSelects.find("option[value='" + $repoAccessLevel.val() + "']") .nextAll() .hide(); $repoAccessLevel.off('change') .on('change', function () { var selectedVal = parseInt($repoAccessLevel.val()); this.$repoSelects.each(function () { var $this = $(this), repoSelectVal = parseInt($this.val()); $this.find('option').show(); if (selectedVal < repoSelectVal) { $this.val(selectedVal); } $this.find("option[value='" + selectedVal + "']").nextAll().hide(); }); if (selectedVal) { this.$repoSelects.removeClass('disabled'); } else { this.$repoSelects.addClass('disabled'); } }.bind(this)); }; return ProjectNew; })(); }).call(this);