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>