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


The following commit(s) were added to refs/heads/master by this push:
     new cb1d0eed blueprint panel on inspector summary has buttons to copy and 
to open in composer
cb1d0eed is described below

commit cb1d0eedfdfec6cc53f0872e40e0e41db19f8923
Author: Alex Heneveld <[email protected]>
AuthorDate: Tue Aug 23 15:37:47 2022 +0100

    blueprint panel on inspector summary has buttons to copy and to open in 
composer
---
 .../main/inspect/summary/summary.controller.js     | 23 ++++++++++++++++++++--
 .../app/views/main/inspect/summary/summary.less    | 13 ++++++++++++
 .../main/inspect/summary/summary.template.html     | 10 ++++++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

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 4ddf6126..299e1292 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
@@ -21,16 +21,17 @@ import map from "lodash";
 import {HIDE_INTERSTITIAL_SPINNER_EVENT} from 
'brooklyn-ui-utils/interstitial-spinner/interstitial-spinner';
 import template from "./summary.template.html";
 import { isSensitiveFieldName } from 
'brooklyn-ui-utils/sensitive-field/sensitive-field';
+import { stringify as stringifyForQuery } from 'query-string';
 
 export const summaryState = {
     name: 'main.inspect.summary',
     url: '/summary',
     template: template,
-    controller: ['$scope', '$state', '$stateParams', '$q', '$http', 
'$httpParamSerializer', 'brSnackbar', 'entityApi', 'locationApi', 
'iconService', summaryController],
+    controller: ['$scope', '$state', '$stateParams', '$q', '$http', 
'$httpParamSerializer', 'brSnackbar', 'brBrandInfo', 'entityApi', 
'locationApi', 'iconService', summaryController],
     controllerAs: 'vm'
 };
 
-export function summaryController($scope, $state, $stateParams, $q, $http, 
$httpParamSerializer, brSnackbar, entityApi, locationApi, iconService) {
+export function summaryController($scope, $state, $stateParams, $q, $http, 
$httpParamSerializer, brSnackbar, brBrandInfo, entityApi, locationApi, 
iconService) {
     $scope.$emit(HIDE_INTERSTITIAL_SPINNER_EVENT);
 
     const {
@@ -69,6 +70,24 @@ export function summaryController($scope, $state, 
$stateParams, $q, $http, $http
     });
 
     vm.showResolvedConfig = false;
+    vm.onClipboardSuccess = (e)=> {
+        angular.element(e.trigger).triggerHandler('copied');
+        e.clearSelection();
+    };
+    vm.getOpenInComposerHref = (formatAndPlanYaml) => {
+        if (!formatAndPlanYaml) formatAndPlanYaml = {
+            format: vm.specItem.format,
+            yaml: vm.specItem.contents,
+        }
+        let result = `${brBrandInfo.blueprintComposerBaseUrl}#!/`;
+
+        if (!vm.specItem.format || vm.specItem.format=='brooklyn-camp') result 
+= 'graphical?';
+        // camp can open directly to graphical; any others go to editor
+        else result += "yaml?";
+
+        result += stringifyForQuery(formatAndPlanYaml);
+        return result;
+    };
 
     function getConfigState(resolved=false) {
         return entityApi.entityConfigState(applicationId, entityId, {
diff --git 
a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.less 
b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.less
index 80d7a983..8c86a5d6 100644
--- a/ui-modules/app-inspector/app/views/main/inspect/summary/summary.less
+++ b/ui-modules/app-inspector/app/views/main/inspect/summary/summary.less
@@ -91,6 +91,19 @@
   }
 }
 
+.blueprint-copy-holder {
+  width: 100%;
+  text-align: right;
+  padding-right: 1ex;
+  height: 0;
+  top: 6px;
+  position: relative;
+}
+a.blueprint-button {
+  cursor: pointer;
+  padding-left: 0.3ex;
+}
+
 .grid-option-footer {
   float: right;
   font-style: italic;
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 93802751..40512eec 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
@@ -175,6 +175,16 @@
 
         <div class="form-group">
             <loading-state error="vm.error.specList" 
ng-if="!vm.specItem"></loading-state>
+            <div class="blueprint-copy-holder">
+                <a ng-if="vm.specItem" class="text-muted blueprint-button" 
ngclipboard ngclipboard-success="vm.onClipboardSuccess(e)" 
data-clipboard-text="{{vm.specItem.contents}}" uib-tooltip="Copied!" 
tooltip-trigger="{'copied': 'mouseleave'}" tooltip-placement="top"
+                    title="Copy to Clipboard">
+                    <i class="fa fa-clipboard"></i>
+                </a>
+                <a ng-if="vm.specItem" class="text-muted blueprint-button" 
href="{{vm.getOpenInComposerHref()}}"
+                   title="Open in Composer">
+                    <i class="fa fa-arrow-circle-o-right"></i>
+                </a>
+            </div>
             <pre ng-if="vm.specItem">{{vm.specItem.contents}}</pre>
         </div>
 

Reply via email to