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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9f29508  support for configuring entity parameters via table in summary
     new 78cb029  Merge pull request #307 from 
zan-mateusz/feature/reconfigure-entity-parameters-via-summary-config-table
9f29508 is described below

commit 9f295086983bef58c50e3be99b04aa07ceb2b2e2
Author: zan-mateusz <[email protected]>
AuthorDate: Wed Oct 27 23:46:40 2021 +0100

    support for configuring entity parameters via table in summary
---
 .../config-sensor-table.directive.js               |  1 +
 .../config-sensor-table.style.less                 | 23 ++++++++++++++++++++++
 .../config-sensor-table.template.html              | 11 +++++++++--
 .../components/providers/entity-api.provider.js    |  5 +++++
 .../main/inspect/sensors/sensors.controller.js     |  5 +++++
 .../main/inspect/sensors/sensors.template.html     |  2 +-
 .../main/inspect/summary/summary.controller.js     |  9 +++++++++
 .../main/inspect/summary/summary.template.html     |  1 +
 8 files changed, 54 insertions(+), 3 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 3f0f0ca..40e23b7 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
@@ -39,6 +39,7 @@ export function configSensorTableDirective(brSnackbar) {
             data: '=',
             info: '=',
             checkPlaintextSensitiveKeyValue: '<',
+            reconfigureCallback: '<',
         },
         link,
     };
diff --git 
a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.style.less
 
b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.style.less
index d52d8f2..bf57d6c 100644
--- 
a/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.style.less
+++ 
b/ui-modules/app-inspector/app/components/config-sensor-table/config-sensor-table.style.less
@@ -42,6 +42,29 @@
   .grid-even {
     background: @primary-5;
   }
+
+  .grid-editable:not(.edit-disabled):after {
+    font-family: "myriad-pro-1", Helvetica, Arial, sans-serif, FontAwesome;
+    content: '\f040 Edit';
+    opacity: 0.2;
+    color: @primary-50;
+  }
+
+  .grid-editable {
+    border: none;
+    display: flex;
+    justify-content: space-between;
+    width: 100%;
+    padding: 8px;
+
+    &:hover {
+      background: fade(@primary-50, 10%);
+
+      &:after {
+        opacity: 1.0;
+      }
+    }
+  }
 }
 
 
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 5fc2523..af4a858 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
@@ -36,8 +36,15 @@
     <div class="col2 config-value" ng-class="{ 'grid-even': $index%2 }" 
ng-repeat-end>
               <div class="content-row">
                 <span class="content">
-                    <span ng-if="item.value === null"><i>value not 
set</i></span>
-                    <span ng-if="item.value !== null" ng-bind-html="item.value 
| brLinky:mapInfo[item.key]" class="literal-lines"></span>
+                    <div ng-show= "mapInfo[item.key].reconfigurable" 
ng-class="{'grid-editable': mapInfo[item.key].reconfigurable}" 
editable-text="item.value"
+                         edit-disabled="!mapInfo[item.key].reconfigurable" 
onbeforesave="reconfigureCallback(item.key,$data)" buttons="right" 
e-disabled-submit-on-enter>
+                            <span ng-if="item.value === null"><i>value not 
set</i></span>
+                            <span ng-if="item.value !== null" 
ng-bind-html="item.value | brLinky:mapInfo[item.key]" 
class="literal-lines"></span>
+                    </div>
+                    <div ng-show="!mapInfo[item.key].reconfigurable">
+                            <span ng-if="item.value === null"><i>value not 
set</i></span>
+                            <span ng-if="item.value !== null" 
ng-bind-html="item.value | brLinky:mapInfo[item.key]" 
class="literal-lines"></span>
+                    </div>
                 </span>
                 <span class="extras">
                     <i class="fa fa-exclamation-triangle warning-icon" 
ng-class="{invisible: !item.isPlaintextSensitiveValue}"
diff --git 
a/ui-modules/app-inspector/app/components/providers/entity-api.provider.js 
b/ui-modules/app-inspector/app/components/providers/entity-api.provider.js
index 9f59de8..e50deac 100644
--- a/ui-modules/app-inspector/app/components/providers/entity-api.provider.js
+++ b/ui-modules/app-inspector/app/components/providers/entity-api.provider.js
@@ -57,6 +57,7 @@ function EntityApi($http, $q) {
         entityLocations: getEntityLocations,
         
         updateEntityName: updateEntityName,
+        updateEntityConfig: updateEntityConfig,
         resetEntityProblems: resetEntityProblems,
         expungeEntity: expungeEntity,
         
@@ -147,6 +148,10 @@ function EntityApi($http, $q) {
             }
         });
     }
+    function updateEntityConfig(applicationId, entityId, config, value) {
+        return $http.post('/v1/applications/' + applicationId + '/entities/' + 
entityId + '/config/' + config,
+            JSON.stringify(value) , {headers: {'Content-Type': 
'application/json'}});
+    }
     function resetEntityProblems(applicationId, entityId) {
         return $q.all([
             $http.post('/v1/applications/' + applicationId + '/entities/' + 
entityId + '/sensors/service.notUp.indicators', {}),
diff --git 
a/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.controller.js 
b/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.controller.js
index 75f90d3..bbe365a 100644
--- 
a/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.controller.js
+++ 
b/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.controller.js
@@ -40,6 +40,11 @@ function sensorsController($scope, $stateParams, entityApi) {
 
     let observers = [];
 
+    vm.reconfigureCallback = () => {
+        // TODO - do we want to support reconfiguration in sensors?
+        // Currently out of scope
+    }
+
     entityApi.entitySensorsState(applicationId, entityId).then((response)=> {
         vm.sensors = response.data;
         vm.error.sensors = undefined;
diff --git 
a/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.template.html 
b/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.template.html
index 6ecd6a2..b69ad0a 100644
--- 
a/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.template.html
+++ 
b/ui-modules/app-inspector/app/views/main/inspect/sensors/sensors.template.html
@@ -18,4 +18,4 @@
 -->
 <loading-state error="vm.error.sensors" ng-if="!vm.sensors || 
!vm.sensorsInfo"></loading-state>
 
-<config-sensor-table data="vm.sensors" info="vm.sensorsInfo" ng-if="vm.sensors 
&& vm.sensorsInfo"></config-sensor-table>
\ No newline at end of file
+<config-sensor-table data="vm.sensors" info="vm.sensorsInfo" 
reconfigureCallback="vm.reconfigureCallback" ng-if="vm.sensors && 
vm.sensorsInfo"></config-sensor-table>
\ No newline at end of file
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 c122ac0..4ddf612 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
@@ -90,6 +90,15 @@ export function summaryController($scope, $state, 
$stateParams, $q, $http, $http
     vm.checkPlaintextSensitiveKeyValue = (key,value) =>
         key && vm.config && vm.config[key] && isSensitiveFieldName(key) && 
!vm.config[key].toString().startsWith('$brooklyn:');
 
+    vm.reconfigureCallback = (key,newValue) => {
+        
entityApi.updateEntityConfig(applicationId,entityId,key,newValue).then((response)=>
 {
+            brSnackbar.create('Configuration updated successfully');
+        }).catch((error)=> {
+            brSnackbar.create(response.data.message);
+        });
+    }
+
+
     // no return
     vm.refreshConfig = () => {
         const handleError = (message) => {
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 b8cbd2d..9380275 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
@@ -190,6 +190,7 @@
             <config-sensor-table ng-if="vm.configItems"
                 data="vm.configItems" info="vm.configInfo"
                 
check-plaintext-sensitive-key-value="vm.checkPlaintextSensitiveKeyValue"
+                                 reconfigure-callback="vm.reconfigureCallback"
             ></config-sensor-table>
         </div>
         <div class="grid-option-footer">

Reply via email to