Merge pull request #5500 from jaredevantabor/ctit-reset

[CTiT] Reverting All The Things
This commit is contained in:
Jared Tabor 2017-02-22 10:59:23 -08:00 committed by GitHub
commit d56317a161
7 changed files with 108 additions and 63 deletions

View File

@ -171,26 +171,36 @@ export default [
form.buttons.save.disabled = $rootScope.user_is_system_auditor;
});
function startCodeMirrors(){
// Attach codemirror to fields that need it
let form = _.find(authForms, function(form){
return form.name === $scope.authVm.activeAuthForm;
});
_.each(form.formDef.fields, function(field) {
// Codemirror balks at empty values so give it one
if($scope.$parent[field.name] === null && field.codeMirror) {
$scope.$parent[field.name] = '{}';
}
if(field.codeMirror) {
ParseTypeChange({
scope: $scope.$parent,
variable: field.name,
parse_variable: 'parseType',
field_id: form.formDef.name + '_' + field.name
});
$scope.parseTypeChange('parseType', field.name);
}
function startCodeMirrors(key){
var form = _.find(authForms, function(f){
return f.name === $scope.authVm.activeAuthForm;
});
if(!key){
// Attach codemirror to fields that need it
_.each(form.formDef.fields, function(field) {
// Codemirror balks at empty values so give it one
if($scope.$parent[field.name] === null && field.codeMirror) {
$scope.$parent[field.name] = '{}';
}
if(field.codeMirror) {
createIt(field.name);
}
});
}
else if(key){
createIt(key);
}
function createIt(name){
ParseTypeChange({
scope: $scope.$parent,
variable: name,
parse_variable: 'parseType',
field_id: form.formDef.name + '_' + name
});
$scope.parseTypeChange('parseType', name);
}
}
function addFieldInfo(form, key) {
@ -227,16 +237,15 @@ export default [
// Flag to avoid re-rendering and breaking Select2 dropdowns on tab switching
var dropdownRendered = false;
$scope.$on('populated', function() {
startCodeMirrors();
// Create Select2 fields
var opts = [];
function populateLDAPGroupType(flag){
if($scope.$parent.AUTH_LDAP_GROUP_TYPE !== null) {
opts.push({
id: $scope.$parent.AUTH_LDAP_GROUP_TYPE,
text: $scope.$parent.AUTH_LDAP_GROUP_TYPE
});
$scope.$parent.AUTH_LDAP_GROUP_TYPE = _.find($scope.$parent.AUTH_LDAP_GROUP_TYPE_options, { value: $scope.$parent.AUTH_LDAP_GROUP_TYPE });
}
if(flag !== undefined){
dropdownRendered = flag;
}
if(!dropdownRendered) {
@ -245,15 +254,21 @@ export default [
element: '#configuration_ldap_template_AUTH_LDAP_GROUP_TYPE',
multiple: false,
placeholder: i18n._('Select group types'),
opts: opts
});
// Fix for bug where adding selected opts causes form to be $dirty and triggering modal
// TODO Find better solution for this bug
$timeout(function(){
$scope.$parent.configuration_ldap_template_form.$setPristine();
}, 1000);
}
}
$scope.$on('AUTH_LDAP_GROUP_TYPE_populated', function(e, data, flag) {
populateLDAPGroupType(flag);
});
$scope.$on('codeMirror_populated', function(e, key) {
startCodeMirrors(key);
});
$scope.$on('populated', function() {
startCodeMirrors();
populateLDAPGroupType();
});
angular.extend(authVm, {

View File

@ -71,7 +71,7 @@ export default [
// we want the options w/o a space, and
// the ConfigurationUtils.arrayToList()
// does a string.split(', ') w/ an extra space
// behind the comma.
// behind the comma.
if(key === "AD_HOC_COMMANDS"){
$scope[key] = data[key].toString();
}
@ -295,9 +295,20 @@ export default [
ConfigurationService.patchConfiguration(payload)
.then(function() {
$scope[key] = $scope.configDataResolve[key].default;
if(key === "AD_HOC_COMMANDS"){
$scope.AD_HOC_COMMANDS = $scope.AD_HOC_COMMANDS.toString();
$scope.$broadcast('adhoc_populated', null, false);
if($scope[key + '_field'].type === "select"){
// We need to re-instantiate the Select2 element
// after resetting the value. Example:
$scope.$broadcast(key+'_populated', null, false);
}
else if($scope[key + '_field'].reset === "CUSTOM_LOGO"){
$scope.$broadcast(key+'_reverted');
}
else if($scope[key + '_field'].type === "textarea" && _.isArray($scope.configDataResolve[key].default)){
$scope[key] = ConfigurationUtils.arrayToList($scope[key], key);
}
else if($scope[key + '_field'].hasOwnProperty('codeMirror')){
$scope[key] = '{}';
$scope.$broadcast('codeMirror_populated', key);
}
loginUpdate();
})

View File

@ -77,6 +77,7 @@ export default [
function populateAdhocCommand(flag){
$scope.$parent.AD_HOC_COMMANDS = $scope.$parent.AD_HOC_COMMANDS.toString();
var ad_hoc_commands = $scope.$parent.AD_HOC_COMMANDS.split(',');
$scope.$parent.AD_HOC_COMMANDS = _.map(ad_hoc_commands, (item) => _.find($scope.$parent.AD_HOC_COMMANDS_options, { value: item }));
@ -94,7 +95,7 @@ export default [
}
}
$scope.$on('adhoc_populated', function(e, data, flag) {
$scope.$on('AD_HOC_COMMANDS_populated', function(e, data, flag) {
populateAdhocCommand(flag);
});

View File

@ -152,16 +152,21 @@ export default [
var dropdownRendered = false;
$scope.$on('populated', function() {
$scope.$on('populated', function(e, data, flag) {
populateLogAggregator(flag);
});
var opts = [];
$scope.$on('LOG_AGGREGATOR_TYPE_populated', function(e, data, flag) {
populateLogAggregator(flag);
});
function populateLogAggregator(flag){
if($scope.$parent.LOG_AGGREGATOR_TYPE !== null) {
_.each(ConfigurationUtils.listToArray($scope.$parent.LOG_AGGREGATOR_TYPE), function(type) {
opts.push({
id: type,
text: type
});
});
$scope.$parent.LOG_AGGREGATOR_TYPE = _.find($scope.$parent.LOG_AGGREGATOR_TYPE_options, { value: $scope.$parent.LOG_AGGREGATOR_TYPE });
}
if(flag !== undefined){
dropdownRendered = flag;
}
if(!dropdownRendered) {
@ -170,11 +175,10 @@ export default [
element: '#configuration_logging_template_LOG_AGGREGATOR_TYPE',
multiple: false,
placeholder: i18n._('Select types'),
opts: opts
});
$scope.$parent.configuration_logging_template_form.LOG_AGGREGATOR_TYPE.$setPristine();
}
});
}
// Fix for bug where adding selected opts causes form to be $dirty and triggering modal
// TODO Find better solution for this bug

View File

@ -78,24 +78,31 @@
// Flag to avoid re-rendering and breaking Select2 dropdowns on tab switching
var dropdownRendered = false;
$scope.$on('populated', function(){
function populatePendoTrackingState(flag){
if($scope.$parent.PENDO_TRACKING_STATE !== null) {
$scope.$parent.PENDO_TRACKING_STATE = _.find($scope.$parent.PENDO_TRACKING_STATE_options, { value: $scope.$parent.PENDO_TRACKING_STATE });
}
if(flag !== undefined){
dropdownRendered = flag;
}
if(!dropdownRendered) {
dropdownRendered = true;
CreateSelect2({
element: '#configuration_ui_template_PENDO_TRACKING_STATE',
multiple: false,
placeholder: i18n._('Select commands'),
opts: [{
id: $scope.$parent.PENDO_TRACKING_STATE,
text: $scope.$parent.PENDO_TRACKING_STATE
}]
placeholder: i18n._('Select commands')
});
// Fix for bug where adding selected opts causes form to be $dirty and triggering modal
// TODO Find better solution for this bug
$timeout(function(){
$scope.$parent.configuration_ui_template_form.$setPristine();
}, 1000);
}
}
$scope.$on('PENDO_TRACKING_STATE_populated', function(e, data, flag) {
populatePendoTrackingState(flag);
});
$scope.$on('populated', function(e, data, flag){
populatePendoTrackingState(flag);
});
angular.extend(uiVm, {

View File

@ -159,6 +159,7 @@ function(ConfigurationUtils, i18n, $rootScope) {
var filePickerText = angular.element(document.getElementById('filePickerText'));
var filePickerError = angular.element(document.getElementById('filePickerError'));
var filePickerButton = angular.element(document.getElementById('filePickerButton'));
var filePicker = angular.element(document.getElementById('filePicker'));
scope.imagePresent = global.$AnsibleConfig.custom_logo || false;
scope.imageData = $rootScope.custom_logo;
@ -168,12 +169,18 @@ function(ConfigurationUtils, i18n, $rootScope) {
scope.imageData = $rootScope.custom_logo;
});
scope.update = function(e) {
if(scope.$parent[fieldKey]) {
scope.$on(fieldKey+'_reverted', function(e) {
scope.update(e, true);
});
scope.update = function(e, flag) {
if(scope.$parent[fieldKey] || flag ) {
e.preventDefault();
scope.$parent[fieldKey] = '';
filePickerButton.html(browseText);
filePickerText.val('');
filePicker.value = "";
scope.imagePresent = false;
}
else {
// Nothing exists so open file picker

View File

@ -679,7 +679,7 @@ angular.module('FormGenerator', [GeneratorHelpers.name, 'Utilities', listGenerat
if(field.reset && !field.disabled) {
var resetValue = "'" + field.reset+ "'";
var resetMessage = i18n._('Reset');
var resetMessage = i18n._('Revert');
html+= `<a class="Form-resetValue" ng-click="resetValue(${resetValue})">${resetMessage}</a>`;
}