define([
'app/yangman/controllers/params-admin.controller',
+ 'app/yangman/services/time-tracking.services',
], function (ParamsAdminCtrl) {
'use strict';
RequestHeaderCtrl.$inject = [
'$mdDialog', '$mdToast', '$scope', '$rootScope', 'ENV', 'YangmanService', 'ParametersService',
- 'PathUtilsService', 'RequestsService', '$filter', 'DataBackupService',
+ 'PathUtilsService', 'RequestsService', '$filter', 'DataBackupService', 'constants', 'TimeTrackingService'
];
function RequestHeaderCtrl($mdDialog, $mdToast, $scope, $rootScope, ENV, YangmanService, ParametersService,
- PathUtilsService, RequestService, $filter, DataBackupService) {
+ PathUtilsService, RequestService, $filter, DataBackupService, constants,
+ TimeTrackingService) {
var requestHeader = this;
- requestHeader.allOperations = ['GET', 'POST', 'PUT', 'DELETE'];
+ requestHeader.allOperations = [constants.OPERATION_GET, constants.OPERATION_POST, constants.OPERATION_PUT, constants.OPERATION_DELETE];
+ requestHeader.constants = constants;
+ requestHeader.urlChanged = false;
+ requestHeader.executedOperation = null;
requestHeader.selectedOperationsList = [];
requestHeader.selectedOperation = null;
requestHeader.requestUrl = '';
/**
* Set selected operations based on data store
*/
- $scope.$on('SET_SEL_OPERATIONS', function (event, operations, setUrl) {
+ $scope.$on(constants.SET_SEL_OPERATIONS, function (event, operations, setUrl) {
setAllowedMethods(operations);
if ( setUrl ) {
/**
* Watching for changes in shown detail data type (radio button)
*/
- $scope.$on('YANGMAN_HEADER_INIT', function (event, args) {
+ $scope.$on(constants.YANGMAN_HEADER_INIT, function (event, args) {
init();
setRequestUrl(args.params.path);
setRequestMethod(args.params.method);
(args.cbk || angular.noop)();
});
- $scope.$on('YANGMAN_FILL_NODE_FROM_REQ', function (event, args) {
+ $scope.$on(constants.YANGMAN_FILL_NODE_FROM_REQ, function (event, args) {
setNodeDataFromRequestData(args.params.requestUrl, args.params.leftpanel);
(args.cbk || angular.noop)();
});
- $scope.$on('YANGMAN_EXECUTE_WITH_DATA', executeWithData);
+ $scope.$on(constants.YANGMAN_EXECUTE_WITH_DATA, function (event, args) {
+ executeOperation(args.params.data ? angular.fromJson(args.params.data) : {}, args.cbk);
+ });
init();
-
- function executeWithData(event, args) {
- executeOperation(args.params.data ? angular.fromJson(args.params.data) : {}, args.cbk);
- }
-
+ /**
+ * Setter for selected operation
+ * @param method
+ */
function setRequestMethod(method){
requestHeader.selectedOperation = method;
}
+ /**
+ * Setter for request status
+ * @param statusObj
+ */
function setRequestStatus(statusObj){
requestHeader.statusObj = statusObj;
}
locals: {
parametersList: $scope.parametersList,
},
- }).then(function (parametersList){
- $scope.setParametersList(parametersList);
-
- });
+ }).then(
+ function (){
+ $scope.parametersList.loadListFromStorage();
+ },
+ function (){
+ $scope.parametersList.loadListFromStorage();
+ }
+ );
}
/**
* Method for selecting correct json view by selected operation
*/
function setJsonView(){
- var both = ['PUT', 'POST'];
+ var both = [constants.OPERATION_PUT, constants.OPERATION_POST];
if ( both.indexOf(requestHeader.selectedOperation) > -1 ){
$scope.setJsonView(true, true);
} else {
$scope.setJsonView(true, false);
}
-
- // sendRequestData({}, 'RECEIVED');
}
/**
*/
function changeDataType(){
$scope.switchSection('rightPanelSection', requestHeader.selectedShownDataType);
- requestHeader.setRequestUrl();
+
+ if(!$scope.node || requestHeader.urlChanged) {
+ requestHeader.setRequestUrl();
+ requestHeader.urlChanged = false;
+ }
// if changing to json, fill codemirror data
- if ( requestHeader.selectedShownDataType === 'req-data' && $scope.node ){
+ if ( requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA && $scope.node ){
setJsonView();
sendRequestData($scope.buildRootRequest(), 'SENT');
}
// if changing to form, try to fill node data
- if (requestHeader.selectedShownDataType === 'form') {
+ if (requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_FORM) {
var reqData = {};
reqData = getDataForForm();
var sentData = { reqData: null },
allData = { sent: null, received: null };
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_RECEIVED', params);
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', sentData);
+ $scope.rootBroadcast(constants.YANGMAN_GET_CODEMIRROR_DATA_RECEIVED, params);
+ $scope.rootBroadcast(constants.YANGMAN_GET_CODEMIRROR_DATA_SENT, sentData);
allData.sent = sentData.reqData ? angular.fromJson(sentData.reqData) : {};
allData.received = params.reqData ? angular.fromJson(params.reqData) : {};
);
},
default: function (){
- var dataType = requestHeader.selectedOperation === 'GET' ? 'RECEIVED' : 'SENT';
-
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_' + dataType, params);
+ var dataType;
+ if(requestHeader.executedOperation) {
+ dataType = requestHeader.executedOperation === constants.OPERATION_GET ? constants.REQUEST_DATA_TYPE_RECEIVED : 'SENT';
+ }
+ else {
+ dataType = requestHeader.selectedOperation === constants.OPERATION_GET ? constants.REQUEST_DATA_TYPE_RECEIVED : 'SENT';
+ }
+
+ $scope.rootBroadcast(constants.YANGMAN_GET_CODEMIRROR_DATA + dataType, params);
return params.reqData ? angular.fromJson(params.reqData) : {};
},
};
- return (dataTypeFunc[$scope.node.type] || dataTypeFunc.default)();
+ return $scope.node ? (dataTypeFunc[$scope.node.type] || dataTypeFunc.default)() : {};
}
/**
* @param data
*/
function sendRequestData(data, type){
- $scope.rootBroadcast('YANGMAN_SET_CODEMIRROR_DATA_' + type, { data: JSON.stringify(data, null, 4) });
+ $scope.rootBroadcast(
+ constants.YANGMAN_SET_CODEMIRROR_DATA + type,
+ { data: data instanceof Object ? JSON.stringify(data, null, 4) : data }
+ );
}
function sendErrorData(response) {
- $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA', response);
+ $scope.rootBroadcast(constants.YANGMAN_SET_ERROR_DATA, response);
}
/**
*/
function setNodeDataFromRequestData(requestUrl, leftpanel){
- $scope.rootBroadcast('YANGMAN_GET_API_TREE_DATA', null, function (treeApis) {
+ setApiByUrl(requestUrl, function (treeApis) {
+ // set module
+ $scope.setModule($filter('filter')(treeApis, { label: $scope.selectedApi.module })[0]);
+
+ // set datastore
+ $scope.setDataStore(
+ $filter('filter')(
+ $scope.selectedModule.children,
+ { label: $scope.selectedSubApi.storage })[0],
+ true,
+ leftpanel
+ );
+
+ // set node
+ $scope.setNode($scope.selectedSubApi.node);
+
+ // fill subapi path
+ PathUtilsService.fillPath($scope.selectedSubApi.pathArray, requestUrl);
+ setRequestUrl();
+ });
+ }
+
+ /**
+ * Try to set current (depending on url) selectedApi and selectedSubApi to $scope if it exists in api tree data
+ * @param url
+ * @param cbk
+ * @param fill
+ */
+ function setApiByUrl(url, cbk, fill){
+ $scope.rootBroadcast(constants.YANGMAN_GET_API_TREE_DATA, null, function (treeApis) {
var apisIndexes =
- PathUtilsService.searchNodeByPath(requestUrl, treeApis, null, true, true);
+ PathUtilsService.searchNodeByPath(url, treeApis, null, true, true);
+
+ if ( apisIndexes ) {
- if ( apisIndexes ){
// set apis
$scope.setApi(
$scope.apis[apisIndexes.indexApi],
$scope.apis[apisIndexes.indexApi].subApis[apisIndexes.indexSubApi]
);
- // set module
- $scope.setModule($filter('filter')(treeApis, { label: $scope.selectedApi.module })[0]);
+ if ( $scope.selectedSubApi && fill ) {
+ var updatedUrl = YangmanService.cutUrl(url);
+ PathUtilsService.fillPath($scope.selectedSubApi.pathArray, updatedUrl);
- // set datastore
- $scope.setDataStore(
- $filter('filter')(
- $scope.selectedModule.children,
- { label: $scope.selectedSubApi.storage })[0],
- true,
- leftpanel
- );
-
- // set node
- $scope.setNode($scope.selectedSubApi.node);
+ }
- // fill subapi path
- PathUtilsService.fillPath($scope.selectedSubApi.pathArray, requestUrl);
- setRequestUrl();
+ (cbk || angular.noop)(treeApis);
}
});
}
function saveRequestToCollection(event) {
+ var historyReq = null,
+ sentData = { reqData: null },
+ receivedData = { reqData: null };
- if (requestHeader.selectedShownDataType === 'form') {
+ if (requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_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 historyReqData = YangmanService.prepareAllRequestData(
- $scope.selectedApi,
- $scope.selectedSubApi,
- requestHeader.selectedOperation,
- $scope.node,
- requestHeader.selectedShownDataType,
- requestHeader.requestUrl,
- reqData,
- null
- );
+ historyReq = RequestService.createHistoryRequest(
+ null, null, requestHeader.requestUrl, requestHeader.selectedOperation, '', '', ''
+ );
- reqData = historyReqData.reqData;
- }
+ $scope.rootBroadcast(constants.YANGMAN_GET_CODEMIRROR_DATA_SENT, sentData);
+ $scope.rootBroadcast(constants.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 });
+ $scope.rootBroadcast(constants.YANGMAN_SAVE_REQUEST_TO_COLLECTION, { event: event, reqObj: historyReq });
}
function showRequestProgress(){
- $scope.rootBroadcast('YANGMAN_EXECUTING_REQUEST_PROGRESS_START');
+ $scope.rootBroadcast(constants.YANGMAN_EXECUTING_REQUEST_PROGRESS_START);
}
- function finishRequestProgress (message){
- $scope.rootBroadcast('YANGMAN_EXECUTING_REQUEST_PROGRESS_STOP');
- // $mdToast.show(
- // $mdToast.simple()
- // .textContent(message)
- // .position('bottom right')
- // .parent(angular.element('.yangmanModule__right-panel__header'))
- // .hideDelay(1500)
- // );
+ function finishRequestProgress(message){
+ $scope.rootBroadcast(constants.YANGMAN_EXECUTING_REQUEST_PROGRESS_STOP);
}
-
/**
* Execute request operation
*/
function executeOperation(requestData, executeCbk){
+ TimeTrackingService.startTimer();
+ var allowExecuteOperation =
+ requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_FORM && $scope.selectedSubApi ?
+ !PathUtilsService.checkEmptyIdentifiers($scope.selectedSubApi.pathArray) : true;
- showRequestProgress();
- setRequestUrl(requestHeader.selectedShownDataType === 'req-data' ? requestHeader.requestUrl : null);
+ if ( allowExecuteOperation ) {
- var historyReq = RequestService.createHistoryRequest(null, null, requestHeader.requestUrl,
- requestHeader.selectedOperation, '', '', '');
+ showRequestProgress();
+ $scope.rootBroadcast(constants.YANGMAN_SET_ERROR_MESSAGE, '');
- YangmanService.executeRequestOperation(
- $scope.selectedApi,
- $scope.selectedSubApi,
- requestHeader.selectedOperation,
- $scope.node,
- requestHeader.selectedShownDataType,
- requestHeader.requestUrl,
- requestData,
- $scope.parametersList,
- executeReqSuccCbk,
- executeReqErrCbk
- );
+ setRequestUrl(
+ requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA ?
+ requestHeader.requestUrl :
+ null
+ );
+ if ( requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA ){
+ setApiByUrl(requestHeader.requestUrl, null, true);
+ }
+
+ var historyReq = RequestService.createHistoryRequest(
+ null,
+ null,
+ requestHeader.requestUrl,
+ requestHeader.selectedOperation,
+ '', '', ''
+ );
+
+ YangmanService.executeRequestOperation(
+ $scope.selectedApi,
+ $scope.selectedSubApi,
+ requestHeader.selectedOperation,
+ $scope.node,
+ requestHeader.selectedShownDataType,
+ requestHeader.requestUrl,
+ requestData,
+ $scope.parametersList,
+ executeReqSuccCbk,
+ executeReqErrCbk
+ );
+ requestHeader.executedOperation = requestHeader.selectedOperation;
+ } else {
+ $scope.rootBroadcast(
+ constants.YANGMAN_SET_ERROR_MESSAGE,
+ $filter('translate')(constants.YANGMAN_ERROR_EMPTY_IDENTIFIERS)
+ );
+ }
/**
* Success callback after executin operation
* @param response
*/
function executeReqSuccCbk(reqInfo, response) {
+
var preparedReceivedData = YangmanService.prepareReceivedData(
$scope.node,
requestHeader.selectedOperation,
sendErrorData({});
- // create and set history request
- historyReq.setExecutionData(
- reqInfo.requestSrcData,
- preparedReceivedData,
- reqInfo.status,
- reqInfo.status,
- reqInfo.statusText,
- reqInfo.time
- );
-
- if (requestHeader.selectedShownDataType === 'req-data'){
+ if (requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA){
setNodeDataFromRequestData(requestHeader.requestUrl);
- sendRequestData(preparedReceivedData, 'RECEIVED');
+ sendRequestData(preparedReceivedData, constants.REQUEST_DATA_TYPE_RECEIVED);
sendRequestData(reqInfo.requestSrcData || {}, 'SENT');
- }
- else {
+ } else {
- if ($scope.node){
+ if ($scope.node && requestHeader.selectedOperation !== constants.OPERATION_DELETE){
- YangmanService.fillNodeFromResponse(
- $scope.node,
- preparedReceivedData
+ YangmanService.fillNodeFromResponse($scope.node, preparedReceivedData);
+ YangmanService.handleNodeIdentifier(
+ $scope.parametersList, $scope.selectedSubApi, $scope.node
);
-
$scope.node.expanded = true;
- $scope.rootBroadcast('YANGMAN_DISABLE_ADDING_LIST_ELEMENT');
- sendRequestData(
- YangmanService.checkRpcReceivedData(preparedReceivedData, $scope.node),
- 'RECEIVED'
- );
+
+ $scope.rootBroadcast(constants.YANGMAN_DISABLE_ADDING_LIST_ELEMENT);
+ preparedReceivedData = YangmanService.checkRpcReceivedData(preparedReceivedData, $scope.node);
+ sendRequestData(preparedReceivedData, constants.REQUEST_DATA_TYPE_RECEIVED);
}
}
- $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq, function (){
- $scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
+ // create and set history request
+ requestHeader.statusObj.time = TimeTrackingService.returnTime();
+
+ historyReq.setExecutionData(
+ reqInfo.requestSrcData,
+ preparedReceivedData,
+ reqInfo.status,
+ reqInfo.status,
+ reqInfo.statusText,
+ requestHeader.statusObj.time
+ );
+
+ $scope.rootBroadcast(constants.YANGMAN_SAVE_EXECUTED_REQUEST, historyReq, function (){
+ $scope.rootBroadcast(constants.YANGMAN_SELECT_THE_NEWEST_REQUEST);
});
- (executeCbk || angular.noop)(historyReq);
+ (executeCbk || angular.noop)(historyReq);
}
finishRequestProgress();
+ requestHeader.statusObj.time = TimeTrackingService.returnTime();
+
historyReq.setExecutionData(
reqInfo.requestSrcData,
response.data,
reqInfo.status,
reqInfo.status,
reqInfo.statusText,
- reqInfo.time
+ requestHeader.statusObj.time
);
- $scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq, function (){
- $scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
+ $scope.rootBroadcast(constants.YANGMAN_SAVE_EXECUTED_REQUEST, historyReq, function (){
+ $scope.rootBroadcast(constants.YANGMAN_SELECT_THE_NEWEST_REQUEST);
});
-
-
- //setNodeDataFromRequestData(requestHeader.requestUrl);
-
if (response.data) {
// try to fill code mirror editor
- sendRequestData(response.data, 'RECEIVED');
+ sendRequestData(response.data, constants.REQUEST_DATA_TYPE_RECEIVED);
sendErrorData(response.data);
}
+
(executeCbk || angular.noop)(historyReq);
* @param identifier
*/
function fillNodeData(pathElem, identifier) {
- if ($scope.selectedSubApi && $scope.selectedSubApi.storage === 'config' &&
+ if ($scope.selectedSubApi && $scope.selectedSubApi.storage === constants.DATA_STORE_CONFIG &&
$scope.selectedSubApi.pathArray.indexOf(pathElem) === ($scope.selectedSubApi.pathArray.length - 1)) {
PathUtilsService.fillListNode($scope.node, identifier.label, identifier.value);
}
+
+ requestHeader.urlChanged = true;
}
/**
* Check data before executin operations
*/
function prepareDataAndExecute(cbk){
+ if (requestHeader.statusObj) {
+ requestHeader.statusObj.statusText = null;
+ requestHeader.statusObj.time = null;
+ }
if ( requestHeader.requestUrl.length ) {
- if ( requestHeader.selectedShownDataType === 'req-data' ) {
+ if ( requestHeader.selectedShownDataType === constants.DISPLAY_TYPE_REQ_DATA ) {
// get json data
var params = { reqData: null };
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_SENT', params);
+ $scope.rootBroadcast(constants.YANGMAN_GET_CODEMIRROR_DATA_SENT, params);
executeOperation(params.reqData ? angular.fromJson(params.reqData) : {}, cbk);
} else {
executeOperation({}, cbk);
'MAIN_SCOPE'
);
- $scope.rootBroadcast('YANGMAN_GET_API_TREE_DATA', null, function (treeApis) {
+ $scope.rootBroadcast(constants.YANGMAN_GET_API_TREE_DATA, null, function (treeApis) {
DataBackupService.storeFromScope(
['treeApis'],
{ treeApis: treeApis },
$scope.setGlobalParams(mountPointApis, augmentations);
$scope.setDataStore(null);
requestHeader.statusObj = reqObj;
- $scope.rootBroadcast('YANGMAN_SET_API_TREE_DATA', mountPointTreeApis);
+ $scope.rootBroadcast(constants.YANGMAN_SET_API_TREE_DATA, mountPointTreeApis);
}
/**