Yangman - update collection saving 55/42055/7
authorDaniel Kuzma -X (dakuzma - PANTHEON TECHNOLOGIES at Cisco) <dakuzma@cisco.com>
Tue, 19 Jul 2016 14:44:44 +0000 (16:44 +0200)
committerDaniel Malachovsky <dmalacho@cisco.com>
Fri, 22 Jul 2016 13:37:23 +0000 (15:37 +0200)
- fix saving data depend on selected operation
- fix show form
- fix params in forms partially
- fix saving time and status message in collection
- fix saving get data into collection
- fix header position of input error message

Change-Id: I741f1c16805f1a56946c2659e64c8beb5ba86186
Signed-off-by: Daniel Kuzma -X (dakuzma - PANTHEON TECHNOLOGIES at Cisco) <dakuzma@cisco.com>
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/services/requests.services.js
modules/yangman-resources/src/main/resources/yangman/services/yangman.services.js
modules/yangman-resources/src/main/resources/yangman/views/rightpanel/request-header.tpl.html
modules/yangman-resources/src/main/resources/yangman/yangman.less

index 6b8e7dec014fa2bb7e8bbe3f564dea3399d4dc1d..5c278d0fcaa0af217b257a8956ba3486e3ade24c 100644 (file)
@@ -291,28 +291,25 @@ define([
         }
 
         function saveRequestToCollection(event) {
+            var historyReq = null,
+                sentData = { reqData: null },
+                receivedData = { reqData: null };
 
             if (requestHeader.selectedShownDataType === 'form') {
                 requestHeader.setRequestUrl();
             }
 
-            var historyReq = RequestService.createHistoryRequest(null, null, requestHeader.requestUrl,
-                    requestHeader.selectedOperation, '', '', ''),
-                reqData = {};
-
-            if ( requestHeader.selectedShownDataType === 'req-data' ) {
-                var params = { reqData: null };
-                $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', params);
-                reqData = params.reqData ? angular.fromJson(params.reqData) : {};
-            }
-            else {
-                var data = { srcData: {} };
+            historyReq = RequestService.createHistoryRequest(
+                null, null, requestHeader.requestUrl, requestHeader.selectedOperation, '', '', ''
+            );
 
-                YangmanService.setSrcDataByDataType(data, $scope.node, {}, 'form');
-                reqData = data.srcData;
-            }
+            $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', sentData);
+            $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_RECEIVED', receivedData);
 
-            historyReq.setExecutionData(reqData, {}, '');
+            RequestService.fillRequestByMethod(
+                historyReq, sentData, receivedData, requestHeader.selectedOperation, $scope.node,
+                requestHeader.selectedShownDataType
+            );
 
             $scope.rootBroadcast('YANGMAN_SAVE_REQUEST_TO_COLLECTION', { event: event, reqObj: historyReq });
         }
@@ -404,6 +401,9 @@ define([
                     if ($scope.node){
 
                         YangmanService.fillNodeFromResponse($scope.node, preparedReceivedData);
+                        YangmanService.handleNodeIdentifier(
+                            $scope.parametersList, $scope.selectedSubApi, $scope.node
+                        );
                         $scope.node.expanded = true;
 
                         $scope.rootBroadcast('YANGMAN_DISABLE_ADDING_LIST_ELEMENT');
index 2b73d3def0ff6c1e6607ff9572cadba4dba85a68..6f36731890b047e82a3849dd77944f91f83416e0 100644 (file)
@@ -205,12 +205,18 @@ define([
         function showForm(reqObj) {
             var data = reqObj.sentData;
 
-            // exception for get method
+            // exception for get meth
             if ( reqObj.method === 'GET' ) {
                 data = reqObj.receivedData;
-                $scope.rootBroadcast('YANGMAN_SET_CODEMIRROR_DATA_RECEIVED', { data: reqObj.setDataForView(data) });
             }
 
+            $scope.rootBroadcast(
+                'YANGMAN_SET_CODEMIRROR_DATA_RECEIVED', { data: reqObj.setDataForView(reqObj.receivedData) }
+            );
+            $scope.rootBroadcast(
+                'YANGMAN_SET_CODEMIRROR_DATA_SENT', { data: reqObj.setDataForView(reqObj.sentData) }
+            );
+
             $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA',
                 reqObj.receivedData && reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {});
 
@@ -452,7 +458,7 @@ define([
          */
         function saveRequests(requests){
             requests.forEach(function (reqObj){
-                vm.collectionList.addItemToList(reqObj);
+                vm.collectionList.addItemToList(RequestsService.clearUnnecessaryProperties(reqObj.clone()));
                 vm.collectionList.saveToStorage();
                 refreshCollectionsWithExpansion();
             });
index 76b2a5a0f0b032f8ba3eb4b2535c0cd0bf97f8ab..64ae62d4698128671c57efe373cee101c0dd6d9e 100644 (file)
@@ -7,21 +7,166 @@ define([
 
     angular.module('app.yangman').service('RequestsService', RequestsService);
 
-    RequestsService.$inject = ['$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService'];
+        RequestsService.$inject = [
+            '$filter', 'PathUtilsService', 'ParametersService', 'ParsingJsonService', 'YangUtilsService',
+            'RequestBuilderService',
+        ];
 
-    function RequestsService($filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService){
+        function RequestsService(
+            $filter, PathUtilsService, ParametersService, ParsingJsonService, YangUtilsService, RequestBuilderService
+        ){
 
         var service = {};
 
         service.applyParamsToObj = applyParamsToObj;
         service.applyParamsToStr = applyParamsToStr;
+            service.clearUnnecessaryProperties = clearUnnecessaryProperties;
         service.createEmptyCollectionList = createEmptyCollectionList;
         service.createEmptyHistoryList = createEmptyHistoryList;
         service.createHistoryRequestFromElement = createHistoryRequestFromElement;
         service.createHistoryRequest = createHistoryRequest;
+            service.fillRequestByMethod = fillRequestByMethod;
+            service.fillRequestByViewType = fillRequestByViewType;
+            service.findIdentifierByParam = findIdentifierByParam;
         service.scanDataParams = scanDataParams;
         service.replaceStringInText = replaceStringInText;
 
+            /**
+             * Clear unnecesary properties for saving to collection
+             * @param request
+             */
+            function clearUnnecessaryProperties(request){
+                request.responseStatus = null;
+                request.responseStatusText = null;
+                request.responseTime = null;
+
+                return request;
+            }
+
+            /**
+             * Find parametrized identifier in path array
+             * @param params
+             * @param pathElement
+             * @returns {*}
+             */
+            function findIdentifierByParam(params, pathElement){
+                var foundIdentifier = null;
+
+                if ( pathElement.hasIdentifier() ){
+                    pathElement.identifiers.some(function (item){
+                        return params.list.some(function (param){
+                            var contained = item.value.indexOf('<<' + param.name + '>>') > -1;
+
+                            if ( contained ){
+                                foundIdentifier = item;
+                            }
+
+                            return contained;
+                        });
+                    });
+                }
+
+                return foundIdentifier;
+            }
+
+            /**
+             * Get data for saving request depend on view type
+             * @param node
+             * @param viewType
+             * @param requestData
+             * @param dataType
+             * @param method
+             * @returns {*}
+             */
+            function fillRequestByViewType(node, viewType, requestData, dataType, method){
+                var setDataByViewType = {
+                    form: function () {
+                        var data = {},
+                            emptyObject = method === 'POST' && dataType === 'received' && node.type !== 'rpc';
+
+                        if ( !emptyObject ) {
+                            node.buildRequest(RequestBuilderService, data, node.module);
+                            data = checkNodeTypeData(node, data, dataType, requestData);
+                        }
+
+                        return data;
+                    },
+                    'req-data': function (){
+                        return requestData ? angular.fromJson(requestData) : {};
+                    },
+                };
+
+                return setDataByViewType[viewType]();
+
+                /**
+                 * Exceptions based on node type
+                 * @param node
+                 * @param data
+                 * @param dataType
+                 * @param requestData
+                 * @returns {*}
+                 */
+                function checkNodeTypeData(node, data, dataType, requestData){
+                    var copyData = angular.copy(data),
+                        setDataByNodeType = {
+                            rpc: function (){
+
+                                if ( dataType === 'received' ) {
+                                    copyData = requestData ? angular.fromJson(requestData) : {};
+                                }
+
+                                return copyData;
+                            },
+                            default: function () {
+                                return data;
+                            },
+                        };
+
+                    return (setDataByNodeType[node.type] || setDataByNodeType.default)();
+                }
+            }
+
+            /**
+             * Fill history request data depend on selected method - saving to collection
+             * @param requestObj
+             * @param sentData
+             * @param receivedData
+             * @param method
+             */
+            function fillRequestByMethod(requestObj, sentData, receivedData, method, node, viewType){
+                var setDataByMethod = {
+                        GET: function (){
+                            return {
+                                sentData: {},
+                                receivedData: receivedData.reqData ? angular.fromJson(receivedData.reqData) : {},
+                            };
+                        },
+                        POST: function (){
+                            return {
+                                sentData: fillRequestByViewType(node, viewType, sentData.reqData, 'sent', method),
+                                receivedData: fillRequestByViewType(
+                                    node, viewType, receivedData.reqData, 'received', method
+                                ),
+                            };
+                        },
+                        PUT: function (){
+                            return {
+                                sentData: fillRequestByViewType(node, viewType, sentData.reqData, 'sent', method),
+                                receivedData: {},
+                            };
+                        },
+                        DELETE: function (){
+                            return {
+                                sentData: {},
+                                receivedData: {},
+                            };
+                        },
+                    },
+                    data = setDataByMethod[method]();
+
+                requestObj.setExecutionData(data.sentData, data.receivedData, '');
+            }
+
         /**
          * Scan used parameters in current line of codemirror
          * @param {ParametersListModel} paramsObj - list of parameters to be searched for
index 89c1393f18bab263efa55709a81891fd0a779d50..c26ac05b718ef8f96a8ba9882d9c230fdc99806e 100644 (file)
@@ -29,6 +29,7 @@ define([], function () {
             executeRequestOperation: executeRequestOperation,
             fillNodeFromResponse: fillNodeFromResponse,
             getDataStoreIndex: getDataStoreIndex,
+            handleNodeIdentifier: handleNodeIdentifier,
             prepareAllRequestData: prepareAllRequestData,
             prepareReceivedData: prepareReceivedData,
             putIntoObj: putIntoObj,
@@ -38,6 +39,22 @@ define([], function () {
 
         return service;
 
+        /**
+         * Handle param continuum between header path array and node data
+         * @param parametersList
+         * @param selectedSubApi
+         * @param node
+         */
+        function handleNodeIdentifier(parametersList, selectedSubApi, node){
+            var identifier = RequestsService.findIdentifierByParam(
+                parametersList, selectedSubApi.pathArray[selectedSubApi.pathArray.length - 1]
+            );
+
+            if ( identifier ){
+                PathUtilsService.fillListNode(node, identifier.label, identifier.value);
+            }
+        }
+
         /**
          * Put data to output container if root node is rpc
          * @param data
index e62f7b6fadd36af2244d0e0c8c3fe2aaa9b1e873..b1c000f512074da8f0ea4ffb34aa0cea02a68711 100644 (file)
@@ -36,6 +36,7 @@
                 <md-input-container flex="nogrow" md-no-float
                                     ng-repeat="identifier in pathElem.identifiers"
                                     ng-show="pathElem.hasIdentifier()"
+                                    layout="column"
                                     class="nrp">
 
                     <input type="text"
             <!-- Request time -->
             <span flex="30">
                 {{'YANGMAN_TIME' | translate}}:
-                <span ng-if="requestHeader.statusObj">{{requestHeader.statusObj.time}} ms</span>
+                <span ng-if="requestHeader.statusObj && requestHeader.statusObj.time">
+                    {{requestHeader.statusObj.time}} ms
+                </span>
             </span>
         </md-content>
     </section>
index c8bc4b6f88ef47cbdacb26eaf2622b452a78c694..5f0494bcde657601f7784a68b51d7a1ca1d6aebc 100644 (file)
@@ -213,11 +213,13 @@ md-input-container{
 
     .md-custom-error{
         color: @reqError;
-        position: absolute;
-        bottom: 4px;
-        left: 3px;
+        margin-top: 4px;
+        margin-left: 3px;
         font-size: 11px;
         line-height: 14px;
+        -webkit-order: 3;
+        -ms-flex-order: 3;
+        order: 3;
     }
 }