From 778dfc4d56e4598165228130d3c21b4c63003c03 Mon Sep 17 00:00:00 2001 From: "Lukasz.Zeglinski" Date: Wed, 17 Jul 2019 18:54:06 +0200 Subject: [PATCH 1/2] Add validation for filter.pid/ filter.tid/ filter.data input objects --- .../logcat-table/logcat-table-directive.js | 32 +++++++++++++++++++ res/app/control-panes/logs/logs-controller.js | 20 +++++++++++- res/app/control-panes/logs/logs.pug | 2 +- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/res/app/components/stf/logcat-table/logcat-table-directive.js b/res/app/components/stf/logcat-table/logcat-table-directive.js index fb285eae..8c7599cf 100644 --- a/res/app/components/stf/logcat-table/logcat-table-directive.js +++ b/res/app/components/stf/logcat-table/logcat-table-directive.js @@ -105,6 +105,38 @@ module.exports = clearTable() } + /** + * Validate filter.data object value and assign bordercolor to red if value + * doesn't match regex(pattern): + * - HH:mm:ss.SSS + * - H:mm:ss.SSS + * - :mm:SS.SSS + * - mm:ss.SSS + * - m:ss.SSS + * -... combinations + * in other case colour will be set to default. + * + * @param {event} event object + */ + scope.validateDate = function(e) { + var regex = /^(?:(?:([0-1]?\d|2[0-3]):)?(:[0-5]\d|[0-5]\d):|\d)?(:[0-5]\d|[0-5]\d{1,2})?(\.[0-9]?\d{0,2}|:[0-5]?\d{0,1})|(\d{0,2})/g; + var inputValue = event.srcElement.value; + var matchArray = inputValue.match(regex); + var isTextValid = false; + if ( matchArray) { + matchArray.forEach(function (item, index) { + if (item === inputValue) { + isTextValid = true + event.srcElement.style.borderColor=''; + } + }) + } + + if (isTextValid === false) { + event.srcElement.style.borderColor='red'; + } + } + scope.$on('$destroy', function() { parent.removeEventListener('scroll', throttledScrollListener) }) diff --git a/res/app/control-panes/logs/logs-controller.js b/res/app/control-panes/logs/logs-controller.js index 86f91b98..c7669c2c 100644 --- a/res/app/control-panes/logs/logs-controller.js +++ b/res/app/control-panes/logs/logs-controller.js @@ -34,7 +34,25 @@ module.exports = function LogsCtrl($scope, LogcatService) { angular.forEach(props, function(prop) { $scope.$watch('filters.' + prop, function(newValue, oldValue) { if (!angular.equals(newValue, oldValue)) { - LogcatService.filters[prop] = newValue + var transformedInput = '' + switch('filters.' + prop) { + case 'filters.pid': + var transformedInput = newValue.replace(/[^0-9:]/g, ''); + if (transformedInput !== newValue) { + $scope.filters.pid = transformedInput; + } + break; + case 'filters.tid': + var transformedInput = newValue.replace(/[^0-9]/g, ''); + if (transformedInput !== newValue) { + $scope.filters.tid = transformedInput; + } + break; + default: + transformedInput = newValue; + } + + LogcatService.filters[prop] = transformedInput } }) }) diff --git a/res/app/control-panes/logs/logs.pug b/res/app/control-panes/logs/logs.pug index 4ae8afb6..2735e330 100644 --- a/res/app/control-panes/logs/logs.pug +++ b/res/app/control-panes/logs/logs.pug @@ -12,7 +12,7 @@ select(ng-model='filters.priority', ng-options='l.name for l in filters.levelNumbers') option(value='', disabled, selected) {{"Level"|translate}} td(width='10%') - input(ng-model='filters.date', type='text', placeholder='{{"Time"|translate}}').input-sm.form-control + input(ng-model='filters.date', type='text', placeholder='{{"Time"|translate}}', ng-keyup='validateDate(event=$event)').input-sm.form-control td(width='8%', ng-if='$root.platform == "native"') input(ng-model='filters.pid', type='text', placeholder='{{"PID"|translate}}').input-sm.form-control td(width='8%', ng-if='$root.platform == "native"') From 93178413ea78b0a12ff569d4394a4280171cda92 Mon Sep 17 00:00:00 2001 From: "Lukasz.Zeglinski" Date: Thu, 18 Jul 2019 10:33:20 +0200 Subject: [PATCH 2/2] Fix of the codestyle issues --- .../stf/logcat-table/logcat-table-directive.js | 18 ++++++++++-------- res/app/control-panes/logs/logs-controller.js | 14 +++++++------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/res/app/components/stf/logcat-table/logcat-table-directive.js b/res/app/components/stf/logcat-table/logcat-table-directive.js index 8c7599cf..a172bb9f 100644 --- a/res/app/components/stf/logcat-table/logcat-table-directive.js +++ b/res/app/components/stf/logcat-table/logcat-table-directive.js @@ -119,21 +119,23 @@ module.exports = * @param {event} event object */ scope.validateDate = function(e) { - var regex = /^(?:(?:([0-1]?\d|2[0-3]):)?(:[0-5]\d|[0-5]\d):|\d)?(:[0-5]\d|[0-5]\d{1,2})?(\.[0-9]?\d{0,2}|:[0-5]?\d{0,1})|(\d{0,2})/g; - var inputValue = event.srcElement.value; - var matchArray = inputValue.match(regex); - var isTextValid = false; - if ( matchArray) { - matchArray.forEach(function (item, index) { + var pattern = ['^(?:(?:([0-1]?\\d|2[0-3]):)?(:[0-5]\\d|[0-5]\\d):|\\d)', + '?(:[0-5]\\d|[0-5]\\d{1,2})?(\\.[0-9]?\\d{0,2}|:[0-5]?\\d{0,1})|(\\d{0,2})'].join([]) + var regex = new RegExp(pattern, 'g') + var inputValue = event.srcElement.value + var matchArray = inputValue.match(regex) + var isTextValid = false + if (matchArray) { + matchArray.forEach(function(item, index) { if (item === inputValue) { isTextValid = true - event.srcElement.style.borderColor=''; + event.srcElement.style.borderColor = '' } }) } if (isTextValid === false) { - event.srcElement.style.borderColor='red'; + event.srcElement.style.borderColor = 'red' } } diff --git a/res/app/control-panes/logs/logs-controller.js b/res/app/control-panes/logs/logs-controller.js index c7669c2c..a61b842c 100644 --- a/res/app/control-panes/logs/logs-controller.js +++ b/res/app/control-panes/logs/logs-controller.js @@ -37,19 +37,19 @@ module.exports = function LogsCtrl($scope, LogcatService) { var transformedInput = '' switch('filters.' + prop) { case 'filters.pid': - var transformedInput = newValue.replace(/[^0-9:]/g, ''); + transformedInput = newValue.replace(/[^0-9:]/g, '') if (transformedInput !== newValue) { - $scope.filters.pid = transformedInput; + $scope.filters.pid = transformedInput } - break; + break case 'filters.tid': - var transformedInput = newValue.replace(/[^0-9]/g, ''); + transformedInput = newValue.replace(/[^0-9]/g, '') if (transformedInput !== newValue) { - $scope.filters.tid = transformedInput; + $scope.filters.tid = transformedInput } - break; + break default: - transformedInput = newValue; + transformedInput = newValue } LogcatService.filters[prop] = transformedInput