From 8ea0120230a2d23a24eb70ae53aa71d666b34b57 Mon Sep 17 00:00:00 2001 From: Stanislav Jamrich Date: Mon, 14 Nov 2016 19:39:47 +0100 Subject: [PATCH] Yangman - requests settings - affect request execution and saving with set of settings - refactor of controllers Change-Id: I9e3055c7deb90d672b351c455920c7d5c83665a0 Signed-off-by: Stanislav Jamrich --- .../yangman/assets/data/locale-en_US.json | 9 ++- .../edit-collection-dialog.controller.js | 3 + .../controllers/form/ym-list.controller.js | 6 +- .../history-settings.controller.js | 41 ++++++++++ .../controllers/module-detail.controller.js | 2 + .../controllers/params-admin.controller.js | 2 +- .../controllers/request-data.controller.js | 2 - .../controllers/request-header.controller.js | 61 +++++++++------ .../controllers/requests-list.controller.js | 63 +++++++++------ .../controllers/save-req-dialog.controller.js | 14 ++++ .../controllers/yang-form.controller.js | 4 +- .../yangman/controllers/yangman.controller.js | 59 +++++++------- .../yangman/models/history-settings.model.js | 76 +++++++++++++++++++ .../yangman/models/historylist.model.js | 25 ++++++ .../yangman/models/parameterslist.model.js | 12 +++ .../services/history-settings.services.js | 39 ++++++++++ .../yangman/services/requests.services.js | 3 +- .../views/leftpanel/history-settings.tpl.html | 59 ++++++++++++++ .../views/leftpanel/history-tab.tpl.html | 10 ++- .../views/leftpanel/request-item.tpl.html | 15 +--- .../views/rightpanel/request-header.tpl.html | 10 ++- .../src/main/resources/yangman/yangman.less | 17 ++++- 22 files changed, 429 insertions(+), 103 deletions(-) create mode 100644 modules/yangman-resources/src/main/resources/yangman/controllers/history-settings.controller.js create mode 100644 modules/yangman-resources/src/main/resources/yangman/models/history-settings.model.js create mode 100644 modules/yangman-resources/src/main/resources/yangman/services/history-settings.services.js create mode 100644 modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-settings.tpl.html diff --git a/modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json b/modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json index 7e697fb4..3f0f110b 100644 --- a/modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json +++ b/modules/yangman-resources/src/main/resources/yangman/assets/data/locale-en_US.json @@ -96,6 +96,13 @@ "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" } diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/edit-collection-dialog.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/edit-collection-dialog.controller.js index e449c90a..9beb0edf 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/edit-collection-dialog.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/edit-collection-dialog.controller.js @@ -18,6 +18,9 @@ define([], function () { init(); + /** + * Load existing collection names + */ function init(){ vm.existingNames = allCollections.map(function (item){ return item.name; diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/form/ym-list.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/form/ym-list.controller.js index 1dac57b0..1fce67ef 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/form/ym-list.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/form/ym-list.controller.js @@ -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 index 00000000..3a6537ee --- /dev/null +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/history-settings.controller.js @@ -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; + +}); diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/module-detail.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/module-detail.controller.js index 5c2168c5..0976256f 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/module-detail.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/module-detail.controller.js @@ -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); } } diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js index 4d5fcf4b..2ce6108d 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/params-admin.controller.js @@ -11,7 +11,7 @@ define([ var openMenuListener, vm = this; - vm.parametersList = parametersList; + vm.parametersList = parametersList.clone(); vm.search = ''; vm.sortField1 = '_name'; vm.sortField2 = '_value'; diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js index 2064d377..4fc005bc 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/request-data.controller.js @@ -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 diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js index f851347d..59077351 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/request-header.controller.js @@ -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); diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js index e2606116..fc34420a 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/requests-list.controller.js @@ -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) { diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/save-req-dialog.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/save-req-dialog.controller.js index 0230a73a..584d92ba 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/save-req-dialog.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/save-req-dialog.controller.js @@ -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; diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/yang-form.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/yang-form.controller.js index 7a82ef85..05069ebd 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/yang-form.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/yang-form.controller.js @@ -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'; diff --git a/modules/yangman-resources/src/main/resources/yangman/controllers/yangman.controller.js b/modules/yangman-resources/src/main/resources/yangman/controllers/yangman.controller.js index 571b1a51..71639808 100644 --- a/modules/yangman-resources/src/main/resources/yangman/controllers/yangman.controller.js +++ b/modules/yangman-resources/src/main/resources/yangman/controllers/yangman.controller.js @@ -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 index 00000000..eb4e169c --- /dev/null +++ b/modules/yangman-resources/src/main/resources/yangman/models/history-settings.model.js @@ -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; +}); diff --git a/modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js b/modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js index 62cd60ce..659ebbd7 100644 --- a/modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js +++ b/modules/yangman-resources/src/main/resources/yangman/models/historylist.model.js @@ -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()); + } } /** diff --git a/modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js b/modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js index d3a1b161..c2247d39 100644 --- a/modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js +++ b/modules/yangman-resources/src/main/resources/yangman/models/parameterslist.model.js @@ -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 index 00000000..d4fe85ae --- /dev/null +++ b/modules/yangman-resources/src/main/resources/yangman/services/history-settings.services.js @@ -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; + } + + + + } + + }); diff --git a/modules/yangman-resources/src/main/resources/yangman/services/requests.services.js b/modules/yangman-resources/src/main/resources/yangman/services/requests.services.js index cde859f8..bd5b13e2 100644 --- a/modules/yangman-resources/src/main/resources/yangman/services/requests.services.js +++ b/modules/yangman-resources/src/main/resources/yangman/services/requests.services.js @@ -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 index 00000000..ed70fe26 --- /dev/null +++ b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-settings.tpl.html @@ -0,0 +1,59 @@ + +
+ +
+

{{ 'YANGMAN_HISTORY_SETTINGS' | translate }}

+ +
+
+ +
+ + + +
+
+ {{ 'YANGMAN_HISTORY_SETTINGS_REQUIRED'| translate }} +
+
+
+ + + {{ 'YANGMAN_HISTORY_SETTINGS_SAVE_RESPONSE_DATA' | translate }} + + + + + {{ 'YANGMAN_HISTORY_SETTINGS_SAVE_RECEIVED_DATA' | translate }} + + + + + {{ 'YANGMAN_HISTORY_SETTINGS_FILL_FORM_WITH_RECEIVED' | translate }} + + + + +
+
+ + + + {{ 'YANGMAN_CANCEL'| translate }} + + + {{ 'YANGMAN_SAVE'| translate }} + + +
+
diff --git a/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-tab.tpl.html b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-tab.tpl.html index 2d8c1ed2..71e976ee 100644 --- a/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-tab.tpl.html +++ b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/history-tab.tpl.html @@ -109,8 +109,16 @@ - + + + + settings + + {{'YANGMAN_HISTORY_SETTINGS'| translate}} + + diff --git a/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.tpl.html b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.tpl.html index 1357c385..b0e52b6c 100644 --- a/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.tpl.html +++ b/modules/yangman-resources/src/main/resources/yangman/views/leftpanel/request-item.tpl.html @@ -8,7 +8,7 @@

{{request.method === vm.constants.OPERATION_DELETE ? 'DEL' : request.method }}

- {{request.status | uppercase }} + {{request.status | uppercase }}
@@ -37,20 +37,7 @@ {{'YANGMAN_REQ_RUN'| translate}} - - - exit_to_app - {{'YANGMAN_REQ_SHOW_FORM'| translate}} - - - - - call_made - {{'YANGMAN_REQ_SHOW_JSON_DATA'| translate}} - - -
+
@@ -137,8 +137,12 @@ + + {{ 'YANGMAN_FILL_FORM_WITH_RECEIVED' | translate }} + + - diff --git a/modules/yangman-resources/src/main/resources/yangman/yangman.less b/modules/yangman-resources/src/main/resources/yangman/yangman.less index 66e9e6e7..3ef3009b 100644 --- a/modules/yangman-resources/src/main/resources/yangman/yangman.less +++ b/modules/yangman-resources/src/main/resources/yangman/yangman.less @@ -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; } -- 2.36.6