angular.module('app.yangman').controller('RequestHeaderCtrl', RequestHeaderCtrl);
RequestHeaderCtrl.$inject = [
- '$mdDialog', '$mdToast', '$scope', '$rootScope', 'ENV', 'YangmanService', 'ParametersService', 'PathUtilsService',
- 'RequestsService', '$filter', 'DataBackupService',
+ '$mdDialog', '$mdToast', '$scope', '$rootScope', 'ENV', 'YangmanService', 'ParametersService',
+ 'PathUtilsService', 'RequestsService', '$filter', 'DataBackupService',
];
- function RequestHeaderCtrl($mdDialog, $mdToast, $scope, $rootScope, ENV, YangmanService, ParametersService, PathUtilsService,
- RequestService, $filter, DataBackupService) {
+ function RequestHeaderCtrl($mdDialog, $mdToast, $scope, $rootScope, ENV, YangmanService, ParametersService,
+ PathUtilsService, RequestService, $filter, DataBackupService) {
var requestHeader = this;
requestHeader.allOperations = ['GET', 'POST', 'PUT', 'DELETE'];
(args.cbk || angular.noop)();
});
- $scope.$on('YANGMAN_EXECUTE_WITH_DATA', executeWithData);
+ $scope.$on('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();
});
}
// if changing to form, try to fill node data
if (requestHeader.selectedShownDataType === 'form') {
- var params = {
- reqData: null,
- },
- reqData = {},
- dataType = requestHeader.selectedOperation === 'GET' ? 'RECEIVED' : 'SENT';
-
+ var reqData = {};
- $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_' + dataType, params);
- reqData = params.reqData ? angular.fromJson(params.reqData) : {};
+ reqData = getDataForForm();
setNodeDataFromRequestData(requestHeader.requestUrl);
if ( $scope.node ) {
+
YangmanService.fillNodeFromResponse($scope.node, reqData);
$scope.node.expanded = true;
}
}
}
+ /**
+ * Helper method for building correct json data for form, rpc included
+ * @returns {*}
+ */
+ function getDataForForm(){
+ var params = {
+ reqData: null,
+ },
+ dataTypeFunc = {
+ rpc: function () {
+ 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);
+
+ allData.sent = sentData.reqData ? angular.fromJson(sentData.reqData) : {};
+ allData.received = params.reqData ? angular.fromJson(params.reqData) : {};
+
+ return YangmanService.prepareReceivedData(
+ $scope.node,
+ requestHeader.selectedOperation,
+ allData.received,
+ allData.sent,
+ requestHeader.selectedShownDataType
+ );
+ },
+ default: function (){
+ var dataType = requestHeader.selectedOperation === 'GET' ? 'RECEIVED' : 'SENT';
+
+ $scope.rootBroadcast('YANGMAN_GET_CODEMIRROR_DATA_' + dataType, params);
+ return params.reqData ? angular.fromJson(params.reqData) : {};
+ },
+ };
+
+ return $scope.node ? (dataTypeFunc[$scope.node.type] || dataTypeFunc.default)() : {};
+ }
+
/**
* Send data to codemirror
* @param data
*/
function setNodeDataFromRequestData(requestUrl, leftpanel){
+ 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();
+ });
+ }
+
+ function setApiByUrl(url, cbk, fill){
$scope.rootBroadcast('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) {
+
+ if (requestHeader.selectedShownDataType === 'form') {
+ requestHeader.setRequestUrl();
+ }
+
var historyReq = RequestService.createHistoryRequest(null, null, requestHeader.requestUrl,
requestHeader.selectedOperation, '', '', ''),
reqData = {};
$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
- );
+ else {
+ var data = { srcData: {} };
- reqData = historyReqData.reqData;
+ YangmanService.setSrcDataByDataType(data, $scope.node, {}, 'form');
+ reqData = data.srcData;
}
historyReq.setExecutionData(reqData, {}, '');
}
- function finishRequestProgress(message){
+ function finishRequestProgress (message){
$scope.rootBroadcast('YANGMAN_EXECUTING_REQUEST_PROGRESS_STOP');
// $mdToast.show(
// $mdToast.simple()
* Execute request operation
*/
function executeOperation(requestData, executeCbk){
+ var allowExecuteOperation =
+ requestHeader.selectedShownDataType === 'form' && $scope.selectedSubApi ?
+ !PathUtilsService.checkEmptyIdentifiers($scope.selectedSubApi.pathArray) : true;
- showRequestProgress();
+ if ( allowExecuteOperation ) {
- setRequestUrl(requestHeader.selectedShownDataType === 'req-data' ? requestHeader.requestUrl : null);
+ showRequestProgress();
+ setRequestUrl(requestHeader.selectedShownDataType === 'req-data' ? requestHeader.requestUrl : null);
+ $scope.rootBroadcast('YANGMAN_SET_ERROR_MESSAGE', '');
- 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
- );
+ if ( requestHeader.selectedShownDataType !== 'form' ){
+ 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
+ );
+ } else {
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_ERROR_MESSAGE',
+ $filter('translate')('YANGMAN_ERROR_EMPTY_IDENTIFIERS')
+ );
+ }
/**
* Success callback after executin operation
sendErrorData({});
- // create and set history request
- historyReq.setExecutionData(
- reqInfo.requestSrcData,
- preparedReceivedData,
- reqInfo.status,
- reqInfo.status,
- reqInfo.statusText,
- reqInfo.time
- );
-
if (requestHeader.selectedShownDataType === 'req-data'){
setNodeDataFromRequestData(requestHeader.requestUrl);
sendRequestData(preparedReceivedData, 'RECEIVED');
sendRequestData(reqInfo.requestSrcData || {}, 'SENT');
- }
- else {
+ } else {
if ($scope.node){
- YangmanService.fillNodeFromResponse(
- $scope.node,
- preparedReceivedData
- );
-
+ YangmanService.fillNodeFromResponse($scope.node, preparedReceivedData);
$scope.node.expanded = true;
+
$scope.rootBroadcast('YANGMAN_DISABLE_ADDING_LIST_ELEMENT');
- sendRequestData(YangmanService.checkRpcReceivedData(preparedReceivedData, $scope.node), 'RECEIVED');
+ preparedReceivedData = YangmanService.checkRpcReceivedData(preparedReceivedData, $scope.node);
+ sendRequestData(preparedReceivedData, 'RECEIVED');
}
}
+ // create and set history request
+ historyReq.setExecutionData(
+ reqInfo.requestSrcData,
+ preparedReceivedData,
+ reqInfo.status,
+ reqInfo.status,
+ reqInfo.statusText,
+ reqInfo.time
+ );
+
$scope.rootBroadcast('YANGMAN_SAVE_EXECUTED_REQUEST', historyReq, function (){
$scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
});
+
(executeCbk || angular.noop)(historyReq);
$scope.rootBroadcast('YANGMAN_SELECT_THE_NEWEST_REQUEST');
});
-
-
//setNodeDataFromRequestData(requestHeader.requestUrl);
if (response.data) {
sendRequestData(response.data, 'RECEIVED');
sendErrorData(response.data);
}
+
(executeCbk || angular.noop)(historyReq);
*/
function prepareDataAndExecute(cbk){
-
if ( requestHeader.requestUrl.length ) {
if ( requestHeader.selectedShownDataType === 'req-data' ) {