You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2021/09/16 18:26:22 UTC

[brooklyn-ui] 01/05: WIP moved config entries row data generation back to config-sensor table, passing map with unsafe flags

This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-ui.git

commit f31f7091bdf9a91533aa537fcbfc210ef45c7e0d
Author: John Athanasiou <ja...@users.noreply.github.com>
AuthorDate: Thu Sep 16 18:59:26 2021 +0300

    WIP moved config entries row data generation back to config-sensor table, passing map with unsafe flags
---
 .../config-sensor-table.directive.js               | 19 +++++++++++++++
 .../config-sensor-table.template.html              |  4 +++-
 .../main/inspect/summary/summary.controller.js     | 28 ++++++++++++++--------
 .../main/inspect/summary/summary.template.html     |  6 ++++-
 4 files changed, 45 insertions(+), 12 deletions(-)

diff --git a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.directive.js b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.directive.js
index 00ba0dd..76355bd 100644
--- a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.directive.js
+++ b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.directive.js
@@ -37,6 +37,7 @@ export function configSensorTableDirective(brSnackbar) {
         scope: {
             data: '=',
             info: '=',
+            configItemsUnsafeMap: '=',
         },
         link,
     };
@@ -49,6 +50,23 @@ export function configSensorTableDirective(brSnackbar) {
             'external provider should be used to store this value with a DSL expression supplied in the blueprint to ' +
             'retrieve the value.';
 
+        scope.$watchGroup(['data','configItemsUnsafeMap'], (changes)=> {
+            if (angular.isObject(scope.data)) {
+                console.log('scope',scope)
+                console.log('scope.configItemsUnsafeMap',scope.configItemsUnsafeMap)
+                scope.items = Object.entries(scope.data)
+                    .map(([key, value]) => ({
+                        key,
+                        value,
+                        isUnsafe: (scope.configItemsUnsafeMap || {})[key],
+                    }));
+            }
+        });
+
+        scope.$watch('configItemsUnsafeMap', () => {
+            console.log('scope.configItemsUnsafeMap 222',scope.configItemsUnsafeMap)
+        });
+
         scope.$watch('info', () => {
             if (angular.isArray(scope.info)) {
                 scope.mapInfo = scope.info.reduce((pool, infoItem) => {
@@ -57,6 +75,7 @@ export function configSensorTableDirective(brSnackbar) {
                 }, {});
             }
         });
+
         scope.onClipboardSuccess = (e)=> {
             angular.element(e.trigger).triggerHandler('copied');
             e.clearSelection();
diff --git a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.template.html b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.template.html
index c31bb1f..59bc391 100644
--- a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.template.html
+++ b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.template.html
@@ -16,6 +16,8 @@
   specific language governing permissions and limitations
   under the License.
 -->
+configItemsUnsafeMap inner
+{{configItemsUnsafeMap}}
 <div class="form-group">
     <input type="text" class="form-control" placeholder="Filter by name or value" ng-model="filterValue">
 </div>
@@ -30,7 +32,7 @@
         </tr>
         </thead>
         <tbody>
-        <tr ng-repeat="item in data | orderBy:'key':sortReverse | filter:filterValue as filterResult track by item.key">
+        <tr ng-repeat="item in items | orderBy:'key':sortReverse | filter:filterValue as filterResult track by item.key">
             <td>
                 <span>{{item.key}}</span>
                 <i ng-if="mapInfo[item.key].description" class="fa fa-info-circle pull-right" uib-popover="{{mapInfo[item.key].description}}" popover-trigger="'mouseenter'" popover-title="Description" popover-animation="true"></i>
diff --git a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.controller.js b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.controller.js
index e2eecb3..4549a66 100644
--- a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.controller.js
+++ b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.controller.js
@@ -17,7 +17,7 @@
  * under the License.
  */
 import angular from "angular";
-import map from "lodash/map";
+import { map, mapValues } from "lodash";
 import {HIDE_INTERSTITIAL_SPINNER_EVENT} from 'brooklyn-ui-utils/interstitial-spinner/interstitial-spinner';
 import template from "./summary.template.html";
 import { SENSITIVE_FIELD_REGEX } from 'brooklyn-ui-utils/sensitive-field/sensitive-field';
@@ -50,6 +50,7 @@ export function summaryController($scope, $state, $stateParams, $q, $http, $http
     };
     // the eventual entries to share with the sensor table component
     vm.configItems = null;
+    vm.configItemsUnsafeMap = null;
     vm.configItemsInfo = null;
 
     let observers = [];
@@ -100,15 +101,20 @@ export function summaryController($scope, $state, $stateParams, $q, $http, $http
 
             // TODO: ideally move this to a $watch block
             if (vm.config && vm.configResolved && vm.configInfo) {
-                vm.configItems = Object.entries(vm.showResolvedConfig ? vm.configResolved : vm.config)
-                    .map(([key, value]) => ({
-                        key,
-                        value,
-                        // marking as unsafe if the field name looks sensitive
-                        // and the unresolved value does *not* come from a secure external source
-                        isUnsafe: SENSITIVE_FIELD_REGEX.test(key.trim()) &&
-                            !vm.config[key].toString().startsWith('$brooklyn:'),
-                    }));
+                vm.configItems = vm.showResolvedConfig ? vm.configResolved : vm.config;
+                vm.configItemsUnsafeMap = mapValues(vm.configItems, (value, key) =>
+                    SENSITIVE_FIELD_REGEX.test(key.trim()) && !vm.config[key].toString().startsWith('$brooklyn:')
+                );
+
+                // vm.configItems = Object.entries(vm.showResolvedConfig ? vm.configResolved : vm.config)
+                //     .map(([key, value]) => ({
+                //         key,
+                //         value,
+                //         // marking as unsafe if the field name looks sensitive
+                //         // and the unresolved value does *not* come from a secure external source
+                //         isUnsafe: SENSITIVE_FIELD_REGEX.test(key.trim()) &&
+                //             !vm.config[key].toString().startsWith('$brooklyn:'),
+                //     }));
             }
         }
 
@@ -133,6 +139,8 @@ export function summaryController($scope, $state, $stateParams, $q, $http, $http
                     configInfoHandler(configInfoResult.value);
 
                     // making sure that changes are propagated to table.
+                    console.log('vm.configItems',vm.configItems)
+                    console.log('vm.configItemsUnsafeMap',vm.configItemsUnsafeMap)
                     $scope.$apply();
                 }
             });
diff --git a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.template.html b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.template.html
index 02662fb..f4c3804 100644
--- a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.template.html
+++ b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.template.html
@@ -187,7 +187,11 @@
 
         <div>
             <loading-state error="vm.error.configItems" ng-if="!vm.configItems"></loading-state>
-            <config-sensor-table data="vm.configItems" info="vm.configInfo" ng-if="vm.configItems"></config-sensor-table>
+            configItemsUnsafeMap outer {{vm.configItemsUnsafeMap}}
+            <config-sensor-table ng-if="vm.configItems"
+                data="vm.configItems" info="vm.configInfo"
+                configItemsUnsafeMap="vm.configItemsUnsafeMap"
+            ></config-sensor-table>
         </div>
         <div class="table-option-footer">
             <button ng-click="vm.toggleConfigResolved()" ng-class="{ 'btn-outline': !vm.showResolvedConfig, 'btn-accent': vm.showResolvedConfig }">