From 83edfb9832e7945fc55db13c2a4854acceba389a Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Thu, 15 Oct 2015 14:03:14 -0700 Subject: [PATCH] GUAC-1193: Use filter token parser to split search string. --- .../guacSettingsConnectionHistory.js | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/guacamole/src/main/webapp/app/settings/directives/guacSettingsConnectionHistory.js b/guacamole/src/main/webapp/app/settings/directives/guacSettingsConnectionHistory.js index 7de5587e1..7284a1135 100644 --- a/guacamole/src/main/webapp/app/settings/directives/guacSettingsConnectionHistory.js +++ b/guacamole/src/main/webapp/app/settings/directives/guacSettingsConnectionHistory.js @@ -37,7 +37,8 @@ angular.module('settings').directive('guacSettingsConnectionHistory', [function controller: ['$scope', '$injector', function settingsConnectionHistoryController($scope, $injector) { // Get required types - var SortOrder = $injector.get('SortOrder'); + var FilterToken = $injector.get('FilterToken'); + var SortOrder = $injector.get('SortOrder'); // Get required services var $routeParams = $injector.get('$routeParams'); @@ -118,10 +119,37 @@ angular.module('settings').directive('guacSettingsConnectionHistory', [function // Clear current results $scope.historyRecords = null; + // Tokenize search string + var tokens = FilterToken.tokenize($scope.searchString); + + // Transform tokens into list of required string contents + var requiredContents = []; + angular.forEach(tokens, function addRequiredContents(token) { + + // Transform depending on token type + switch (token.type) { + + // For string literals, use parsed token value + case 'LITERAL': + requiredContents.push(token.value); + + // Ignore whitespace + case 'WHITESPACE': + break; + + // For all other token types, use the relevant portion + // of the original search string + default: + requiredContents.push(token.consumed); + + } + + }); + // Fetch history records historyService.getConnectionHistory( - $scope.dataSource, - $scope.searchString.split(/\s+/), + $scope.dataSource, + requiredContents, $scope.order.predicate ) .success(function historyRetrieved(historyRecords) {