Yangman - improvements 12/41212/5
authorStanislav Jamrich <sjamrich@cisco.com>
Fri, 1 Jul 2016 12:59:14 +0000 (14:59 +0200)
committerDaniel Malachovsky <dmalacho@cisco.com>
Thu, 21 Jul 2016 11:26:18 +0000 (13:26 +0200)
error msg in form
request execution loader
not show json when multiselect
save status and time to history
codemirror font size alt+ and alt-

Change-Id: I7d538471689008d0c4ff601a099e73e97978ec81
Signed-off-by: Stanislav Jamrich <sjamrich@cisco.com>
modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/yang-form.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/yangman.controller.js
modules/yangman-resources/src/main/resources/yangman/models/history-request.model.js
modules/yangman-resources/src/main/resources/yangman/services/requests.services.js
modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.tpl.html
modules/yangman-resources/src/main/resources/yangman/views/rightpanel/detail.tpl.html
modules/yangman-resources/src/main/resources/yangman/views/rightpanel/request-header.tpl.html
modules/yangman-resources/src/main/resources/yangman/yangman.less

index 64190428ac7171c814aac45095be17fe9ff4a9e5..f8dd3d4d97db2201657c14a10c72095c4df4d4f6 100644 (file)
@@ -3,9 +3,9 @@ define([], function () {
 
     angular.module('app.yangman').controller('RequestDataCtrl', RequestDataCtrl);
 
-    RequestDataCtrl.$inject = ['$scope', 'RequestsService'];
+    RequestDataCtrl.$inject = ['$mdToast', '$scope', 'RequestsService'];
 
-    function RequestDataCtrl($scope, RequestsService) {
+    function RequestDataCtrl($mdToast, $scope, RequestsService) {
         var requestData = this;
 
         requestData.paramsArray = [];
@@ -17,9 +17,18 @@ define([], function () {
             lineNumbers: true,
             lineWrapping: true,
             matchBrackets: true,
-            extraKeys: { 'Ctrl-Space': 'autocomplete' },
+            extraKeys: {
+                'Ctrl-Space': 'autocomplete',
+            },
             onLoad: function (cmInstance) {
 
+                cmInstance.data = {
+                    parameterListObj: $scope.parametersList,
+                    codeFontSize: 14,
+                };
+
+                angular.element(cmInstance.display.wrapper).css('fontSize', cmInstance.data.codeFontSize + 'px');
+
                 cmInstance.on('changes', function () {
                     if (angular.isFunction(cmInstance.showHint)) {
                         cmInstance.showHint();
@@ -35,13 +44,39 @@ define([], function () {
                     }
                 });
 
-                cmInstance.data = { parameterListObj: $scope.parametersList };
+                cmInstance.on('keydown', function (codemirror, event) {
+                    if (event.altKey) {
+                        switch (event.key){
+                            case '+':
+                                if (cmInstance.data.codeFontSize < 30) {
+                                    cmInstance.data.codeFontSize++;
+                                }
+                                angular.element(cmInstance.display.wrapper).css(
+                                    'fontSize',
+                                    cmInstance.data.codeFontSize + 'px'
+                                );
+                                break;
+                            case '-':
+                                if (cmInstance.data.codeFontSize > 5) {
+                                    cmInstance.data.codeFontSize--;
+                                }
+                                angular.element(cmInstance.display.wrapper).css(
+                                    'fontSize',
+                                    cmInstance.data.codeFontSize + 'px'
+                                );
+                                break;
+                        }
+
+                    }
+                });
+
 
             },
         };
 
         // methods
         requestData.init = init;
+        requestData.showCMHint = showCMHint;
 
         /**
          * Set code mirror theme and readonly property considering requestData.type
@@ -52,6 +87,22 @@ define([], function () {
         }
 
 
+        /**
+         * Show hints for first codemirror instancesk
+         */
+        function showCMHint(type) {
+
+            if (!$scope.shownCMHint){
+
+                $mdToast.show(
+                    $mdToast.simple()
+                        .textContent('Use "Ctrl +" key and "Ctrl -" key in editor to enlarge or reduce json font size')
+                        .position('top right')
+                        .parent(angular.element('.yangmanModule__right-panel__req-data__cm-' + type))
+                        .hideDelay(50000)
+                );
+            }
+        }
 
         /**
          * Initialization
@@ -61,6 +112,8 @@ define([], function () {
             requestData.type = type;
             initEditorOptions();
 
+            showCMHint(type);
+
             $scope.$on('YANGMAN_SET_CODEMIRROR_DATA_' + type, function (event, args){
                 requestData.data = args.params.data;
             });
index e922ee1a16c6256d19c5e230172275ee7c346858..43eae57b4aca0fa389abf23111bf3c8a96595d97 100644 (file)
@@ -6,11 +6,11 @@ define([
     angular.module('app.yangman').controller('RequestHeaderCtrl', RequestHeaderCtrl);
 
     RequestHeaderCtrl.$inject = [
-        '$mdDialog', '$scope', '$rootScope', 'ENV', 'YangmanService', 'ParametersService', 'PathUtilsService',
+        '$mdDialog', '$mdToast', '$scope', '$rootScope', 'ENV', 'YangmanService', 'ParametersService', 'PathUtilsService',
         'RequestsService', '$filter', 'DataBackupService',
     ];
 
-    function RequestHeaderCtrl($mdDialog, $scope, $rootScope, ENV, YangmanService, ParametersService, PathUtilsService,
+    function RequestHeaderCtrl($mdDialog, $mdToast, $scope, $rootScope, ENV, YangmanService, ParametersService, PathUtilsService,
                                RequestService, $filter, DataBackupService) {
         var requestHeader = this;
 
@@ -21,6 +21,7 @@ define([
         requestHeader.selectedPluginsButtons = [];
         requestHeader.selectedPlugin = null;
         requestHeader.statusObj = null;
+        requestHeader.executingProgress = false;
 
         // methods
         requestHeader.executeOperation = executeOperation;
@@ -54,6 +55,7 @@ define([
             init();
             setRequestUrl(args.params.path);
             setRequestMethod(args.params.method);
+            setRequestStatus(args.params.statusObj);
             setJsonView();
             (args.cbk || angular.noop)();
         });
@@ -76,6 +78,10 @@ define([
             requestHeader.selectedOperation = method;
         }
 
+        function setRequestStatus(statusObj){
+            requestHeader.statusObj = statusObj;
+        }
+
         /**
          * Show popup for parameters administration
          * @param event
@@ -153,6 +159,10 @@ define([
             $scope.rootBroadcast('YANGMAN_SET_CODEMIRROR_DATA_' + type, { data: JSON.stringify(data, null, 4) });
         }
 
+        function sendErrorData(response) {
+            $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA', response);
+        }
+
         /**
          * Create empty parameters list, load from local storage and set to $scope
          */
@@ -257,11 +267,31 @@ define([
             $scope.rootBroadcast('YANGMAN_SAVE_REQUEST_TO_COLLECTION', { event: event, reqObj: historyReq });
         }
 
+        function showRequestProgress(){
+            requestHeader.executingProgress = true;
+        }
+
+
+        function finishRequestProgress(message){
+            requestHeader.executingProgress = false;
+
+            //$mdToast.show(
+            //    $mdToast.simple()
+            //        .textContent(message)
+            //        .position('bottom right')
+            //        .parent(angular.element('.yangmanModule__right-panel__header'))
+            //        .hideDelay(1500)
+            //);
+        }
+
 
         /**
          * Execute request operation
          */
         function executeOperation(requestData, executeCbk){
+
+            showRequestProgress();
+
             setRequestUrl(requestHeader.selectedShownDataType === 'req-data' ? requestHeader.requestUrl : null);
 
             var historyReq = RequestService.createHistoryRequest(null, null, requestHeader.requestUrl,
@@ -296,11 +326,16 @@ define([
 
                 requestHeader.statusObj = reqInfo;
 
+                sendErrorData({});
+
                 // create and set history request
                 historyReq.setExecutionData(
                     reqInfo.requestSrcData,
                     preparedReceivedData,
-                    reqInfo.status
+                    reqInfo.status,
+                    reqInfo.status,
+                    reqInfo.statusText,
+                    reqInfo.time
                 );
 
                 if (requestHeader.selectedShownDataType === 'req-data'){
@@ -327,6 +362,8 @@ define([
                 $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq);
                 (executeCbk || angular.noop)(historyReq);
 
+                finishRequestProgress('dfsaf dasf adsfx');
+
             }
 
             /**
@@ -337,7 +374,13 @@ define([
             function executeReqErrCbk(reqInfo, response) {
                 requestHeader.statusObj = reqInfo;
 
-                historyReq.setExecutionData(reqInfo.requestSrcData, null, reqInfo.status);
+                historyReq.setExecutionData(
+                    reqInfo.requestSrcData, null,
+                    reqInfo.status,
+                    reqInfo.status,
+                    reqInfo.statusText,
+                    reqInfo.time
+                );
                 $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq);
 
                 //setNodeDataFromRequestData(requestHeader.requestUrl);
@@ -345,8 +388,12 @@ define([
                 if (response.data) {
                     // try to fill code mirror editor
                     sendRequestData(response.data, 'RECEIVED');
+                    sendErrorData(response.data);
                 }
                 (executeCbk || angular.noop)(historyReq);
+
+                finishRequestProgress('sadfsadf adsf');
+
             }
 
         }
index de13d1ca6ffa4be339421f2381d2944d6f5dc150..3a5701adf1fb9fec497a81b1f09cc2f3a903ac4e 100644 (file)
@@ -178,10 +178,20 @@ define([
         function showForm(reqObj) {
             var data = reqObj.method === 'GET' ? reqObj.receivedData : reqObj.sentData;
 
+            $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA', {});
+
             $scope.rootBroadcast('YANGMAN_FILL_NODE_FROM_REQ', { requestUrl: reqObj.path, requestData: data },
                 function (){
                     $scope.setRightPanelSection('form');
-                    $scope.rootBroadcast('YANGMAN_HEADER_INIT', { path: reqObj.path, method: reqObj.method });
+                    $scope.rootBroadcast('YANGMAN_HEADER_INIT', {
+                        path: reqObj.path,
+                        method: reqObj.method,
+                        statusObj: {
+                            status: reqObj.responseStatus,
+                            statusText: reqObj.responseStatusText,
+                            time: reqObj.responseTime,
+                        },
+                    });
 
                     if ( $scope.node ) {
                         // try to fill node
@@ -226,7 +236,17 @@ define([
             $scope.setRightPanelSection('req-data');
             $scope.setJsonView(true, reqObj.method !== 'GET');
 
-            $scope.rootBroadcast('YANGMAN_HEADER_INIT', { path: reqObj.path, method: reqObj.method });
+            $scope.rootBroadcast('YANGMAN_HEADER_INIT', {
+                path: reqObj.path,
+                method: reqObj.method,
+                statusObj: {
+                    status: reqObj.responseStatus,
+                    statusText: reqObj.responseStatusText,
+                    time: reqObj.responseTime,
+                },
+            });
+
+            $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA', {});
 
             $scope.rootBroadcast(
                 'YANGMAN_SET_CODEMIRROR_DATA_SENT',
@@ -493,6 +513,9 @@ define([
         function selectRequest(event, requestObj){
             vm.mainList.toggleReqSelection(!event.ctrlKey, requestObj);
             $scope.setHistoryReqsSelected(vm.requestList.selectedRequests.length > 0);
+            if (!event.ctrlKey){
+                vm.showData(requestObj);
+            }
         }
 
         /**
index bc7c352b5c8188e212407e4585131e53581af56c..8edb0b066f1383f06075c01dbad83d73f13f861d 100644 (file)
@@ -20,17 +20,35 @@ define([
 
     angular.module('app.yangman').controller('YangFormCtrl', YangFormCtrl);
 
-    YangFormCtrl.$inject = ['$scope', '$rootScope', '$filter', 'constants'];
+    YangFormCtrl.$inject = ['$scope', '$rootScope', '$filter', 'constants', 'YangUtilsService'];
 
-    function YangFormCtrl($scope, $rootScope, $filter, constants) {
+    function YangFormCtrl($scope, $rootScope, $filter, constants, YangUtilsService) {
         var yangForm = this;
 
         yangForm.viewPath = $scope.globalViewPath + 'rightpanel/form';
+        yangForm.errorMsg = '';
         $scope.constants = constants;
 
         // methods
         yangForm.getNodeName = getNodeName;
 
+        $scope.$on('YANGMAN_SET_ERROR_DATA', setRcvdErrorData);
+
+
+        /**
+         * Read and set error message received from header controller
+         * @param event
+         * @param data
+         */
+        function setRcvdErrorData(event, data) {
+            if (data.params.errors) {
+                yangForm.errorMsg = data.params.errors.error[0]['error-message'];
+            }
+            else {
+                yangForm.errorMsg = '';
+            }
+        }
+
         /**
          * Get node label name
          * @param localeLabel
index 0b012988f5cebe788cc470663d2c9576c753e8b9..d6d90204fd32e9de54872af7a328a3464d764e09 100644 (file)
@@ -43,6 +43,7 @@ define([
         $scope.requestToShow = null;
         $scope.requestDataToShow = '';
         $scope.parametersList = ParametersService.createEmptyParametersList('yangman_parameters');
+        $scope.shownCMHint = false;
 
         main.selectedMainTab = 0;
         main.leftPanelTab = 0;
@@ -77,9 +78,15 @@ define([
         $scope.switchSection = switchSection;
         $scope.setParametersList = setParametersList;
         $scope.unsetPlugin = unsetPlugin;
+        $scope.setCMHintShown = setCMHintShown;
+
 
         init();
 
+        function setCMHintShown(shown) {
+            $scope.shownCMHint = shown;
+        }
+
         /**
          * Set parametersList
          * @param parametersList
index d24be1c1993049ffaca03842eefd58dfcf610950..0cb1fadd34400e78ccf05db7ad430633755a06fd 100644 (file)
@@ -21,6 +21,9 @@ define([], function (){
         self.sentData = null;
         self.status = '';
         self.timestamp = '';
+        self.responseStatus = '';
+        self.responseStatusText = '';
+        self.responseTime = '';
 
         // functions
         self.clone = clone;
@@ -41,8 +44,11 @@ define([], function (){
          * @param name
          * @param collection
          * @param timestamp
+         * @param responseStatus
+         * @param responseTime
+         * @param responseStatusText
          */
-        function setData(sentData, receivedData, status, path, operation, name, collection, timestamp) {
+        function setData(sentData, receivedData, status, path, operation, name, collection, timestamp, responseStatus, responseStatusText, responseTime) {
 
             self.sentData = sentData === null || sentData === undefined || $.isEmptyObject(sentData) ? null : sentData;
             self.name = name;
@@ -53,6 +59,9 @@ define([], function (){
                 null : receivedData;
             self.collection = collection;
             self.timestamp = timestamp;
+            self.responseStatus = responseStatus;
+            self.responseStatusText = responseStatusText;
+            self.responseTime = responseTime;
         }
 
         /**
@@ -60,18 +69,25 @@ define([], function (){
          * @param sentData
          * @param receivedData
          * @param status - http status from response header
+         * @param responseStatus
+         * @param responseTime
+         * @param responseStatusText
          */
-        function setExecutionData(sentData, receivedData, status) {
+        function setExecutionData(sentData, receivedData, status, responseStatus, responseStatusText, responseTime) {
             self.sentData = sentData;
             self.receivedData = receivedData;
             self.status = status ? (status > 199 && status < 205 ? 'success' : 'erorr') : '';
+            self.responseStatus = responseStatus;
+            self.responseStatusText = responseStatusText;
+            self.responseTime = responseTime;
         }
 
 
         /**
          *
          * @returns {{sentData: (null|*), receivedData: (null|*), path: (string|*), collection: (string|*),
-         * method: (string|*), status: (string|*), name: (string|*), timestamp: (string|*)}}
+         * method: (string|*), status: (string|*), name: (string|*), timestamp: (string|*), responseStatus: (string|*),
+         * responseTime: (string|*)}}
          */
         function toJSON() {
             var obj = {
@@ -83,6 +99,9 @@ define([], function (){
                 status: self.status,
                 name: self.name,
                 timestamp: self.timestamp,
+                responseStatus: self.responseStatus,
+                responseStatusText: self.responseStatusText,
+                responseTime: self.responseTime,
             };
 
             return obj;
@@ -101,7 +120,6 @@ define([], function (){
 
         /**
          *
-         * @param sent
          * @param data
          * @returns {string}
          */
@@ -122,9 +140,13 @@ define([], function (){
          * @returns {HistoryRequest}
          */
         function clone() {
+            /**
+             *
+             * @type {HistoryRequestModel}
+             */
             var result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
             result.setData(self.sentData, self.receivedData, self.status, self.path, self.method, self.name,
-                self.collection, self.timestamp);
+                self.collection, self.timestamp, self.responseStatus, self.responseStatusText, self.responseTime);
             return result;
         }
 
index 9c74065dc8adcdce757f3910ffb3b69a26a4fb94..e944795aa52b1b553d59e4ea4002eeca009983af 100644 (file)
@@ -42,7 +42,8 @@ define([
             }
 
             var returnedParamsList = paramsObj.list.filter( function (param){
-                    var paramIndex = usedParamLabelArray.indexOf(param.name);
+                var paramIndex = usedParamLabelArray.indexOf(param.name);
+
                 if ( paramIndex !== -1 ) {
                     return usedParamLabelArray.splice(paramIndex, 1);
                 }
@@ -52,7 +53,7 @@ define([
             });
 
             usedParamLabelArray.forEach(function (param){
-                    returnedParamsList.push(ParametersService.createParameter({ name: param }));
+                returnedParamsList.push(ParametersService.createParameter({ name: param }));
             });
 
             return returnedParamsList;
@@ -88,11 +89,11 @@ define([
         function applyParams(paramsObj, data) {
             var dataStr = JSON.stringify(data);
 
-                if (paramsObj && paramsObj.hasOwnProperty('list')) {
-                    paramsObj.list.forEach(function (param){
-                        dataStr = service.replaceStringInText(dataStr, '<<' + param.name + '>>', param.value);
-                    });
-                }
+            if (paramsObj && paramsObj.hasOwnProperty('list')) {
+                paramsObj.list.forEach(function (param){
+                    dataStr = service.replaceStringInText(dataStr, '<<' + param.name + '>>', param.value);
+                });
+            }
 
             return ParsingJsonService.parseJson(dataStr);
         }
@@ -112,9 +113,6 @@ define([
             return replacedText;
         }
 
-
-
-
         /**
          * Service for creating basic history object
          * @param sentData
@@ -127,12 +125,13 @@ define([
          * @returns {*}
          * @param timestamp
          */
-            function createHistoryRequest(sentData, receivedData, path, operation, status, name, collection, timestamp) {
-
+        function createHistoryRequest(sentData, receivedData, path, operation, status, name, collection, timestamp,
+                        responseStatus, responseStatusText, responseTime) {
             var receivedDataProcessed = status === 'success' ? receivedData : null,
                 result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
 
-                result.setData(sentData, receivedDataProcessed, status, path, operation, name, collection, timestamp);
+            result.setData(sentData, receivedDataProcessed, status, path, operation, name, collection, timestamp,
+                responseStatus, responseStatusText, responseTime);
 
             return result;
         }
@@ -143,11 +142,14 @@ define([
          * @returns {*}
          */
         function createHistoryRequestFromElement(elem) {
-                if (!elem.hasOwnProperty('timestamp')){
-                    elem.timestamp = Date.now();
-                }
+            if (!elem.hasOwnProperty('timestamp')){
+                elem.timestamp = Date.now();
+            }
+
             return service.createHistoryRequest(elem.sentData, elem.receivedData, elem.path, elem.method,
-                    elem.status, elem.name, elem.collection, elem.timestamp);
+                    elem.status, elem.name, elem.collection, elem.timestamp, elem.responseStatus,
+                    elem.responseStatusText, elem.responseTime
+                );
         }
 
         /**
@@ -177,4 +179,4 @@ define([
 
     }
 
-    });
+});
index f11b1e009ddf375e370953d7c19d61289d671859..82599a49ae21abdf5e759bce90bd6d9e64f1b94f 100644 (file)
@@ -3,7 +3,7 @@
               ng-class="{selected: request.selected}"
               layout="row"
               flex="100"
-              ng-click="reqList.selectRequest($event, request); reqList.showData(request);">
+              ng-click="reqList.selectRequest($event, request);">
 
     <div flex="15" class="yangmanModule__requests-list__group__item__method" layout-align="center center">
         <p class="{{request.status === 'success' || !request.status ? request.method : 'error'}}"> {{request.method === 'DELETE' ? 'DEL' : request.method }} </p>
index 0933e7e4abe87b3f37eed364f78456bdbd79e581..79a89688de84102e986d4848320dcbf4c146700f 100644 (file)
@@ -1,14 +1,18 @@
 <!-- Header -->
 <section md-whiteframe="1"
          class="yangmanModule__right-panel__header"
+style="margin-bottom: 0px!important;"
          ng-include src="globalViewPath + 'rightpanel/request-header.tpl.html'"></section>
 <!-- /Header -->
 
+<section class="requestMsgs" style="height: 25px;"></section>
+
 <!-- Form section -->
 <section class="yangmanModule__right-panel__form bottom-content"
          ng-show="rightPanelSection === 'form'"
          ng-if="node"
          ng-controller="YangFormCtrl as yangForm">
+    <div ng-show="yangForm.errorMsg"><p class="error">{{ yangForm.errorMsg }}</p></div>
     <div ng-include src="yangForm.viewPath + '/' + selectedDatastore.label + '/' + node.type+'.tpl.html'"></div>
 </section>
 <!-- /Form section -->
@@ -22,7 +26,7 @@
          ng-show="main.jsonView.sent"
          ng-init="requestData.init('SENT')"
          ng-class="{'half-size': main.jsonView.received && main.jsonView.sent}"
-         class="ym-resizable-s">
+         class="yangmanModule__right-panel__req-data__cm-SENT ym-resizable-s">
 
         <h5>{{'YANGMAN_SENT_DATA' | translate}}</h5>
         <div md-whiteframe="2" ng-include src="globalViewPath + 'rightpanel/request-data.tpl.html'"></div>
@@ -33,7 +37,7 @@
          ng-show="main.jsonView.received"
          ng-init="requestData.init('RECEIVED')"
          ng-class="{'half-size': main.jsonView.received && main.jsonView.sent}"
-         class="ym-resizable-s">
+         class="yangmanModule__right-panel__req-data__cm-RECEIVED ym-resizable-s">
 
         <h5>{{'YANGMAN_RECEIVED_DATA' | translate}}</h5>
         <div md-whiteframe="2" ng-include src="globalViewPath + 'rightpanel/request-data.tpl.html'"></div>
index 8d0a8106da6caca3c76550a2bfcc165c71eb86c3..f30ad70fa01b571955066d9c779233270b877777 100644 (file)
                                 ng-if="rightPanelSection === 'form'"
                                 class="input-span">
 
-                <input type="text" placeholder="{{!selectedSubApi ? ('YANGMAN_REQ_URL' | translate) : ''}}" ng-disabled="true">
+                <input type="text"
+                       placeholder="{{!selectedSubApi ? ('YANGMAN_REQ_URL' | translate) : ''}}"
+                       ng-disabled="true">
             </md-input-container>
         </section>
 
         <!-- Action buttons -->
         <md-input-container flex="nogrow" layout="row" layout-align="start start" class="action-buttons">
             <!-- Execute action button -->
-            <md-button class="md-raised md-primary" ng-click="requestHeader.prepareDataAndExecute(main.modulesTreeDisplayed() ? main.leftPanelShowModule : null)">{{'YANGMAN_SEND' | translate}}</md-button>
+            <md-button class="md-raised md-primary has-progress"
+                       ng-click="requestHeader.prepareDataAndExecute(
+                            main.modulesTreeDisplayed() ? main.leftPanelShowModule : null
+                       )">
+                <md-progress-circular ng-disabled="!vm.activated" class="md-raised" md-diameter="25px" ng-show="requestHeader.executingProgress"></md-progress-circular>
+                {{'YANGMAN_SEND' | translate}}
+            </md-button>
 
             <!-- Save request -->
-            <md-button class="md-raised md-warn" ng-click="requestHeader.saveRequestToCollection($event)">{{'YANGMAN_SAVE' | translate}}</md-button>
+            <md-button class="md-raised md-warn" ng-click="requestHeader.saveRequestToCollection($event)">
+                {{'YANGMAN_SAVE' | translate}}
+            </md-button>
 
             <!-- Parameters button -->
-            <md-button class="md-raised" ng-click="requestHeader.showParamsAdmin($event)">{{'YANGMAN_PARAMETERS' | translate}}</md-button>
+            <md-button class="md-raised" ng-click="requestHeader.showParamsAdmin($event)">
+                {{'YANGMAN_PARAMETERS' | translate}}
+            </md-button>
 
             <!-- sub api custom functionality menu -->
             <md-menu ng-show="selectedSubApi.custFunct.length || requestHeader.selectedPluginsButtons.length">
index be00beea9b9072f16d1322d796c2cbc1b78cb171..ec9e15ca0fc29000b7d665b96a20a2d103faa67f 100644 (file)
@@ -134,6 +134,32 @@ button{
     label{
         font-weight: normal;
     }
+
+    md-progress-circular{
+        position: absolute;
+        margin-top: 5px;
+    }
+    md-progress-circular .md-inner .md-gap{
+        border-top-color: #ffffff;
+        border-bottom-color: #ffffff;
+    }
+
+    md-progress-circular .md-inner .md-left .md-half-circle{
+        border-left-color: #ffffff;
+        border-top-color: #ffffff;
+    }
+
+    md-progress-circular .md-inner .md-right .md-half-circle{
+        border-top-color: #ffffff;
+        border-right-color: #ffffff;
+    }
+}
+
+button.has-progress{
+    span{
+        margin-left: 23px;
+        margin-right: 23px;
+    }
 }
 
 .ui-resizable-e{
@@ -515,6 +541,10 @@ button{
             }
 
             .CodeMirror { height: 100%; }
+
+            md-toast{
+                margin-top: 24px;
+            }
         }
 
         &__form{