Pulled in latest angular-scheduler changes. Added validation to start time, interval count and occurrence count.

This commit is contained in:
Chris Houseknecht 2014-04-02 14:21:54 -04:00
parent 3068f35aeb
commit 12ecf56dc4
7 changed files with 65 additions and 28 deletions

View File

@ -1,6 +1,6 @@
{
"name": "angular-scheduler",
"version": "0.0.5",
"version": "0.0.8",
"authors": [
"Chris Houseknecht <chouse@ansible.com>"
],
@ -27,7 +27,8 @@
"bootstrap": "~3.1.1",
"rrule": "*",
"timezone-js": "*",
"angular-tz-extensions": "*"
"angular-tz-extensions": "*",
"globalize": "~0.1.1"
},
"homepage": "https://github.com/chouseknecht/angular-scheduler",
"main": "git@github.com:chouseknecht/angular-scheduler.git",
@ -36,13 +37,13 @@
"rrule",
"calendar"
],
"_release": "0.0.5",
"_release": "0.0.8",
"_resolution": {
"type": "version",
"tag": "v0.0.5",
"commit": "dfbfa58ea5580cf44f95e8e2c88c91ca37acfd31"
"tag": "v0.0.8",
"commit": "df3f8e2c2c5f408fafe4ebfc1468998d51c4a66d"
},
"_source": "git://github.com/chouseknecht/angular-scheduler.git",
"_target": "~0.0.5",
"_target": "~0.0.8",
"_originalSource": "angular-scheduler"
}

View File

@ -1,6 +1,6 @@
{
"name": "angular-scheduler",
"version": "0.0.5",
"version": "0.0.8",
"authors": [
"Chris Houseknecht <chouse@ansible.com>"
],
@ -27,7 +27,8 @@
"bootstrap": "~3.1.1",
"rrule": "*",
"timezone-js": "*",
"angular-tz-extensions": "*"
"angular-tz-extensions": "*",
"globalize": "~0.1.1"
},
"homepage": "https://github.com/chouseknecht/angular-scheduler",
"main": "git@github.com:chouseknecht/angular-scheduler.git",

View File

@ -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>
<div class="input-group">
<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" >
<span>:</span><input name="schedulerStartMinute" id="schedulerStartMinute" sch-spinner="scheduler_form" class="scheduler-time-spinner"
data-zero-pad="2" ng-model="schedulerStartMinute" placeholder="MM" min="0" max="59" required ng-change="scheduleTimeChange" >
<span>:</span><input name="schedulerStartSecond" id="schedulerStartSecond" sch-spinner="scheduler_form" class="scheduler-time-spinner"
data-zero-pad="2" ng-model="schedulerStartSecond" placeholder="SS" min="0" max="23" required ng-change="scheduleTimeChange" >
ng-model="schedulerStartHour" placeholder="HH24" min="0" max="23" data-zero-pad="2" 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" ng-model="schedulerStartSecond" placeholder="SS" min="0" max="59" data-zero-pad="2" required ng-change="scheduleTimeChange" >
</div>
<div class="error" ng-show="scheduler_startTime_error">Time must be in HH24:MM:SS format</div>
</div>
</div>
</div>
@ -81,13 +81,15 @@
ng-options="f.name for f in frequencyOptions" required class="form-control input-sm"
ng-change="scheduleRepeatChange()"></select>
</div>
<div class="error" ng-show="sheduler_frequency_error"></div>
</div>
<div class="col-md-8">
<div class="col-md-4">
<div class="form-group no-label" ng-show="schedulerShowInterval">
<label>Every</label>
<input name="schedulerInterval" id="schedulerInterval" sch-spinner="scheduler_form" class="scheduler-spinner"
ng-model="schedulerInterval" min="1" max="999" >
<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>
@ -187,8 +189,7 @@
<div class="form-group" ng-show="schedulerShowInterval">
<label>End</label>
<div>
<select id="schedulerEnd" name="schedulerEnd" ng-model="schedulerEnd" ng-options="e.name for e in endOptions" required
class="form-control input-sm" ng-change="scheduleRepeatChange()"></select>
<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>
</div>
</div>
</div>
@ -198,7 +199,8 @@
<input ng-name="schedulerOccurrenceCount" ng-id="schedulerOccurrenceCount" sch-spinner="scheduler_form" class="scheduler-spinner"
ng-model="schedulerOccurrenceCount" min="1" max="999" >
<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 class="col-md-4" ng-show="schedulerEnd && schedulerEnd.value == 'on'">

View File

@ -64,8 +64,10 @@ angular.module('AngularScheduler', ['underscore'])
if (useTimezone) {
scope.resetStartDate();
try {
var dateStr = scope.schedulerStartDt + 'T' + scope.schedulerStartHour + ':' + scope.schedulerStartMinute +
':' + scope.schedulerStartSecond + '.000Z';
var dateStr = scope.schedulerStartDt + 'T' +
$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();
}
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
if (scope.removeZonesReady) {
scope.removeZonesReady();
@ -231,6 +241,9 @@ angular.module('AngularScheduler', ['underscore'])
this.scope.scheduler_endDt_error = false;
this.scope.resetStartDate();
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) {
this.scope.scheduler_form.schedulerEndDt.$setValidity('custom-error', true);
this.scope.scheduler_form.schedulerEndDt.$setPristine();
@ -261,11 +274,27 @@ angular.module('AngularScheduler', ['underscore'])
this.isValid = function() {
var startDt, now, dateStr, adjNow, timeNow, timeFuture, validity = true;
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) {
this.scope.scheduler_weekDays_error = true;
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) {
// Make sure schedulerName requird error shows up
this.scope.scheduler_form.schedulerName.$dirty = true;
@ -651,9 +680,9 @@ angular.module('AngularScheduler', ['underscore'])
month = $filter('schZeroPad')(dt.getMonth() + 1, 2);
day = $filter('schZeroPad')(dt.getDate(), 2);
scope.schedulerStartDt = dt.getFullYear() + '-' + month + '-' + day;
scope.schedulerStartHour = $filter('schZeroPad')(dt.getHours(),2);
scope.schedulerStartMinute = $filter('schZeroPad')(dt.getMinutes(),2);
scope.schedulerStartSecond = $filter('schZeroPad')(dt.getSeconds(),2);
scope.schedulerStartHour = dt.getHours(); //$filter('schZeroPad')(dt.getHours(),2);
scope.schedulerStartMinute = dt.getMinutes(); // $filter('schZeroPad')(dt.getMinutes(),2);
scope.schedulerStartSecond = dt.getSeconds(); // $filter('schZeroPad')(dt.getSeconds(),2);
scope.scheduleTimeChange(); // calc UTC
}
else {
@ -933,16 +962,20 @@ angular.module('AngularScheduler', ['underscore'])
};
}])
// Custom directives
// Custom directives
.directive('schSpinner', ['$filter', function($filter) {
return {
require: 'ngModel',
link: function(scope, element, attr, ctrl) {
// Add jquerui spinner to 'spinner' type input
var form = attr.schSpinner,
zeroPad = attr.zeroPad;
zeroPad = attr.zeroPad,
min = attr.min || 1,
max = attr.max || 999;
$(element).spinner({
stop: function() {
min: min,
max: max,
change: function() {
if (zeroPad) {
scope[attr.ngModel] = $filter('schZeroPad')($(this).val(),zeroPad);
$(this).val(scope[attr.ngModel]);

File diff suppressed because one or more lines are too long

View File

@ -41,7 +41,7 @@
<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/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 %}
<script src="{{ STATIC_URL }}js/awx.min.js"></script>

View File

@ -15,7 +15,7 @@
"angular-md5": "~0.1.7",
"angular-resource": "~1.2.12",
"angular-sanitize": "~1.2.12",
"angular-scheduler": "~0.0.6",
"angular-scheduler": "~0.0.8",
"bootstrap": "~3.1.1",
"components-font-awesome": "~4.0.3",
"less.js": "~1.6.3",