From 43ef4183dfad61146ce9ca72c5011a7ae9ffbd11 Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Fri, 15 Mar 2019 11:42:46 -0400 Subject: [PATCH 01/14] trying to make codemirror editable --- .../code-mirror/code-mirror.directive.js | 19 ++++++++++++----- .../code-mirror/code-mirror.partial.html | 6 +++--- .../modal/code-mirror-modal.directive.js | 21 ++++++++++++------- .../modal/code-mirror-modal.partial.html | 7 +++++-- .../edit/inventory-edit.controller.js | 12 +++++------ .../standard-inventory/inventory.form.js | 16 +++++++++++++- awx/ui/client/src/shared/form-generator.js | 13 +++++++++++- .../shared/parse/parse-type-change.factory.js | 2 +- 8 files changed, 69 insertions(+), 27 deletions(-) diff --git a/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js b/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js index 2783f0eaa6..0315485ee4 100644 --- a/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js +++ b/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js @@ -11,21 +11,30 @@ function atCodeMirrorController ( ParseVariableString ) { const vm = this; - const variables = `${$scope.name}_variables`; + const variablesName = `${$scope.name}_variables`; function init (vars, name) { + console.log('init', $scope, vars); if ($scope.disabled === 'true') { $scope.disabled = true; } else if ($scope.disabled === 'false') { $scope.disabled = false; } - $scope[variables] = ParseVariableString(_.cloneDeep(vars)); + $scope.variablesName = variablesName; + // $scope[variablesName] = ParseVariableString(_.cloneDeep(vars)); + $scope.variables = { + value: ParseVariableString(_.cloneDeep(vars)), + }; + $scope.value = $scope.variables.value; $scope.parseType = ParseType; const options = { scope: $scope, - variable: variables, + variable: 'value', // variablesName, parse_variable: ParseVariable, field_id: name, - readOnly: $scope.disabled + readOnly: $scope.disabled, + onChange: (value) => { + console.log('change', value); + }, }; ParseTypeChange(options); } @@ -41,7 +50,7 @@ function atCodeMirrorController ( vm.expanded = false; } - vm.variables = variables; + // vm.variablesName = variablesName; vm.name = $scope.name; vm.modalName = `${vm.name}_modal`; vm.strings = strings; diff --git a/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html b/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html index 7d149af226..97572159f5 100644 --- a/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html +++ b/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html @@ -44,15 +44,15 @@ { + $scope.variables.value = $scope.value; + $scope.closeFn(); + }; if ($scope.init) { $scope.init = init; } angular.element(document).ready(() => { - init($scope.variables, $scope.name); + init($scope.variablesName, $scope.name); }); } @@ -90,7 +95,7 @@ function atCodeMirrorModal () { label: '@', labelClass: '@', tooltip: '@', - variables: '@', + variables: '=', name: '@', closeFn: '&' } diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html index 9785f439f8..57ca4a07be 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html @@ -46,13 +46,16 @@
{{ vm.strings.get('label.READONLY')}}
- diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js index de6029f6c9..4eb77d6e0a 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js @@ -1,7 +1,7 @@ const templateUrl = require('~components/code-mirror/modal/code-mirror-modal.partial.html'); const CodeMirrorModalID = '#CodeMirror-modal'; -const ParseVariable = 'parseType'; +// const ParseVariable = 'parseType'; const ParseType = 'yaml'; const ModalHeight = '#CodeMirror-modal .modal-dialog'; const ModalHeader = '.atCodeMirror-label'; @@ -10,8 +10,7 @@ const ModalFooter = '.CodeMirror-modalControls'; function atCodeMirrorModalController ( $scope, strings, - ParseTypeChange, - // ParseVariableString + ParseTypeChange ) { const vm = this; const variablesName = `${$scope.name}_variables`; @@ -28,28 +27,25 @@ function atCodeMirrorModalController ( } function toggle () { - $scope.parseTypeChange('parseType', variablesName); + $scope.parseTypeChange('parseType', 'modalVars'); setTimeout(resize, 0); } - function init (vars, name) { + function init () { if ($scope.disabled === 'true') { $scope.disabled = true; } else if ($scope.disabled === 'false') { $scope.disabled = false; } $(CodeMirrorModalID).modal('show'); - // $scope[variablesName] = ParseVariableString(_.cloneDeep(vars)); $scope.parseType = ParseType; - $scope.value = $scope.variables.value; - const options = { + ParseTypeChange({ scope: $scope, - variable: 'value', // variablesName, - parse_variable: ParseVariable, - field_id: name, + variable: 'modalVars', + parse_variable: 'parseType', + field_id: 'variables_modal', readOnly: $scope.disabled - }; - ParseTypeChange(options); + }); resize(); $(CodeMirrorModalID).on('hidden.bs.modal', $scope.closeFn); $(`${CodeMirrorModalID} .modal-dialog`).resizable({ @@ -57,15 +53,14 @@ function atCodeMirrorModalController ( minWidth: 600 }); $(`${CodeMirrorModalID} .modal-dialog`).on('resize', resize); + + $scope.foovars = 'testing'; } - vm.variablesName = variablesName; - vm.name = $scope.name; vm.strings = strings; vm.toggle = toggle; $scope.close = () => { - $scope.variables.value = $scope.value; - $scope.closeFn(); + $scope.closeFn()($scope.modalVars); }; if ($scope.init) { $scope.init = init; @@ -79,7 +74,6 @@ atCodeMirrorModalController.$inject = [ '$scope', 'CodeMirrorStrings', 'ParseTypeChange', - 'ParseVariableString', ]; function atCodeMirrorModal () { @@ -95,7 +89,7 @@ function atCodeMirrorModal () { label: '@', labelClass: '@', tooltip: '@', - variables: '=', + modalVars: '=', name: '@', closeFn: '&' } diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html index 57ca4a07be..662565f3f3 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html @@ -53,15 +53,12 @@ diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js index 02d7d25753..e8a8476985 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js @@ -58,7 +58,10 @@ function atCodeMirrorModalController ( vm.strings = strings; vm.toggle = toggle; $scope.close = () => { - $scope.closeFn()($scope.modalVars); + $scope.closeFn({ + values: $scope.modalVars, + parseType: $scope.parseType, + }); }; if ($scope.init) { $scope.init = init; @@ -88,6 +91,7 @@ function atCodeMirrorModal () { labelClass: '@', tooltip: '@', modalVars: '=', + parseType: '=', name: '@', closeFn: '&' } From ac5dec272b95e041ab3c937dde2e5173148b099e Mon Sep 17 00:00:00 2001 From: Keith Grant Date: Mon, 18 Mar 2019 16:00:45 -0400 Subject: [PATCH 05/14] code-mirror: keep yaml/json in sync when opening modal --- .../components/code-mirror/code-mirror.directive.js | 4 ++++ .../components/code-mirror/code-mirror.partial.html | 2 +- .../code-mirror/modal/code-mirror-modal.directive.js | 12 ++++-------- .../code-mirror/modal/code-mirror-modal.partial.html | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js b/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js index 622aa1cb13..6bba1f34f3 100644 --- a/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js +++ b/awx/ui/client/lib/components/code-mirror/code-mirror.directive.js @@ -27,6 +27,10 @@ function atCodeMirrorController ( field_id: `${$scope.name}_variables`, readOnly: $scope.disabled }); + + $scope.$watch(variablesName, () => { + $scope.variables = $scope[variablesName]; + }); } function expand () { diff --git a/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html b/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html index a832ca8b6e..6b45b94cc9 100644 --- a/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html +++ b/awx/ui/client/lib/components/code-mirror/code-mirror.partial.html @@ -53,7 +53,7 @@ name="{{ vm.name }}" ng-if="vm.expanded" modal-vars="variables" - parse-type="parseType" + modal-parse-type="parseType" tooltip="{{ tooltip || vm.strings.get('code_mirror.tooltip.TOOLTIP') }}" label="{{ label || vm.strings.get('code_mirror.label.VARIABLES') }}" disabled="{{ disabled || false }}" diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js index e8a8476985..916ed5b9d3 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.directive.js @@ -1,8 +1,6 @@ const templateUrl = require('~components/code-mirror/modal/code-mirror-modal.partial.html'); const CodeMirrorModalID = '#CodeMirror-modal'; -// const ParseVariable = 'parseType'; -const ParseType = 'yaml'; const ModalHeight = '#CodeMirror-modal .modal-dialog'; const ModalHeader = '.atCodeMirror-label'; const ModalFooter = '.CodeMirror-modalControls'; @@ -13,7 +11,6 @@ function atCodeMirrorModalController ( ParseTypeChange ) { const vm = this; - // const variablesName = `${$scope.name}_variables`; function resize () { if ($scope.disabled === 'true') { $scope.disabled = true; @@ -27,7 +24,7 @@ function atCodeMirrorModalController ( } function toggle () { - $scope.parseTypeChange('parseType', 'modalVars'); + $scope.parseTypeChange('modalParseType', 'modalVars'); setTimeout(resize, 0); } @@ -38,11 +35,10 @@ function atCodeMirrorModalController ( $scope.disabled = false; } $(CodeMirrorModalID).modal('show'); - $scope.parseType = ParseType; ParseTypeChange({ scope: $scope, variable: 'modalVars', - parse_variable: 'parseType', + parse_variable: 'modalParseType', field_id: 'variables_modal', readOnly: $scope.disabled }); @@ -60,7 +56,7 @@ function atCodeMirrorModalController ( $scope.close = () => { $scope.closeFn({ values: $scope.modalVars, - parseType: $scope.parseType, + parseType: $scope.modalParseType, }); }; if ($scope.init) { @@ -91,7 +87,7 @@ function atCodeMirrorModal () { labelClass: '@', tooltip: '@', modalVars: '=', - parseType: '=', + modalParseType: '=', name: '@', closeFn: '&' } diff --git a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html index 662565f3f3..96d31dbd7d 100644 --- a/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html +++ b/awx/ui/client/lib/components/code-mirror/modal/code-mirror-modal.partial.html @@ -21,20 +21,20 @@
-