From 2d3aef601d6d0ae61ff60e9b185e7169b908479d Mon Sep 17 00:00:00 2001 From: gconsidine Date: Mon, 17 Jul 2017 12:19:01 -0400 Subject: [PATCH] Fix scheduler time inputs by unsetting invalid values This is a quick and dirty fix. Since there's planned work around the scheduler in 3.3, maybe a broader refactoring effort can be considered at that point in time. --- .../src/scheduler/schedulerAdd.controller.js | 21 +++++++++++++++++++ .../src/scheduler/schedulerEdit.controller.js | 20 ++++++++++++++++++ .../src/scheduler/schedulerForm.partial.html | 6 +++--- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/scheduler/schedulerAdd.controller.js b/awx/ui/client/src/scheduler/schedulerAdd.controller.js index ef2ba43cb5..785b7d9192 100644 --- a/awx/ui/client/src/scheduler/schedulerAdd.controller.js +++ b/awx/ui/client/src/scheduler/schedulerAdd.controller.js @@ -25,6 +25,27 @@ export default ['$filter', '$state', '$stateParams', 'AddSchedule', 'Wait', $scope.schedulerEndSecond = "00"; $scope.parentObject = ParentObject; + /* + * This is a workaround for the angular-scheduler library inserting `ll` into fields after an + * invalid entry and never unsetting them. Presumably null is being truncated down to 2 chars + * in that case. + * + * Because this same problem exists in the edit mode and because there's no inheritence, this + * block of code is duplicated in both add/edit controllers pending a much needed broader + * refactoring effort. + */ + $scope.timeChange = () => { + if (!Number($scope.schedulerStartHour)) { + $scope.schedulerStartHour = '00'; + } else if (!Number($scope.schedulerStartMinute)) { + $scope.schedulerStartMinute = '00'; + } else if (!Number($scope.schedulerStartSecond)) { + $scope.schedulerStartSecond = '00'; + } + + $scope.scheduleTimeChange(); + }; + $scope.$on("ScheduleFormCreated", function(e, scope) { $scope.hideForm = false; $scope = angular.extend($scope, scope); diff --git a/awx/ui/client/src/scheduler/schedulerEdit.controller.js b/awx/ui/client/src/scheduler/schedulerEdit.controller.js index 72969a3d3e..45ea5d5ab8 100644 --- a/awx/ui/client/src/scheduler/schedulerEdit.controller.js +++ b/awx/ui/client/src/scheduler/schedulerEdit.controller.js @@ -16,6 +16,26 @@ function($filter, $state, $stateParams, EditSchedule, Wait, $scope, $rootScope, $scope.schedulerEndSecond = "00"; $scope.parentObject = ParentObject; + /* + * This is a workaround for the angular-scheduler library inserting `ll` into fields after an + * invalid entry and never unsetting them. Presumably null is being truncated down to 2 chars + * in that case. + * + * Because this same problem exists in the edit mode and because there's no inheritence, this + * block of code is duplicated in both add/edit controllers pending a much needed broader + * refactoring effort. + */ + $scope.timeChange = () => { + if (!Number($scope.schedulerStartHour)) { + $scope.schedulerStartHour = '00'; + } else if (!Number($scope.schedulerStartMinute)) { + $scope.schedulerStartMinute = '00'; + } else if (!Number($scope.schedulerStartSecond)) { + $scope.schedulerStartSecond = '00'; + } + + $scope.scheduleTimeChange(); + }; $scope.$on("ScheduleFormCreated", function(e, scope) { $scope.hideForm = false; diff --git a/awx/ui/client/src/scheduler/schedulerForm.partial.html b/awx/ui/client/src/scheduler/schedulerForm.partial.html index 6594319869..d9b7d1889f 100644 --- a/awx/ui/client/src/scheduler/schedulerForm.partial.html +++ b/awx/ui/client/src/scheduler/schedulerForm.partial.html @@ -75,7 +75,7 @@ placeholder="HH24" aw-min="0" min="0" aw-max="23" max="23" data-zero-pad="2" required - ng-change="scheduleTimeChange()" > + ng-change="timeChange()" > : @@ -91,7 +91,7 @@ placeholder="MM" min="0" max="59" data-zero-pad="2" required - ng-change="scheduleTimeChange()" > + ng-change="timeChange()" > : @@ -107,7 +107,7 @@ placeholder="SS" min="0" max="59" data-zero-pad="2" required - ng-change="scheduleTimeChange()" > + ng-change="timeChange()" >