angular.module('app.yangman').controller('RequestsListCtrl', RequestsListCtrl);
RequestsListCtrl.$inject = [
- '$filter', '$mdDialog', '$scope', 'HandleFileService', 'PathUtilsService', 'RequestsService', 'YangmanService',
- 'YangmanDesignService',
+ '$filter', '$mdDialog', '$scope', 'YMHandleFileService', 'PathUtilsService', 'RequestsService', 'YangmanService',
+ 'YangmanDesignService', 'constants',
];
- function RequestsListCtrl($filter, $mdDialog, $scope, HandleFileService, PathUtilsService, RequestsService,
- YangmanService, YangmanDesignService) {
+ /**
+ * Controller for requests lists, means History requests and Collections requests
+ * @param $filter
+ * @param $mdDialog
+ * @param $scope
+ * @param YMHandleFileService
+ * @param PathUtilsService
+ * @param RequestsService
+ * @param YangmanService
+ * @param YangmanDesignService
+ * @constructor
+ */
+ function RequestsListCtrl($filter, $mdDialog, $scope, YMHandleFileService, PathUtilsService, RequestsService,
+ YangmanService, YangmanDesignService, constants) {
var vm = this;
- vm.collectionList = RequestsService.createEmptyCollectionList('yangman_collectionsList');
- vm.collectionsSortAsc = true;
+ /**
+ * 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.requestList = RequestsService.createEmptyHistoryList('yangman_requestsList');
+ vm.collectionsSortAsc = true;
vm.search = '';
+ // methods
+ vm.clearCollectionList = clearCollectionList;
vm.clearFilter = clearFilter;
vm.clearHistoryList = clearHistoryList;
- vm.clearCollectionList = clearCollectionList;
vm.colMatchingReqsCount = colMatchingReqsCount;
- vm.deselectAllRequests = deselectAllRequests;
+ vm.deselectAllFilteredRequests = deselectAllFilteredReqs;
vm.downloadCollection = downloadCollection;
vm.executeRequest = executeRequest;
vm.fakeFilter = fakeFilter;
vm.filterColName = filterColName;
vm.filterReq = filterReq;
vm.init = init;
- vm.loadRequests = loadRequests;
vm.readCollectionFromFile = readCollectionFromFile;
- vm.refreshCollections = refreshCollections;
- vm.selectAllRequests = selectAllRequests;
+ vm.selectAllFilteredRequests = selectAllFilteredReqs;
vm.selectRequest = selectRequest;
vm.showData = showData;
vm.showDgDeleteCollection = showDgDeleteCollection;
vm.showDgDeleteRequests = showDgDeleteRequests;
vm.showDgEditCollection = showDgEditCollection;
vm.showDgSaveReq = showDgSaveReq;
- vm.toggleCollectionsSort = toggleCollectionsSort;
vm.showForm = showForm;
-
- $scope.$on('YANGMAN_REFRESH_COLLECTIONS', loadCollectionRequest);
- $scope.$on('YANGMAN_REFRESH_HISTORY', loadHistoryRequests);
-
- loadRequests();
+ vm.toggleCollectionsSort = toggleCollectionsSort;
+ vm.selectOnlyThisRequest = selectOnlyThisRequest;
+ vm.deselectAllRequests = deselectAllRequests;
+ vm.filterCollReq = filterCollReq;
/**
* Save request obje to collection from other controller
/**
* Clear history requests list and save to storage
*/
- function clearHistoryList(ev) {
+ function clearHistoryList(event) {
+
+ YangmanDesignService.disableMdMenuItem(event);
+
var confirm = $mdDialog.confirm()
.title($filter('translate')('YANGMAN_DELETE_HISTORY_CONFIRM_TITLE'))
.textContent($filter('translate')('YANGMAN_DELETE_HISTORY_CONFIRM_TEXT'))
.ariaLabel($filter('translate')('YANGMAN_DELETE_HISTORY_CONFIRM_TITLE'))
- .targetEvent(ev)
+ .targetEvent(event)
.ok($filter('translate')('YANGMAN_OK'))
.cancel($filter('translate')('YANGMAN_CANCEL'));
$mdDialog.show(confirm).then(function (){
vm.requestList.clear();
vm.requestList.saveToStorage();
- $scope.rootBroadcast('YANGMAN_REFRESH_HISTORY');
+ loadHistoryList();
+ YangmanDesignService.enableMdMenuItem(event);
+ }, function (){
+ YangmanDesignService.enableMdMenuItem(event);
});
}
/**
* Clear collections requests list and save to storage
*/
- function clearCollectionList(ev) {
+ function clearCollectionList(event) {
var confirm = $mdDialog.confirm()
.title($filter('translate')('YANGMAN_DELETE_COLLECTION_CONFIRM_TITLE'))
.textContent($filter('translate')('YANGMAN_DELETE_COLLECTION_CONFIRM_TEXT'))
.ariaLabel($filter('translate')('YANGMAN_DELETE_COLLECTION_CONFIRM_TITLE'))
- .targetEvent(ev)
+ .targetEvent(event)
.ok($filter('translate')('YANGMAN_OK'))
.cancel($filter('translate')('YANGMAN_CANCEL'));
+ YangmanDesignService.disableMdMenuItem(event);
+
$mdDialog.show(confirm).then(function (){
vm.collectionList.clear();
vm.collectionList.saveToStorage();
$scope.rootBroadcast('YANGMAN_REFRESH_COLLECTIONS');
+ YangmanDesignService.enableMdMenuItem(event);
+ }, function () {
+ YangmanDesignService.enableMdMenuItem(event);
});
}
* @param params
*/
function saveBcstedHistoryRequest(broadcastEvent, params) {
- console.debug('params.params', params.params);
-
- vm.requestList.addRequestToList(params.params);
- vm.requestList.groupListByDate();
+ vm.requestList.addItemToList(params.params);
vm.requestList.saveToStorage();
- loadHistoryRequests();
+ loadHistoryList();
+ (params.cbk || angular.noop)();
}
/**
* Clear value of input file used to import collection
+ * todo: move to design utils
*/
function clearFileInputValue(){
angular.element(document).find('#importCollection').val('');
*/
function readCollectionFromFile($fileContent) {
var data = $fileContent,
- checkArray = [
- 'sentData',
- 'receivedData',
- 'path',
- 'collection',
- 'method',
- 'status',
- 'name',
- ];
+ checkArray = ['sentData', 'receivedData', 'path', 'collection', 'method', 'status', 'name'];
if (data && YangmanService.validateFile(data, checkArray)){
try {
vm.collectionList.loadListFromFile(data);
vm.collectionList.saveToStorage();
+ $scope.rootBroadcast('YANGMAN_REFRESH_COLLECTIONS');
clearFileInputValue();
}
catch (e) {
else {
clearFileInputValue();
}
+ removeButtonBackground();
+
+ function removeButtonBackground() {
+ $('#importCollection').next().css({ 'background': 'transparent' });
+ }
}
function toggleCollectionsSort() {
*/
function downloadCollection(collection) {
- var cListJSON = vm.collectionList.getCollectionInJSON(collection.name);
+ var cListJSON = vm.collectionList.getCollectionInRawJSON(collection.name);
- HandleFileService.downloadFile(collection.name + '.json', cListJSON, 'json', 'charset=utf-8',
+ YMHandleFileService.downloadFile(collection.name + '.json', cListJSON, 'json', 'charset=utf-8',
function (){},
function (e){
console.error('ExportCollection error:', e);
* @param reqObj
*/
function showForm(reqObj) {
- var data = reqObj.method === 'GET' ? reqObj.receivedData : reqObj.sentData;
+ var data = reqObj.sentData;
+
+ // exception for get meth
+ if ( reqObj.method === constants.OPERATION_GET ) {
+ data = reqObj.receivedData;
+ }
- $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA', reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {});
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_CODEMIRROR_DATA_RECEIVED', { data: reqObj.setDataForView(reqObj.receivedData) }
+ );
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_CODEMIRROR_DATA_SENT', { data: reqObj.setDataForView(reqObj.sentData) }
+ );
+
+ $scope.rootBroadcast('YANGMAN_SET_ERROR_DATA',
+ reqObj.receivedData && reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {});
$scope.rootBroadcast('YANGMAN_FILL_NODE_FROM_REQ', { requestUrl: reqObj.path, requestData: data },
function (){
- $scope.setRightPanelSection('form');
+ $scope.setRightPanelSection(constants.DISPLAY_TYPE_FORM);
$scope.rootBroadcast('YANGMAN_HEADER_INIT', {
path: reqObj.path,
method: reqObj.method,
});
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;
+
// try to fill node
YangmanService.fillNodeFromResponse($scope.node, data);
$scope.node.expanded = true;
* @param reqObj
*/
function executeRequest(reqObj) {
- $scope.rootBroadcast(
- 'YANGMAN_HEADER_INIT',
- { path: reqObj.path, method: reqObj.method },
- function (){
- $scope.rootBroadcast(
- 'YANGMAN_EXECUTE_WITH_DATA',
- { data: reqObj.sentData },
- function (historyReq){
- showData(historyReq);
- }
- );
- }
- );
-
+ showData(reqObj);
+ $scope.rootBroadcast('YANGMAN_EXECUTE_WITH_DATA',{ data: reqObj.sentData });
}
-
/**
- * Show current reqObj json data in right panel section
+ * Method for setup data into CM, Header, find api, subapi, node
* @param reqObj
- * @param dataType
+ * @param status
*/
- function showData(reqObj) {
-
- $scope.setRightPanelSection('req-data');
- $scope.setJsonView(true, reqObj.method !== 'GET');
-
- $scope.rootBroadcast('YANGMAN_HEADER_INIT', {
+ function showData(reqObj, select){
+ var headerObj = {
path: reqObj.path,
method: reqObj.method,
- statusObj: {
+ };
+
+ // action select request
+ if ( select ) {
+ headerObj.statusObj = {
status: reqObj.responseStatus,
statusText: reqObj.responseStatusText,
time: reqObj.responseTime,
- },
- });
+ };
- $scope.rootBroadcast(
- 'YANGMAN_SET_ERROR_DATA',
- reqObj.receivedData && reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {}
- );
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_ERROR_DATA',
+ reqObj.receivedData && reqObj.receivedData.hasOwnProperty('errors') ? reqObj.receivedData : {}
+ );
+ }
+
+ $scope.setRightPanelSection(constants.DISPLAY_TYPE_REQ_DATA);
+ $scope.setJsonView(true, reqObj.method !== constants.OPERATION_GET);
+
+ $scope.rootBroadcast('YANGMAN_HEADER_INIT', headerObj);
+ $scope.rootBroadcast('YANGMAN_FILL_NODE_FROM_REQ', { requestUrl: reqObj.path });
- $scope.rootBroadcast(
- 'YANGMAN_SET_CODEMIRROR_DATA_SENT',
- { data: reqObj.setDataForView(reqObj.sentData) }
- );
$scope.rootBroadcast(
'YANGMAN_SET_CODEMIRROR_DATA_RECEIVED',
{ data: reqObj.setDataForView(reqObj.receivedData) }
);
- var data = reqObj.method === 'GET' ? reqObj.receivedData : reqObj.sentData;
-
- $scope.rootBroadcast('YANGMAN_FILL_NODE_FROM_REQ', { requestUrl: reqObj.path, leftpanel: 0},
- function (){
- if ( $scope.node ) {
- // try to fill node
- YangmanService.fillNodeFromResponse($scope.node, data);
- $scope.node.expanded = true;
- }
-
- }
+ $scope.rootBroadcast(
+ 'YANGMAN_SET_CODEMIRROR_DATA_SENT',
+ { data: reqObj.setDataForView(reqObj.sentData) }
);
}
/**
* Dialog for deleting either selected requests or reqObj
*
- * @param ev
+ * @param event
* @param reqObj
*/
- function showDgDeleteRequests(ev, reqObj){
+ function showDgDeleteRequests(event, reqObj){
var confirm = $mdDialog.confirm()
.title($filter('translate')('YANGMAN_DELETE_REQ_CONFIRM_TITLE'))
.textContent($filter('translate')('YANGMAN_DELETE_REQ_CONFIRM_TEXT'))
.ariaLabel($filter('translate')('YANGMAN_DELETE_REQ_CONFIRM_TITLE'))
- .targetEvent(ev)
+ .targetEvent(event)
.ok($filter('translate')('YANGMAN_OK'))
.cancel($filter('translate')('YANGMAN_CANCEL'));
- YangmanDesignService.disableMdMenuItem(ev);
+ YangmanDesignService.disableMdMenuItem(event);
$mdDialog.show(confirm).then(function (){
if (reqObj){
vm.mainList.deleteRequestItem(reqObj);
}
else {
- vm.mainList.selectedRequests.forEach(function (elem){
+ vm.mainList.getSelectedItems(
+ vm.mainList === vm.collectionList ? filterCollReq : filterReq
+ ).forEach(function (elem){
vm.mainList.deleteRequestItem(elem);
});
}
vm.mainList.saveToStorage();
- $scope.rootBroadcast('YANGMAN_REFRESH_HISTORY');
+
+ if (vm.mainList === vm.requestList) {
+ loadHistoryList();
+ }
+ else {
+ refreshCollectionsWithExpansion();
+ }
}, function (){
- YangmanDesignService.enableMdMenuItem(ev);
+ YangmanDesignService.enableMdMenuItem(event);
});
}
$mdDialog.show(confirm).then(function (){
vm.collectionList.deleteCollection(collObj);
vm.collectionList.saveToStorage();
- refreshCollections();
+ refreshCollectionsWithExpansion();
}, function (){
YangmanDesignService.enableMdMenuItem(ev);
});
* @returns {boolean}
*/
function filterReq(reqObj){
- return reqObj.path.indexOf(vm.search) !== -1;
+ var searchPhrase = vm.search.toLocaleLowerCase();
+ return reqObj.path.toLowerCase().indexOf(searchPhrase) > -1 ||
+ reqObj.collection.toLowerCase().indexOf(searchPhrase) > -1 ||
+ reqObj.method.toLowerCase() === searchPhrase;
}
/**
* @returns {boolean}
*/
function filterColName(colObj){
- return colObj.name.indexOf(vm.search) !== -1;
+ return colObj.name.toLowerCase().indexOf(vm.search.toLowerCase()) > -1;
}
/**
return true;
}
+
/**
* Show dialog for saving reqObj to collection (used for duplicate req too)
* @param ev
targetEvent: ev,
clickOutsideToClose: true,
locals: {
- requests: reqObj ? [reqObj] : vm.requestList.selectedRequests,
+ requests: reqObj ? [reqObj] : vm.mainList.getSelectedItems(
+ vm.mainList === vm.collectionList ? filterCollReq : filterReq
+ ),
collectionNames: vm.collectionList.getCollectionNames(),
duplicate: duplicate || false,
},
*/
function saveRequests(requests){
requests.forEach(function (reqObj){
- vm.collectionList.addRequestToList(reqObj);
+ vm.collectionList.addItemToList(RequestsService.clearUnnecessaryProperties(reqObj.clone()));
vm.collectionList.saveToStorage();
- refreshCollections();
+ refreshCollectionsWithExpansion();
});
}
function changeCollectionName(names){
vm.collectionList.renameCollection(names[0], names[1]);
vm.collectionList.saveToStorage();
- refreshCollections();
+ refreshCollectionsWithExpansion();
}
/**
function duplicateCollection(names){
vm.collectionList.duplicateCollection(names[0], names[1]);
vm.collectionList.saveToStorage();
- refreshCollections();
+ refreshCollectionsWithExpansion();
+ }
+
+
+ function selectNewestRequest() {
+ vm.mainList.toggleReqSelection(true, vm.mainList.getNewestRequest());
+ }
+
+ function loadCollectionsList() {
+ vm.collectionList.loadListFromStorage();
+ }
+
+ function loadHistoryList() {
+ vm.requestList.loadListFromStorage();
}
/**
*
- * @param list collectionList or requestList object
+ * @param mainList collectionList or requestList object
*/
- function init(list){
- vm.mainList = list;
+ function init(mainList){
+
+ vm.collectionList = RequestsService.createEmptyCollectionList('yangman_collectionsList');
+ // collections are loaded for both history and collections tab
+ loadCollectionsList();
+
+ vm.requestList = RequestsService.createEmptyHistoryList('yangman_requestsList');
+
+
+ // if request was selected, deselect requests in all other instances of RequestsListCtrl
+ $scope.$on('YANGMAN_DESELECT_REQUESTS', function (event, params) {
+ if (params.params.broadcastingCtrl !== vm) {
+ deselectAllRequests();
+ }
+ });
+
+ $scope.$on('YANGMAN_REFRESH_COLLECTIONS', function (event, params){
+ loadCollectionsList();
+ (params.cbk || angular.noop)();
+ });
+
+ // list type dependend operations
+ if (mainList === 'history') {
- if (list === vm.requestList){
+ vm.mainList = vm.requestList;
+ loadHistoryList();
+
+ $scope.$on('YANGMAN_REFRESH_HISTORY', loadHistoryList);
// saving from request header after execution
$scope.$on('YANGMAN_SAVE_EXECUTED_REQUEST', saveBcstedHistoryRequest);
+ // select newest request
+ $scope.$on('YANGMAN_SELECT_THE_NEWEST_REQUEST', selectNewestRequest);
+ }
+ else {
+ vm.mainList = vm.collectionList;
// saving from request header
$scope.$on('YANGMAN_SAVE_REQUEST_TO_COLLECTION', saveRequestFromExt);
- } else {
// saving collections expanded status on refresh
- $scope.$on('YANGMAN_REFRESH_AND_EXPAND_COLLECTIONS', function(event, params){
- $scope.rootBroadcast('YANGMAN_REFRESH_COLLECTIONS');
- (params.cbk || angular.noop)();
+ $scope.$on('YANGMAN_REFRESH_AND_EXPAND_COLLECTIONS', function(){
+ var expandedColNames = vm.collectionList.getExpandedCollectionNames();
+ $scope.rootBroadcast('YANGMAN_REFRESH_COLLECTIONS', {}, function (){
+ vm.collectionList.expandCollectionByNames(expandedColNames);
+ });
});
}
}
- /**
- * Loading history request and grouping by date
- */
- function loadHistoryRequests(){
- vm.requestList.loadListFromStorage();
- vm.requestList.groupListByDate();
- }
-
- /**
- * Loading collections
- */
- function loadCollectionRequest(){
- vm.collectionList.loadListFromStorage();
- }
-
- /**
- * Loading both history and collections reqs
- */
- function loadRequests(){
- loadHistoryRequests();
- loadCollectionRequest();
- }
/**
* Request in list selection
* @param requestObj
*/
function selectRequest(event, requestObj){
+ $scope.rootBroadcast('YANGMAN_DESELECT_REQUESTS', { broadcastingCtrl: vm });
vm.mainList.toggleReqSelection(!event.ctrlKey, requestObj);
- $scope.setHistoryReqsSelected(vm.requestList.selectedRequests.length > 0);
if (!event.ctrlKey){
- vm.showData(requestObj);
+ vm.showData(requestObj, true);
}
}
+ /**
+ * Mark only requestObj in current list as selected
+ * Used for example when user clicks on request submenu
+ * @param requestObj
+ */
+ function selectOnlyThisRequest(requestObj){
+ vm.mainList.toggleReqSelection(true, requestObj);
+ }
+
/**
* Deselect history requests
*/
- function deselectAllRequests(){
- vm.mainList.deselectReqs();
+ function deselectAllFilteredReqs(){
+ vm.mainList.deselectAllFilteredItems(vm.mainList === vm.collectionList ? filterCollReq : vm.filterReq);
+ }
+
+ function deselectAllRequests() {
+ vm.mainList.deselectAllItems();
}
/**
* Select history requests
*/
- function selectAllRequests(){
- deselectAllRequests();
- vm.mainList.dateGroups.forEach(function(group){
- vm.mainList.selectReqs(group.requests);
- });
+ function selectAllFilteredReqs(){
+ vm.mainList.selectAllFilteredItems(vm.mainList === vm.collectionList ? filterCollReq : vm.filterReq);
+ }
+
+ /**
+ * Use when selecting filtered requests if they are saved to some collection
+ * Additional filter is if the collection of the request is expanded
+ * @param request
+ * @returns {*|boolean}
+ */
+ function filterCollReq(request) {
+ return vm.collectionList.getCollection(request.collection).expanded && vm.filterReq(request);
}
/**
* Refresh and expand collections
*/
- function refreshCollections(){
- var collectionNames = vm.collectionList.getExpandedCollectionNames();
- $scope.rootBroadcast('YANGMAN_REFRESH_AND_EXPAND_COLLECTIONS', null, function(){
- vm.collectionList.expandCollectionByNames(collectionNames);
- });
+ function refreshCollectionsWithExpansion(){
+ $scope.rootBroadcast('YANGMAN_REFRESH_AND_EXPAND_COLLECTIONS');
}
}