Yangman - requests settings 35/48335/5
authorStanislav Jamrich <sjamrich@cisco.com>
Mon, 14 Nov 2016 18:39:47 +0000 (19:39 +0100)
committerStanislav Jamrich <sjamrich@cisco.com>
Mon, 28 Nov 2016 12:15:33 +0000 (13:15 +0100)
- affect request execution and saving with set of settings
- refactor of controllers

Change-Id: I9e3055c7deb90d672b351c455920c7d5c83665a0
Signed-off-by: Stanislav Jamrich <sjamrich@cisco.com>
22 files changed:
modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json
modules/yangman-resources/src/main/resources/yangman/controllers/edit-collection-dialog.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/form/ym-list.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/history-settings.controller.js [new file with mode: 0644]
modules/yangman-resources/src/main/resources/yangman/controllers/module-detail.controller.js
modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js
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/save-req-dialog.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-settings.model.js [new file with mode: 0644]
modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js
modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js
modules/yangman-resources/src/main/resources/yangman/services/history-settings.services.js [new file with mode: 0644]
modules/yangman-resources/src/main/resources/yangman/services/requests.services.js
modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-settings.tpl.html [new file with mode: 0644]
modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-tab.tpl.html
modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.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 7e697fb429e6fa8bc993fd23083ef1015e72154b..3f0f110bdda4d9499bea7c07c5d1247dca315e97 100644 (file)
   "YANGMAN_LIST_DELETE_ITEM": "Delete list item",
   "YANGMAN_LIST_INDEX_DUPLICATE": "Duplicated index",
   "YANGMAN_LIST_PREV_ITEM": "show previous item",
+  "YANGMAN_FILL_FORM_WITH_RECEIVED": "Fill form with received data after execution",
   "YANGMAN_LIST_NEXT_ITEM": "show next item",
-  "YANGMAN_SHOW_HIDE_CON": "show / hide container"
+  "YANGMAN_HISTORY_SETTINGS": "History requests settings",
+  "YANGMAN_HISTORY_SETTINGS_GENERAL": "General settings",
+  "YANGMAN_HISTORY_SETTINGS_COUNT": "History requests buffer size",
+  "YANGMAN_HISTORY_SETTINGS_SAVE_RECEIVED_DATA": "Save received data",
+  "YANGMAN_HISTORY_SETTINGS_SAVE_RESPONSE_DATA": "Save base response data (Status, Execution time)",
+  "YANGMAN_HISTORY_SETTINGS_FILL_FORM_WITH_RECEIVED": "Fill form view with received data on history request select",
+  "YANGMAN_HISTORY_SETTINGS_REQUIRED": "Required field"
 }
index e449c90ac2189de018c5840a9fd4efbbaa268bd2..9beb0edf3054ec968b993900a7bd91b2d5236cb9 100644 (file)
@@ -18,6 +18,9 @@ define([], function () {
 
         init();
 
+        /**
+         * Load existing collection names
+         */
         function init(){
             vm.existingNames = allCollections.map(function (item){
                 return item.name;
index 1dac57b073072ee29121b60e4955af8855bda457..1fce67effb37457d4564cc4a6fd5c49b7385a4eb 100644 (file)
@@ -51,16 +51,16 @@ define([], function () {
         function init() {
             yangList.disableAddingListElement = $scope.checkAddingListElement($scope.node);
 
-            if(yangList.disableAddingListElement &&
+            if (yangList.disableAddingListElement &&
                 !$scope.node.listData.length &&
                 $scope.selectedDatastore.label === constants.DATA_STORE_CONFIG) {
 
                 yangList.addListElem();
             }
-
-            if (!$scope.node.listData.length) {
+            if ($scope.node.listData && !$scope.node.listData.length) {
                 yangList.currentDisplayIndex = 1;
             }
+
         }
 
         /**
diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/history-settings.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/history-settings.controller.js
new file mode 100644 (file)
index 0000000..3a6537e
--- /dev/null
@@ -0,0 +1,41 @@
+define([], function () {
+    'use strict';
+
+    angular.module('app.yangman').controller('HistorySettingsCtrl', HistorySettingsCtrl);
+
+    HistorySettingsCtrl.$inject = ['$mdDialog', 'settingsObj'];
+
+    function HistorySettingsCtrl($mdDialog, settingsObj) {
+        var settingsCtrl = this;
+
+        settingsCtrl.mySettingsObj = settingsObj.clone();
+
+        settingsCtrl.cancel = cancel;
+        settingsCtrl.save = save;
+        settingsCtrl.saveReceivedChanged = saveReceivedChanged;
+
+        /**
+         *
+         */
+        function saveReceivedChanged() {
+            if (!settingsCtrl.mySettingsObj.data.saveReceived) {
+                settingsCtrl.mySettingsObj.data.fillWithReceived = false;
+
+            }
+        }
+
+
+        function cancel() {
+            $mdDialog.cancel();
+        }
+
+        function save() {
+            settingsCtrl.mySettingsObj.saveToStorage();
+            $mdDialog.hide(settingsCtrl.mySettingsObj);
+        }
+
+    }
+
+    return HistorySettingsCtrl;
+
+});
index 5c2168c544c26fb6425a2ed04ee43cfd89066022..0976256fa545adeee1de5dd9065d5aca2a85b664 100644 (file)
@@ -45,6 +45,8 @@ define([
                 $scope.setApi($scope.apis[apiIndex], $scope.apis[apiIndex].subApis[subApiIndex], true, true);
                 $scope.setNode($scope.selectedSubApi.node);
                 $scope.clearCM();
+                // let request header ctrl know, that codemirror data should be renewed with data from node
+                $scope.rootBroadcast(constants.YANGMAN_CHANGE_TO_JSON);
             }
         }
 
index 4d5fcf4b96d75f96eeaed281b20316a792389fb2..2ce6108dad79816bb93aaa9859de576e486dfd6d 100644 (file)
@@ -11,7 +11,7 @@ define([
         var openMenuListener,
             vm = this;
 
-        vm.parametersList = parametersList;
+        vm.parametersList = parametersList.clone();
         vm.search = '';
         vm.sortField1 = '_name';
         vm.sortField2 = '_value';
index 2064d377d4570ef92e9b92a5bbfc81f78f5a7e18..4fc005bc8c271960b0fb8d13511c245484b1fd8b 100644 (file)
@@ -77,7 +77,6 @@ define([], function () {
             },
         };
 
-        // methods
         requestData.init = init;
         requestData.enlargeCMFont = enlargeCMFont;
         requestData.reduceCMFont = reduceCMFont;
@@ -118,7 +117,6 @@ define([], function () {
             requestData.dataEditorOptions.readOnly = requestData.type === constants.REQUEST_DATA_TYPE_RECEIVED;
         }
 
-
         /**
          * Initialization
          * @param type
index f851347d138e52039e744bf11135a06da57db25b..5907735196b6340eca089dd6fbab9cfd7499564c 100644 (file)
@@ -26,6 +26,7 @@ define([
         requestHeader.selectedPluginsButtons = [];
         requestHeader.selectedPlugin = null;
         requestHeader.statusObj = null;
+        requestHeader.fillFormWithReceivedData = true;
 
         // methods
         requestHeader.executeOperation = executeOperation;
@@ -40,7 +41,9 @@ define([
         requestHeader.saveRequestToCollection = saveRequestToCollection;
         requestHeader.unsetPluginFunctionality = unsetPluginFunctionality;
 
-        // watchers
+        $scope.$on(constants.YANGMAN_CHANGE_TO_JSON, function () {
+            sendRequestData($scope.buildRootRequest(), 'SENT');
+        });
         /**
          * Set selected operations based on data store
          */
@@ -135,7 +138,7 @@ define([
         function changeDataType(){
             $scope.switchSection('rightPanelSection', requestHeader.selectedShownDataType);
 
-            if(!$scope.node || requestHeader.urlChanged) {
+            if (!$scope.node || requestHeader.urlChanged) {
                 requestHeader.setRequestUrl();
                 requestHeader.urlChanged = false;
             }
@@ -216,6 +219,10 @@ define([
             );
         }
 
+        /**
+         * Set error data to be shown in form area
+         * @param response
+         */
         function sendErrorData(response) {
             $scope.rootBroadcast(constants.YANGMAN_SET_ERROR_DATA, response);
         }
@@ -345,6 +352,10 @@ define([
         }
 
 
+        /**
+         * Stop showing progressbar
+         * @param message
+         */
         function finishRequestProgress(message){
             $scope.rootBroadcast(constants.YANGMAN_EXECUTING_REQUEST_PROGRESS_STOP);
         }
@@ -355,8 +366,8 @@ define([
         function executeOperation(requestData, executeCbk){
             TimeTrackingService.startTimer();
             var allowExecuteOperation =
-                requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_FORM && $scope.selectedSubApi ?
-                    !PathUtilsService.checkEmptyIdentifiers($scope.selectedSubApi.pathArray) : true;
+                    requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_FORM && $scope.selectedSubApi ?
+                        !PathUtilsService.checkEmptyIdentifiers($scope.selectedSubApi.pathArray) : true;
 
 
             if ( allowExecuteOperation ) {
@@ -409,13 +420,17 @@ define([
              */
             function executeReqSuccCbk(reqInfo, response) {
 
-                var preparedReceivedData = YangmanService.prepareReceivedData(
-                    $scope.node,
-                    requestHeader.selectedOperation,
-                    response.data ? response.data.plain() : {},
-                    reqInfo.requestSrcData,
-                    requestHeader.selectedShownDataType
-                );
+                var preparedReceivedData = {};
+
+                if (requestHeader.fillFormWithReceivedData) {
+                    preparedReceivedData = YangmanService.prepareReceivedData(
+                        $scope.node,
+                        requestHeader.selectedOperation,
+                        response.data ? response.data.plain() : {},
+                        reqInfo.requestSrcData,
+                        requestHeader.selectedShownDataType
+                    );
+                }
 
                 finishRequestProgress();
 
@@ -424,13 +439,12 @@ define([
                 sendErrorData({});
 
                 if (requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA){
-
                     setNodeDataFromRequestData(requestHeader.requestUrl);
                     sendRequestData(preparedReceivedData, constants.REQUEST_DATA_TYPE_RECEIVED);
                     sendRequestData(reqInfo.requestSrcData || {}, 'SENT');
                 } else {
 
-                    if ($scope.node && requestHeader.selectedOperation !== constants.OPERATION_DELETE){
+                    if ($scope.node && requestHeader.selectedOperation !== constants.OPERATION_DELETE && requestHeader.fillFormWithReceivedData){
 
                         YangmanService.fillNodeFromResponse($scope.node, preparedReceivedData);
                         YangmanService.handleNodeIdentifier(
@@ -449,11 +463,11 @@ define([
 
                 historyReq.setExecutionData(
                     reqInfo.requestSrcData,
-                    preparedReceivedData,
-                    reqInfo.status,
-                    reqInfo.status,
-                    reqInfo.statusText,
-                    requestHeader.statusObj.time
+                    $scope.historySettings.data.saveReceived ? preparedReceivedData : null,
+                    $scope.historySettings.data.saveResponseData ? reqInfo.status : '',
+                    $scope.historySettings.data.saveResponseData ? reqInfo.status : '',
+                    $scope.historySettings.data.saveResponseData ? reqInfo.statusText : '',
+                    $scope.historySettings.data.saveResponseData ? requestHeader.statusObj.time : ''
                 );
 
                 $scope.rootBroadcast(constants.YANGMAN_SAVE_EXECUTED_REQUEST, historyReq, function (){
@@ -478,11 +492,11 @@ define([
 
                 historyReq.setExecutionData(
                     reqInfo.requestSrcData,
-                    response.data,
-                    reqInfo.status,
-                    reqInfo.status,
-                    reqInfo.statusText,
-                    requestHeader.statusObj.time
+                    $scope.historySettings.data.saveReceived ? response.data : null,
+                    $scope.historySettings.data.saveResponseData ? reqInfo.status : '',
+                    $scope.historySettings.data.saveResponseData ? reqInfo.status : '',
+                    $scope.historySettings.data.saveResponseData ? reqInfo.statusText : '',
+                    $scope.historySettings.data.saveResponseData ? requestHeader.statusObj.time : ''
                 );
                 $scope.rootBroadcast(constants.YANGMAN_SAVE_EXECUTED_REQUEST, historyReq, function (){
                     $scope.rootBroadcast(constants.YANGMAN_SELECT_THE_NEWEST_REQUEST);
@@ -524,6 +538,7 @@ define([
                 requestHeader.statusObj.time = null;
             }
 
+
             showRequestProgress();
 
             $timeout(prepareData);
index e26061164ecf7bd20110bfae6704d63512ab9570..fc34420aa3e368c03066bb7076eb70cac80a47b5 100644 (file)
@@ -1,8 +1,9 @@
 define([
     'app/yangman/controllers/save-req-dialog.controller',
     'app/yangman/controllers/edit-collection-dialog.controller',
+    'app/yangman/controllers/history-settings.controller',
     'app/yangman/services/handle-file.services',
-], function (SaveReqDialogCtrl, EditCollectionDialogCtrl) {
+], function (SaveReqDialogCtrl, EditCollectionDialogCtrl, HistorySettingsCtrl) {
     'use strict';
 
     angular.module('app.yangman').controller('RequestsListCtrl', RequestsListCtrl);
@@ -28,24 +29,14 @@ define([
                               YangmanService, YangmanDesignService, constants) {
         var vm = this;
 
-        /**
-         * List of all collections containing requests, loads even for history controller to use collection names
-         * in saving requests dialog
-         * @type {*|CollectionList}
-         */
         vm.collectionList = null;
         vm.constants = constants;
 
-        /**
-         *
-         * @type {*|HistoryList}
-         */
         vm.requestList = null;
         vm.mainList = null;
         vm.collectionsSortAsc = true;
         vm.search = '';
 
-        // methods
         vm.clearCollectionList = clearCollectionList;
         vm.clearFilter = clearFilter;
         vm.clearHistoryList = clearHistoryList;
@@ -66,6 +57,7 @@ define([
         vm.showDgDeleteRequests = showDgDeleteRequests;
         vm.showDgEditCollection = showDgEditCollection;
         vm.showDgSaveReq = showDgSaveReq;
+        vm.showHistorySettings = showHistorySettings;
         vm.showForm = showForm;
         vm.toggleCollectionsSort = toggleCollectionsSort;
         vm.selectOnlyThisRequest = selectOnlyThisRequest;
@@ -143,7 +135,6 @@ define([
 
         /**
          * Clear value of input file used to import collection
-         * todo: move to design utils
          */
         function clearFileInputValue(){
             angular.element(document).find('#importCollection').val('');
@@ -151,7 +142,6 @@ define([
 
         /**
          * Importing collection from a file
-         * todo: error handling - msgs for user
          * @param $fileContent
          */
         function readCollectionFromFile($fileContent) {
@@ -206,8 +196,7 @@ define([
         function showForm(reqObj) {
             var data = reqObj.sentData;
 
-            // exception for get meth
-            if ( reqObj.method === constants.OPERATION_GET ) {
+            if ($scope.historySettings.data.fillWithReceived) {
                 data = reqObj.receivedData;
             }
 
@@ -236,14 +225,15 @@ define([
 
                     if ( $scope.node ) {
                         // prepare data for filling form
-                        data = $scope.node.type === constants.NODE_RPC ?
-                                YangmanService.prepareReceivedData(
-                                    $scope.node,
-                                    reqObj.method,
-                                    reqObj.receivedData,
-                                    reqObj.sentData,
-                                    constants.DISPLAY_TYPE_FORM
-                                ) : data;
+                        if ($scope.node.type === constants.NODE_RPC && $scope.historySettings.data.fillWithReceived) {
+                            data = YangmanService.prepareReceivedData(
+                                $scope.node,
+                                reqObj.method,
+                                reqObj.receivedData,
+                                reqObj.sentData,
+                                constants.DISPLAY_TYPE_FORM
+                            );
+                        }
 
                         // try to fill node
                         YangmanService.fillNodeFromResponse($scope.node, data);
@@ -458,6 +448,28 @@ define([
             }).then(saveRequests);
         }
 
+        /**
+         * Show popup window for history requests settings
+         * @param ev
+         */
+        function showHistorySettings(ev){
+
+            $mdDialog.show({
+                controller: HistorySettingsCtrl,
+                controllerAs: 'settingsCtrl',
+                templateUrl: $scope.globalViewPath + 'leftpanel/history-settings.tpl.html',
+                parent: angular.element('#yangmanModule'),
+                targetEvent: ev,
+                clickOutsideToClose: true,
+                locals: {
+                    settingsObj: $scope.historySettings,
+                },
+            }).then(function (changedSettings){
+                $scope.historySettings.setData(changedSettings.data);
+                $scope.rootBroadcast(constants.YANGMAN_RESET_HISTORY_SETTINGS);
+            });
+        }
+
         /**
          * Add each request from requests array to collectionList and save
          * @param requests
@@ -536,8 +548,11 @@ define([
             // collections are loaded for both history and collections tab
             loadCollectionsList();
 
-            vm.requestList = RequestsService.createEmptyHistoryList('yangman_requestsList');
+            vm.requestList = RequestsService.createEmptyHistoryList('yangman_requestsList', $scope.historySettings);
 
+            $scope.$on(constants.YANGMAN_RESET_HISTORY_SETTINGS, function () {
+                vm.requestList.setSettings($scope.historySettings);
+            });
 
             // if request was selected, deselect requests in all other instances of RequestsListCtrl
             $scope.$on(constants.YANGMAN_DESELECT_REQUESTS, function (event, params) {
index 0230a73a644e9a16edbe11aeb5e57bcb10e140ca..584d92ba7a9113c0c659c7cd921141dcb770a20e 100644 (file)
@@ -19,20 +19,34 @@ define([], function () {
 
         cloneRequests();
 
+        /**
+         * Get collection names matching the text that was already written
+         * @returns {*}
+         */
         function getColAutocomplete() {
             return vm.collectionNames ? $filter('filter')(vm.collectionNames, vm.collectionName) : vm.collectionNames;
         }
 
+        /**
+         * Clone requests to not affect source objects
+         */
         function cloneRequests(){
             vm.requests = vm.requests.map(function (req){
                 return req.clone();
             });
         }
 
+
+        /**
+         * Only cancel mdDialog
+         */
         function cancel() {
             $mdDialog.cancel();
         }
 
+        /**
+         * Try to save requests and return them in answer after hiding mdDialog
+         */
         function save() {
             vm.requests.forEach(function (reqObj){
                 reqObj.collection = vm.collectionName;
index 7a82ef855eb0dd1db8d3e9fe73818bda90911263..05069ebd5425bedc52b5891f646691c7460c28b9 100644 (file)
@@ -21,9 +21,9 @@ define([
 
     angular.module('app.yangman').controller('YangFormCtrl', YangFormCtrl);
 
-    YangFormCtrl.$inject = ['$scope', '$rootScope', '$filter', 'constants', 'YangUtilsService'];
+    YangFormCtrl.$inject = ['$scope', '$filter', 'constants', 'YangUtilsService'];
 
-    function YangFormCtrl($scope, $rootScope, $filter, constants) {
+    function YangFormCtrl($scope, $filter, constants) {
         var yangForm = this;
 
         yangForm.viewPath = $scope.globalViewPath + 'rightpanel/form';
index 571b1a517eb7b17850301f1fb4c667055ed3eb92..71639808e26094b6e1da01ee10cc49afb143f7ff 100644 (file)
@@ -12,6 +12,7 @@ define([
     'app/yangman/services/requests.services',
     'app/yangman/services/parameters.services',
     'app/yangman/services/plugins-unsetter.services',
+    'app/yangman/services/history-settings.services',
     'app/yangman/directives/ui-codemirror.directive',
     'app/yangman/directives/read_file.directive',
 ], function () {
@@ -20,13 +21,14 @@ define([
     angular.module('app.yangman').controller('YangmanCtrl', YangmanCtrl);
 
     YangmanCtrl.$inject = [
-        '$mdDialog', '$scope', '$rootScope', 'YangmanDesignService', 'RequestBuilderService',
-        'EventDispatcherService', 'constants', 'ParametersService', 'PathUtilsService', 'PluginsUnsetterService', '$timeout',
+        '$scope', '$rootScope', 'HistorySettingsService', 'YangmanDesignService', 'RequestBuilderService',
+        'EventDispatcherService', 'constants', 'ParametersService', 'PathUtilsService', 'PluginsUnsetterService',
+        '$timeout',
     ];
 
     function YangmanCtrl(
-        $mdDialog, $scope, $rootScope, YangmanDesignService, RequestBuilderService,
-        EventDispatcherService, constants, ParametersService, PathUtilsService, PluginsUnsetterService, $timeout
+        $scope, $rootScope, HistorySettingsService, YangmanDesignService, RequestBuilderService, EventDispatcherService,
+        constants, ParametersService, PathUtilsService, PluginsUnsetterService, $timeout
     ) {
         var main = this;
 
@@ -46,6 +48,7 @@ define([
         $scope.requestDataToShow = '';
         $scope.parametersList = ParametersService.createEmptyParametersList('yangman_parameters');
         $scope.shownCMHint = false;
+        $scope.historySettings = HistorySettingsService.createHistorySettings().loadFromStorage();
 
         main.selectedMainTab = 0;
         main.leftPanelTab = 0;
@@ -56,7 +59,6 @@ define([
         main.executingRequestProgress = false;
         main.constants = constants;
 
-        // methods
         main.init = init;
         main.initModuleDetailHeight = initModuleDetailHeight;
         main.switchedTab = switchedTab;
@@ -66,7 +68,6 @@ define([
 
         // scope global methods
         $scope.buildRootRequest = buildRootRequest;
-        $scope.broadcastFromRoot = broadcastFromRoot;
         $scope.checkAddingListElement = checkAddingListElement;
         $scope.clearCM = clearCM;
         $scope.rootBroadcast = rootBroadcast;
@@ -82,24 +83,27 @@ define([
         $scope.switchSection = switchSection;
         $scope.setParametersList = setParametersList;
         $scope.unsetPlugin = unsetPlugin;
-        $scope.setCMHintShown = setCMHintShown;
 
         init();
 
-        function setCMHintShown(shown) {
-            $scope.shownCMHint = shown;
-        }
 
+        /**
+         * Start showing progressbar in request header view
+         */
         function startExecutingRequestProgress() {
             main.executingRequestProgress = true;
         }
 
+
+        /**
+         * Stop showing progressbar in request header view
+         */
         function stopExecutingRequestProgress() {
             main.executingRequestProgress = false;
         }
 
         /**
-         * Set parametersList
+         * Set parametersList to $scope to be available for all controllers directly
          * @param parametersList
          */
         function setParametersList(parametersList) {
@@ -107,14 +111,6 @@ define([
         }
 
 
-        /**
-         * Broadcast from this main controller to all children ctrls
-         * @param eventName
-         * @param val
-         */
-        function broadcastFromRoot(eventName, val) {
-            $scope.$broadcast(eventName, val);
-        }
         /**
          * Initialization
          */
@@ -140,7 +136,7 @@ define([
         }
 
         /**
-         * Method for fill key into request path
+         * Method for fill key into request path, used by yangutils via event dispatching
          * @param inputs
          */
         function fillPathIdentifiersByKey(inputs) {
@@ -155,7 +151,11 @@ define([
             }
         }
 
-        // TODO :: description
+
+        /**
+         * Method for bulk filling path identifiers, used by yangutils via event dispatching
+         * @param inputs
+         */
         function fillPathIdentifiersByListData(inputs) {
             var node = inputs[0];
 
@@ -170,7 +170,11 @@ define([
             }
         }
 
-        // TODO :: description
+
+        /**
+         * Check if the main tab containing tree with modules is displayed
+         * @returns {boolean}
+         */
         function modulesTreeDisplayed() {
             return main.selectedMainTab === 0;
         }
@@ -208,7 +212,8 @@ define([
         }
 
         /**
-         * Genereal method for clearing code mirror - sent and received data too
+         * Genereal method for clearing code mirror - both sent and received data, needs to be in $scope to be available
+         * everywhere
          */
         function clearCM(){
             $scope.rootBroadcast(constants.YANGMAN_SET_CODEMIRROR_DATA_RECEIVED, { data: JSON.stringify({}) });
@@ -216,8 +221,6 @@ define([
         }
 
 
-        // SETTERS
-
         /**
          * Switcher for module detail and module list
          * @param value
@@ -260,9 +263,10 @@ define([
         }
 
         /**
-         * Set dataStore to global param && open module detail in left panel
+         * Set dataStore to global param, open module detail in left panel
          * @param dataStore
          * @param expand
+         * @param leftPanel
          */
         function setDataStore(dataStore, expand, leftPanel){
             $scope.selectedDatastore = dataStore;
@@ -272,7 +276,6 @@ define([
                 setLeftPanel(leftPanel);
                 $scope.$broadcast(constants.YANGMAN_MODULE_D_INIT);
             } else {
-
                 if ( $scope.node ) {
                     $scope.node.clear();
                 }
@@ -292,6 +295,8 @@ define([
          * Set api and sub api to global param
          * @param api
          * @param subApi
+         * @param setUrl
+         * @param clearPathArray
          */
         function setApi(api, subApi, setUrl, clearPathArray){
             $scope.selectedApi = api;
diff --git a/modules/yangman-resources/src/main/resources/yangman/models/history-settings.model.js b/modules/yangman-resources/src/main/resources/yangman/models/history-settings.model.js
new file mode 100644 (file)
index 0000000..eb4e169
--- /dev/null
@@ -0,0 +1,76 @@
+define([], function (){
+    'use strict';
+
+
+    /**
+     * List of settings for history requests
+     * @constructor
+     * @param ParsingJsonService
+     */
+    function HistorySettingsModel(ParsingJsonService, HistorySettingsService) {
+
+        var self = this;
+
+        self.name = 'yangman_historySettings';
+        self.data = {
+            requestsCount: 10000,
+            saveReceived: true,
+            fillWithReceived: true,
+            saveResponseData: true,
+        };
+
+        self.loadFromStorage = loadFromStorage;
+        self.saveToStorage = saveToStorage;
+        self.clone = clone;
+        self.setData = setData;
+
+        /**
+         *
+         */
+        function setData(data) {
+            angular.forEach(self.data, function (val, key){
+                self.data[key] = data[key];
+            });
+        }
+
+        /**
+         * Create copy of this object
+         */
+        function clone() {
+            var result = HistorySettingsService.createHistorySettings();
+            result.setData(self.data);
+            console.debug('clone created', result);
+
+            return result;
+        }
+
+
+        /**
+         * Loading from localStorage
+         */
+        function loadFromStorage(){
+            var settings = localStorage.getItem(self.name);
+
+            if (settings){
+                angular.forEach(ParsingJsonService.parseJson(settings), function (value, key){
+                    self.data[key] = value;
+                });
+            }
+
+            return self;
+        }
+
+        /**
+         * Saving to local storage
+         */
+        function saveToStorage(){
+            try {
+                localStorage.setItem(self.name, JSON.stringify(self.data));
+            } catch (e) {
+            }
+        }
+
+    }
+
+    return HistorySettingsModel;
+});
index 62cd60cee573f4c26e5ff62a9567e7a438b733d4..659ebbd7a01886c159389142be647facdf301908 100644 (file)
@@ -21,6 +21,7 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
          * @type {Array}
          */
         self.dateGroups = [];
+        self.settings = null;
 
         self.addItemToList = addItemToList;
         self.clear = clear;
@@ -30,6 +31,14 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         self.selectReqs = selectReqs;
         self.toggleReqSelection = toggleReqSelection;
         self.getNewestRequest = getNewestRequest;
+        self.setSettings = setSettings;
+
+        /**
+         *
+         */
+        function setSettings(settingsObj) {
+            self.settings = settingsObj;
+        }
 
 
         /**
@@ -101,6 +110,18 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
             }
         }
 
+        function shiftElemFromListDateGroup(elem){
+            if (elem.timestamp){
+                var groupName = roundTimestampToDate(elem.timestamp),
+                    dateGroupArr = self.dateGroups.filter(function (group){
+                        return group.name === groupName;
+                    }),
+                    dateGroup = dateGroupArr[0];
+
+                dateGroup.requests.shift();
+            }
+        }
+
 
         /**
          *
@@ -118,6 +139,10 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         function addItemToList(reqObj){
             self.list.push(reqObj);
             addElemToListDateGroup(reqObj);
+
+            if (self.list.length > self.settings.data.requestsCount) {
+                shiftElemFromListDateGroup(self.list.shift());
+            }
         }
 
         /**
index d3a1b1611ad4a17ee462b9ce5bdafd59f2953589..c2247d39b58b5d25de7be4b9aeced0fab935f29f 100644 (file)
@@ -26,6 +26,18 @@ define(['app/yangman/models/baselist.model'], function (BaseListModel){
         self.isNameUnique = isNameUnique;
         self.removeEmptyParams = removeEmptyParams;
         self.applyValsForFilters = applyValsForFilters;
+        self.clone = clone;
+
+        /**
+         * Create copy of parameters list model
+         */
+        function clone() {
+            var result = ParametersService.createEmptyParametersList(self.name);
+            self.list.forEach(function (param) {
+                result.addItemToList(param.clone());
+            });
+            return result;
+        }
 
         /**
          * Apply all parameters names and values for filtering
diff --git a/modules/yangman-resources/src/main/resources/yangman/services/history-settings.services.js b/modules/yangman-resources/src/main/resources/yangman/services/history-settings.services.js
new file mode 100644 (file)
index 0000000..d4fe85a
--- /dev/null
@@ -0,0 +1,39 @@
+define([
+    'app/yangman/models/history-settings.model',
+],
+    function (HistorySettingsModel) {
+        'use strict';
+
+        angular.module('app.yangman').service('HistorySettingsService', HistorySettingsService);
+
+        HistorySettingsService.$inject = ['ParsingJsonService'];
+
+        /**
+         * Service for history settings, used for creating HistorySettingsModel and dependency injection
+         * @param ParsingJsonService
+         * @returns {{}}
+         * @constructor
+         */
+        function HistorySettingsService(ParsingJsonService){
+
+            var service = {};
+
+            service.createHistorySettings = createHistorySettings;
+
+            return service;
+
+            /**
+             * Service for creating settings object
+             * @param name used as name in local storage
+             * @returns {*}
+             */
+            function createHistorySettings(){
+                var result = new HistorySettingsModel(ParsingJsonService, service);
+                return result;
+            }
+
+
+
+        }
+
+    });
index cde859f8b65ff4ee3070400f9ed937ae91538607..bd5b13e2f2a150fe36d04fe45eeacd4610b9eced 100644 (file)
@@ -328,9 +328,10 @@ define([
          * @param name
          * @returns {*}
          */
-        function createEmptyHistoryList(name){
+        function createEmptyHistoryList(name, settingsObj){
             var result = new HistoryListModel($filter, ParsingJsonService, service);
             result.setName(name);
+            result.setSettings(settingsObj);
             return result;
         }
 
diff --git a/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-settings.tpl.html b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-settings.tpl.html
new file mode 100644 (file)
index 0000000..ed70fe2
--- /dev/null
@@ -0,0 +1,59 @@
+<md-settingsCtrl aria-label="{{ 'YANGMAN_HISTORY_SETTINGS' | translate }}"  ng-cloak>
+    <form name="settingsCtrl.settingsForm">
+        <md-toolbar>
+            <div class="md-toolbar-tools">
+                <h2>{{ 'YANGMAN_HISTORY_SETTINGS' | translate }}</h2>
+                <span flex></span>
+            </div>
+        </md-toolbar>
+        <md-dialog-content layout-padding>
+            <div class="md-dialog-content settingsForm" layout="column">
+                <md-input-container>
+                    <label>{{ 'YANGMAN_HISTORY_SETTINGS_COUNT' | translate }}</label>
+                    <input name="requestsCount"
+                           ng-model="settingsCtrl.mySettingsObj.data.requestsCount"
+                           type="number"
+                           min="5"
+                           max="10000"
+                           ng-required="true">
+                    <div ng-messages="settingsCtrl.settingsForm.requestsCount.$error" multiple md-auto-hide="false">
+                        <div ng-message="required">
+                            {{ 'YANGMAN_HISTORY_SETTINGS_REQUIRED'| translate }}
+                        </div>
+                    </div>
+                </md-input-container>
+                <md-input-container>
+                    <md-checkbox name="saveResponseData"
+                                 ng-model="settingsCtrl.mySettingsObj.data.saveResponseData">
+                        {{ 'YANGMAN_HISTORY_SETTINGS_SAVE_RESPONSE_DATA' | translate }}
+                    </md-checkbox>
+                </md-input-container>
+                <md-input-container>
+                    <md-checkbox name="saveReceived"
+                                 ng-change="settingsCtrl.saveReceivedChanged()"
+                                 ng-model="settingsCtrl.mySettingsObj.data.saveReceived">
+                        {{ 'YANGMAN_HISTORY_SETTINGS_SAVE_RECEIVED_DATA' | translate }}
+                    </md-checkbox>
+                </md-input-container>
+                <md-input-container>
+                    <md-checkbox name="fillWithSaved"
+                                 ng-disabled="!settingsCtrl.mySettingsObj.data.saveReceived"
+                                 ng-model="settingsCtrl.mySettingsObj.data.fillWithReceived">
+                        {{ 'YANGMAN_HISTORY_SETTINGS_FILL_FORM_WITH_RECEIVED' | translate }}
+                    </md-checkbox>
+                </md-input-container>
+
+
+            </div>
+        </md-dialog-content>
+        <md-dialog-actions layout="row">
+            <span flex></span>
+            <md-button ng-click="settingsCtrl.cancel()">
+                {{ 'YANGMAN_CANCEL'| translate }}
+            </md-button>
+            <md-button ng-click="settingsCtrl.save()" ng-disabled="!settingsCtrl.settingsForm.$valid">
+                {{ 'YANGMAN_SAVE'| translate }}
+            </md-button>
+        </md-dialog-actions>
+    </form>
+</md-settingsCtrl>
index 2d8c1ed25f8ad3dfc53ce0e98e6e70d81a11d40a..71e976eee48f25956dcb0a59a284f1ea13b60864 100644 (file)
         </md-menu>
         <!-- / menu for selecting and deselecting -->
 
-    </md-content>
+        <!-- button for settings -->
+        <md-button  ng-click="reqList.showHistorySettings($event)"
+                    id="history-settings">
+            <md-icon class="material-icons clickable">
+                settings
+            </md-icon>
+            <md-tooltip md-direction="bottom">{{'YANGMAN_HISTORY_SETTINGS'| translate}}</md-tooltip>
+        </md-button>
 
+    </md-content>
     <md-divider></md-divider>
 
     <!-- list of items grouped by date -->
index 1357c385932d536cb9606134e771df8b0092a179..b0e52b6c7655142e924086ae67a1b72937e5391f 100644 (file)
@@ -8,7 +8,7 @@
 
     <div flex="15" class="yangmanModule__requests-list__group__item__method" layout-align="center center">
         <p id="{{itemId}}-operation" class="{{request.status === 'success' || !request.status ? request.method : 'error'}}"> {{request.method === vm.constants.OPERATION_DELETE ? 'DEL' : request.method }} </p>
-        <md-tooltip md-direction="bottom" ng-show="request.status">{{request.status | uppercase }}</md-tooltip>
+        <md-tooltip ng-show="request.status.length" md-direction="bottom" ng-show="request.status">{{request.status | uppercase }}</md-tooltip>
     </div>
 
     <div flex class="yangmanModule__requests-list__group__item__path" layout="column">
                 {{'YANGMAN_REQ_RUN'| translate}}
             </md-button>
         </md-menu-item>
-        <md-menu-item>
-            <md-button aria-label="{{'YANGMAN_REQ_SHOW_FORM'| translate}}" id="{{itemId}}-show-form" ng-click="reqList.showForm(request)">
-                <i class="material-icons">exit_to_app</i>
-                {{'YANGMAN_REQ_SHOW_FORM'| translate}}
-            </md-button>
-        </md-menu-item>
-        <md-menu-item>
-            <md-button aria-label="{{'YANGMAN_REQ_SHOW_SENT_DATA'| translate}}"
                        id="{{itemId}}-show-sent-data"
-                       ng-click="reqList.showData(request)">
-                <i class="material-icons">call_made</i>
-                {{'YANGMAN_REQ_SHOW_JSON_DATA'| translate}}
-            </md-button>
-        </md-menu-item>
         <md-menu-item ng-if="request.collection.length">
             <md-button aria-label="{{'YANGMAN_REQ_DUPLICATE'| translate}}"
                        id="{{itemId}}-duplicate"
index 5fa4ffefae1de3972a8eabc0b682ebead2c3d3d7..ec6d1895920c2ffbc727c86d1cf26b5cfbf5af2f 100644 (file)
 
     <md-divider flex="grow"></md-divider>
 
-    <section layout="row" layout-align="center center" class="status-bar">
+    <section layout="row" layout-align="start center" class="status-bar">
         <!-- Data type switcher - radio button -->
         <md-radio-group ng-model="requestHeader.selectedShownDataType"
                         class="type-switcher"
-                        flex="50"
                         layout="row"
+                        flex="25"
                         layout-align="start center"
                         ng-change="requestHeader.changeDataType()">
             <md-radio-button id="shown-data-type-form" value="form" aria-label="{{'YANGMAN_FORM' | translate}}">
             </md-radio-button>
         </md-radio-group>
 
+        <md-checkbox class="mb0" flex layout-align="center end" ng-model="requestHeader.fillFormWithReceivedData" ng-disabled="requestHeader.selectedShownDataType==='req-data'">
+            {{ 'YANGMAN_FILL_FORM_WITH_RECEIVED' | translate }}
+        </md-checkbox>
+
         <!-- Request info box -->
-        <md-content flex="50"
+        <md-content flex="40"
                     layout="row"
                     layout-align="end center"
                     class="status-text">
index 66e9e6e73a4a5e198b4d01f1ab1e0c1948378cab..3ef3009b4a9b702e277a6858986e35bc232d31d9 100644 (file)
@@ -1174,10 +1174,15 @@ md-dialog{
     }
 
     md-dialog-content, md-dialog-actions{
-        h2, span{
+        h2, h3, span{
             color: @fontColor;
         }
 
+        h3{
+            font-size: 14px;
+            font-weight: bold;
+        }
+
     }
 
 }
@@ -1292,4 +1297,14 @@ md-dialog{
 
 
     }
+
+
+}
+
+.settingsForm{
+    min-width: 400px;
+}
+
+.mb0{
+    margin-bottom: 0;
 }