mirror of
https://github.com/ansible/awx.git
synced 2026-05-08 18:07:36 -02:30
Pulled in latest angular-scheduler changes. Added validation to start time, interval count and occurrence count.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "angular-scheduler",
|
"name": "angular-scheduler",
|
||||||
"version": "0.0.5",
|
"version": "0.0.8",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Chris Houseknecht <chouse@ansible.com>"
|
"Chris Houseknecht <chouse@ansible.com>"
|
||||||
],
|
],
|
||||||
@@ -27,7 +27,8 @@
|
|||||||
"bootstrap": "~3.1.1",
|
"bootstrap": "~3.1.1",
|
||||||
"rrule": "*",
|
"rrule": "*",
|
||||||
"timezone-js": "*",
|
"timezone-js": "*",
|
||||||
"angular-tz-extensions": "*"
|
"angular-tz-extensions": "*",
|
||||||
|
"globalize": "~0.1.1"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/chouseknecht/angular-scheduler",
|
"homepage": "https://github.com/chouseknecht/angular-scheduler",
|
||||||
"main": "git@github.com:chouseknecht/angular-scheduler.git",
|
"main": "git@github.com:chouseknecht/angular-scheduler.git",
|
||||||
@@ -36,13 +37,13 @@
|
|||||||
"rrule",
|
"rrule",
|
||||||
"calendar"
|
"calendar"
|
||||||
],
|
],
|
||||||
"_release": "0.0.5",
|
"_release": "0.0.8",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v0.0.5",
|
"tag": "v0.0.8",
|
||||||
"commit": "dfbfa58ea5580cf44f95e8e2c88c91ca37acfd31"
|
"commit": "df3f8e2c2c5f408fafe4ebfc1468998d51c4a66d"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/chouseknecht/angular-scheduler.git",
|
"_source": "git://github.com/chouseknecht/angular-scheduler.git",
|
||||||
"_target": "~0.0.5",
|
"_target": "~0.0.8",
|
||||||
"_originalSource": "angular-scheduler"
|
"_originalSource": "angular-scheduler"
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "angular-scheduler",
|
"name": "angular-scheduler",
|
||||||
"version": "0.0.5",
|
"version": "0.0.8",
|
||||||
"authors": [
|
"authors": [
|
||||||
"Chris Houseknecht <chouse@ansible.com>"
|
"Chris Houseknecht <chouse@ansible.com>"
|
||||||
],
|
],
|
||||||
@@ -27,7 +27,8 @@
|
|||||||
"bootstrap": "~3.1.1",
|
"bootstrap": "~3.1.1",
|
||||||
"rrule": "*",
|
"rrule": "*",
|
||||||
"timezone-js": "*",
|
"timezone-js": "*",
|
||||||
"angular-tz-extensions": "*"
|
"angular-tz-extensions": "*",
|
||||||
|
"globalize": "~0.1.1"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/chouseknecht/angular-scheduler",
|
"homepage": "https://github.com/chouseknecht/angular-scheduler",
|
||||||
"main": "git@github.com:chouseknecht/angular-scheduler.git",
|
"main": "git@github.com:chouseknecht/angular-scheduler.git",
|
||||||
|
|||||||
@@ -41,12 +41,12 @@
|
|||||||
<label>Start Time <span class="fmt-help">HH24:MM:SS</span><span class="fmt-help" ng-show="!schedulerShowTimeZone">UTC</span></label>
|
<label>Start Time <span class="fmt-help">HH24:MM:SS</span><span class="fmt-help" ng-show="!schedulerShowTimeZone">UTC</span></label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input name="schedulerStartHour" id="schedulerStartHour" sch-spinner="scheduler_form" class="scheduler-time-spinner"
|
<input name="schedulerStartHour" id="schedulerStartHour" sch-spinner="scheduler_form" class="scheduler-time-spinner"
|
||||||
ng-model="schedulerStartHour" data-zero-pad="2" placeholder="HH24" min="0" max="23" required ng-change="scheduleTimeChange" >
|
ng-model="schedulerStartHour" placeholder="HH24" min="0" max="23" data-zero-pad="2" required
|
||||||
<span>:</span><input name="schedulerStartMinute" id="schedulerStartMinute" sch-spinner="scheduler_form" class="scheduler-time-spinner"
|
ng-change="scheduleTimeChange" >
|
||||||
data-zero-pad="2" ng-model="schedulerStartMinute" placeholder="MM" min="0" max="59" required ng-change="scheduleTimeChange" >
|
<span>:</span><input name="schedulerStartMinute" id="schedulerStartMinute" sch-spinner="scheduler_form" class="scheduler-time-spinner" ng-model="schedulerStartMinute" placeholder="MM" min="0" max="59" data-zero-pad="2" required ng-change="scheduleTimeChange" >
|
||||||
<span>:</span><input name="schedulerStartSecond" id="schedulerStartSecond" sch-spinner="scheduler_form" class="scheduler-time-spinner"
|
<span>:</span><input name="schedulerStartSecond" id="schedulerStartSecond" sch-spinner="scheduler_form" class="scheduler-time-spinner" ng-model="schedulerStartSecond" placeholder="SS" min="0" max="59" data-zero-pad="2" required ng-change="scheduleTimeChange" >
|
||||||
data-zero-pad="2" ng-model="schedulerStartSecond" placeholder="SS" min="0" max="23" required ng-change="scheduleTimeChange" >
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="error" ng-show="scheduler_startTime_error">Time must be in HH24:MM:SS format</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -81,13 +81,15 @@
|
|||||||
ng-options="f.name for f in frequencyOptions" required class="form-control input-sm"
|
ng-options="f.name for f in frequencyOptions" required class="form-control input-sm"
|
||||||
ng-change="scheduleRepeatChange()"></select>
|
ng-change="scheduleRepeatChange()"></select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="error" ng-show="sheduler_frequency_error"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8">
|
<div class="col-md-4">
|
||||||
<div class="form-group no-label" ng-show="schedulerShowInterval">
|
<div class="form-group no-label" ng-show="schedulerShowInterval">
|
||||||
<label>Every</label>
|
<label>Every</label>
|
||||||
<input name="schedulerInterval" id="schedulerInterval" sch-spinner="scheduler_form" class="scheduler-spinner"
|
<input name="schedulerInterval" id="schedulerInterval" sch-spinner="scheduler_form" class="scheduler-spinner"
|
||||||
ng-model="schedulerInterval" min="1" max="999" >
|
ng-model="schedulerInterval" min="1" max="999" >
|
||||||
<label class="inline-label" ng-bind="schedulerIntervalLabel"></label>
|
<label class="inline-label" ng-bind="schedulerIntervalLabel"></label>
|
||||||
|
<div class="error" ng-show="scheduler_interval_error">Provide a value between 1 and 999</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -187,8 +189,7 @@
|
|||||||
<div class="form-group" ng-show="schedulerShowInterval">
|
<div class="form-group" ng-show="schedulerShowInterval">
|
||||||
<label>End</label>
|
<label>End</label>
|
||||||
<div>
|
<div>
|
||||||
<select id="schedulerEnd" name="schedulerEnd" ng-model="schedulerEnd" ng-options="e.name for e in endOptions" required
|
<select id="schedulerEnd" name="schedulerEnd" ng-model="schedulerEnd" ng-options="e.name for e in endOptions" required class="form-control input-sm" ng-change="schedulerEndChange()"></select>
|
||||||
class="form-control input-sm" ng-change="scheduleRepeatChange()"></select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -199,6 +200,7 @@
|
|||||||
ng-model="schedulerOccurrenceCount" min="1" max="999" >
|
ng-model="schedulerOccurrenceCount" min="1" max="999" >
|
||||||
<label class="inline-label">Occurrence(s)</label>
|
<label class="inline-label">Occurrence(s)</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="error" ng-show="scheduler_occurrenceCount_error">Provide a value between 1 and 999</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4" ng-show="schedulerEnd && schedulerEnd.value == 'on'">
|
<div class="col-md-4" ng-show="schedulerEnd && schedulerEnd.value == 'on'">
|
||||||
|
|||||||
@@ -64,8 +64,10 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
if (useTimezone) {
|
if (useTimezone) {
|
||||||
scope.resetStartDate();
|
scope.resetStartDate();
|
||||||
try {
|
try {
|
||||||
var dateStr = scope.schedulerStartDt + 'T' + scope.schedulerStartHour + ':' + scope.schedulerStartMinute +
|
var dateStr = scope.schedulerStartDt + 'T' +
|
||||||
':' + scope.schedulerStartSecond + '.000Z';
|
$filter('schZeroPad')(scope.schedulerStartHour, 2) + ':' +
|
||||||
|
$filter('schZeroPad')(scope.schedulerStartMinute, 2) + ':' +
|
||||||
|
$filter('schZeroPad')(scope.schedulerStartSecond, 2) + '.000Z';
|
||||||
scope.schedulerUTCTime = $timezones.toUTC(dateStr, scope.schedulerTimeZone.name).toISOString();
|
scope.schedulerUTCTime = $timezones.toUTC(dateStr, scope.schedulerTimeZone.name).toISOString();
|
||||||
}
|
}
|
||||||
catch(e) {
|
catch(e) {
|
||||||
@@ -151,6 +153,14 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
scope.schedulerEndChange = function() {
|
||||||
|
var dt = new Date(), // date adjusted to local zone automatically
|
||||||
|
month = $filter('schZeroPad')(dt.getMonth() + 1, 2),
|
||||||
|
day = $filter('schZeroPad')(dt.getDate(), 2);
|
||||||
|
scope.schedulerEndDt = dt.getFullYear() + '-' + month + '-' + day;
|
||||||
|
scope.schedulerOccurrenceCount = 1;
|
||||||
|
};
|
||||||
|
|
||||||
// When timezones become available, use to set defaults
|
// When timezones become available, use to set defaults
|
||||||
if (scope.removeZonesReady) {
|
if (scope.removeZonesReady) {
|
||||||
scope.removeZonesReady();
|
scope.removeZonesReady();
|
||||||
@@ -231,6 +241,9 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
this.scope.scheduler_endDt_error = false;
|
this.scope.scheduler_endDt_error = false;
|
||||||
this.scope.resetStartDate();
|
this.scope.resetStartDate();
|
||||||
this.scope.scheduler_endDt_error = false;
|
this.scope.scheduler_endDt_error = false;
|
||||||
|
this.scope.scheduler_interval_error = false;
|
||||||
|
this.scope.scheduler_occurrenceCount_error = false;
|
||||||
|
|
||||||
if (this.scope.scheduler_form && this.scope.scheduler_form.schedulerEndDt) {
|
if (this.scope.scheduler_form && this.scope.scheduler_form.schedulerEndDt) {
|
||||||
this.scope.scheduler_form.schedulerEndDt.$setValidity('custom-error', true);
|
this.scope.scheduler_form.schedulerEndDt.$setValidity('custom-error', true);
|
||||||
this.scope.scheduler_form.schedulerEndDt.$setPristine();
|
this.scope.scheduler_form.schedulerEndDt.$setPristine();
|
||||||
@@ -262,10 +275,26 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
var startDt, now, dateStr, adjNow, timeNow, timeFuture, validity = true;
|
var startDt, now, dateStr, adjNow, timeNow, timeFuture, validity = true;
|
||||||
this.clearErrors();
|
this.clearErrors();
|
||||||
|
|
||||||
|
|
||||||
|
if (this.scope.schedulerFrequency.value !== 'none' && (this.scope.schedulerInterval < 1 || this.scope.schedulerInterval > 999)) {
|
||||||
|
this.scope.scheduler_interval_error = true;
|
||||||
|
validity = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.scope.schedulerEnd.value === 'after' && (this.scope.schedulerOccurrenceCount < 0 || this.scope.schedulerOccurrenceCount > 999)) {
|
||||||
|
this.scope.scheduler_occurrenceCount_error = true;
|
||||||
|
validity = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.scope.schedulerFrequency.value === 'weekly' && scope.weekDays.length === 0) {
|
if (this.scope.schedulerFrequency.value === 'weekly' && scope.weekDays.length === 0) {
|
||||||
this.scope.scheduler_weekDays_error = true;
|
this.scope.scheduler_weekDays_error = true;
|
||||||
validity = false;
|
validity = false;
|
||||||
}
|
}
|
||||||
|
if (this.scope.schedulerStartHour < 0 || this.scope.schedulerStartMinute < 0 || scope.schedulerStartSecond < 0 ||
|
||||||
|
this.scope.schedulerStartHour > 23 || this.scope.schedulerStartMinute > 59 || scope.schedulerStartSecond > 59) {
|
||||||
|
this.scope.scheduler_startTime_error = true;
|
||||||
|
validity = false;
|
||||||
|
}
|
||||||
if (!this.scope.scheduler_form.schedulerName.$valid) {
|
if (!this.scope.scheduler_form.schedulerName.$valid) {
|
||||||
// Make sure schedulerName requird error shows up
|
// Make sure schedulerName requird error shows up
|
||||||
this.scope.scheduler_form.schedulerName.$dirty = true;
|
this.scope.scheduler_form.schedulerName.$dirty = true;
|
||||||
@@ -651,9 +680,9 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
month = $filter('schZeroPad')(dt.getMonth() + 1, 2);
|
month = $filter('schZeroPad')(dt.getMonth() + 1, 2);
|
||||||
day = $filter('schZeroPad')(dt.getDate(), 2);
|
day = $filter('schZeroPad')(dt.getDate(), 2);
|
||||||
scope.schedulerStartDt = dt.getFullYear() + '-' + month + '-' + day;
|
scope.schedulerStartDt = dt.getFullYear() + '-' + month + '-' + day;
|
||||||
scope.schedulerStartHour = $filter('schZeroPad')(dt.getHours(),2);
|
scope.schedulerStartHour = dt.getHours(); //$filter('schZeroPad')(dt.getHours(),2);
|
||||||
scope.schedulerStartMinute = $filter('schZeroPad')(dt.getMinutes(),2);
|
scope.schedulerStartMinute = dt.getMinutes(); // $filter('schZeroPad')(dt.getMinutes(),2);
|
||||||
scope.schedulerStartSecond = $filter('schZeroPad')(dt.getSeconds(),2);
|
scope.schedulerStartSecond = dt.getSeconds(); // $filter('schZeroPad')(dt.getSeconds(),2);
|
||||||
scope.scheduleTimeChange(); // calc UTC
|
scope.scheduleTimeChange(); // calc UTC
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -933,16 +962,20 @@ angular.module('AngularScheduler', ['underscore'])
|
|||||||
};
|
};
|
||||||
}])
|
}])
|
||||||
|
|
||||||
// Custom directives
|
// Custom directives
|
||||||
.directive('schSpinner', ['$filter', function($filter) {
|
.directive('schSpinner', ['$filter', function($filter) {
|
||||||
return {
|
return {
|
||||||
require: 'ngModel',
|
require: 'ngModel',
|
||||||
link: function(scope, element, attr, ctrl) {
|
link: function(scope, element, attr, ctrl) {
|
||||||
// Add jquerui spinner to 'spinner' type input
|
// Add jquerui spinner to 'spinner' type input
|
||||||
var form = attr.schSpinner,
|
var form = attr.schSpinner,
|
||||||
zeroPad = attr.zeroPad;
|
zeroPad = attr.zeroPad,
|
||||||
|
min = attr.min || 1,
|
||||||
|
max = attr.max || 999;
|
||||||
$(element).spinner({
|
$(element).spinner({
|
||||||
stop: function() {
|
min: min,
|
||||||
|
max: max,
|
||||||
|
change: function() {
|
||||||
if (zeroPad) {
|
if (zeroPad) {
|
||||||
scope[attr.ngModel] = $filter('schZeroPad')($(this).val(),zeroPad);
|
scope[attr.ngModel] = $filter('schZeroPad')($(this).val(),zeroPad);
|
||||||
$(this).val(scope[attr.ngModel]);
|
$(this).val(scope[attr.ngModel]);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -41,7 +41,7 @@
|
|||||||
<script src="{{ STATIC_URL }}lib/rrule/lib/rrule.js"></script>
|
<script src="{{ STATIC_URL }}lib/rrule/lib/rrule.js"></script>
|
||||||
<script src="{{ STATIC_URL }}lib/rrule/lib/nlp.js"></script>
|
<script src="{{ STATIC_URL }}lib/rrule/lib/nlp.js"></script>
|
||||||
<script src="{{ STATIC_URL }}lib/angular-tz-extensions/lib/angular-tz-extensions.js"></script>
|
<script src="{{ STATIC_URL }}lib/angular-tz-extensions/lib/angular-tz-extensions.js"></script>
|
||||||
<script src="{{ STATIC_URL }}lib/angular-scheduler/lib/angular-scheduler.js"></script>
|
<script src="{{ STATIC_URL }}lib/angular-scheduler/lib/angular-scheduler.min.js"></script>
|
||||||
|
|
||||||
{% if settings.USE_MINIFIED_JS %}
|
{% if settings.USE_MINIFIED_JS %}
|
||||||
<script src="{{ STATIC_URL }}js/awx.min.js"></script>
|
<script src="{{ STATIC_URL }}js/awx.min.js"></script>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
"angular-md5": "~0.1.7",
|
"angular-md5": "~0.1.7",
|
||||||
"angular-resource": "~1.2.12",
|
"angular-resource": "~1.2.12",
|
||||||
"angular-sanitize": "~1.2.12",
|
"angular-sanitize": "~1.2.12",
|
||||||
"angular-scheduler": "~0.0.6",
|
"angular-scheduler": "~0.0.8",
|
||||||
"bootstrap": "~3.1.1",
|
"bootstrap": "~3.1.1",
|
||||||
"components-font-awesome": "~4.0.3",
|
"components-font-awesome": "~4.0.3",
|
||||||
"less.js": "~1.6.3",
|
"less.js": "~1.6.3",
|
||||||
|
|||||||
Reference in New Issue
Block a user