Skip to content

Commit

Permalink
Merge pull request #414 from AnalyticalGraphicsInc/timeline-demo-misc
Browse files Browse the repository at this point in the history
Small fixes to date logic in the Timeline demo app
  • Loading branch information
mramato committed Jan 2, 2013
2 parents 6ae7569 + 48902d6 commit 47af737
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 23 deletions.
42 changes: 29 additions & 13 deletions Apps/TimelineDemo/TimelineDemo.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ define(['dojo',
"use strict";

var startDatePart, endDatePart, startTimePart, endTimePart;
var timeline, clock;
var timeline, clock, endBeforeStart, timeElement;

function updateScrubTime(julianDate) {
document.getElementById('mousePos').innerHTML = timeline.makeLabel(julianDate) + ' UTC';
Expand Down Expand Up @@ -85,24 +85,29 @@ define(['dojo',
// Adjust start/end dates in reaction to any calendar/time clicks
//
function newDatesSelected() {
var startJulian, endJulian, startDate, endDate;
var startJulian, endJulian;

if (startDatePart && startTimePart) {
startDate = dojo.date.stamp.fromISOString(startDatePart + startTimePart + 'Z'); // + 'Z' for UTC
startJulian = new JulianDate.fromDate(startDate);
startJulian = JulianDate.fromIso8601(startDatePart + startTimePart + 'Z'); // + 'Z' for UTC
}
if (endDatePart && endTimePart) {
endDate = dojo.date.stamp.fromISOString(endDatePart + endTimePart + 'Z');
endJulian = new JulianDate.fromDate(endDate);
endJulian = JulianDate.fromIso8601(endDatePart + endTimePart + 'Z');
}

if (startJulian && endJulian) {
if (!timeline) {
makeTimeline(startJulian, startJulian, endJulian);
if (startJulian.getSecondsDifference(endJulian) < 0.1) {
endBeforeStart.style.display = 'block';
timeElement.style.visibility = 'hidden';
} else {
endBeforeStart.style.display = 'none';
timeElement.style.visibility = 'visible';
if (!timeline) {
makeTimeline(startJulian, startJulian, endJulian);
}
clock.startTime = startJulian;
clock.stopTime = endJulian;
timeline.zoomTo(startJulian, endJulian);
}
clock.startTime = startJulian;
clock.stopTime = endJulian;
timeline.zoomTo(startJulian, endJulian);
}
}

Expand All @@ -123,16 +128,27 @@ define(['dojo',

// React to time-of-day selectors
//
function getTimePart(newTime) {
var h = newTime.getHours().toString();
h = (h.length < 2) ? ('0' + h) : h;
var m = newTime.getMinutes().toString();
m = (m.length < 2) ? ('0' + m) : m;
var s = newTime.getSeconds().toString();
s = (s.length < 2) ? ('0' + s) : s;
return 'T' + h + ':' + m + ':' + s;
}
function newStartTimeSelected(newTime) {
startTimePart = newTime.toString().replace(/.*1970\s(\S+).*/, 'T$1');
startTimePart = getTimePart(newTime);
newDatesSelected();
}
function newEndTimeSelected(newTime) {
endTimePart = newTime.toString().replace(/.*1970\s(\S+).*/, 'T$1');
endTimePart = getTimePart(newTime);
newDatesSelected();
}

dojo.ready(function() {
endBeforeStart = document.getElementById('endBeforeStart');
timeElement = document.getElementById('time1');
dojo.connect(dijit.byId('startCal'), 'onChange', newStartDateSelected);
dojo.connect(dijit.byId('endCal'), 'onChange', newEndDateSelected);
dojo.connect(dijit.byId('startTimeSel'), 'onChange', newStartTimeSelected);
Expand Down
8 changes: 8 additions & 0 deletions Apps/TimelineDemo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,11 @@
tr {
border-top: solid 1px #ddd;
}
#endBeforeStart {
display: none;
font-weight: bold;
color: #f00;
}
</style>
<script data-dojo-config="async: 1, tlmSiblingOfDojo: 0"
src="../../ThirdParty/dojo-release-1.7.2-src/dojo/dojo.js"></script>
Expand Down Expand Up @@ -123,6 +128,9 @@ <h1>Timeline Demo</h1>
<p>
Visible Timespan: <span id="formatted">(none)</span>
</p>
<p id="endBeforeStart">
ERROR: Start time must come before end time.
</p>
</div>
<div class="clear"></div>
</div>
Expand Down
20 changes: 10 additions & 10 deletions Source/Widgets/Timeline.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
/*global define*/
define(['./TimelineTrack',
define([
'./TimelineTrack',
'./TimelineHighlightRange',
'../Core/DeveloperError',
'../Core/Clock',
'../Core/ClockRange',
'../Core/JulianDate'
], function (
], function (
TimelineTrack,
TimelineHighlightRange,
DeveloperError,
Clock,
ClockRange,
JulianDate) {
"use strict";
"use strict";

var timelineWheelDelta = 1e12;

Expand Down Expand Up @@ -153,14 +156,11 @@ define(['./TimelineTrack',

Timeline.prototype.zoomTo = function(startJulianDate, endJulianDate) {
this._timeBarSecondsSpan = startJulianDate.getSecondsDifference(endJulianDate);
if (this._timeBarSecondsSpan >= 0) {
this._startJulian = startJulianDate;
this._endJulian = endJulianDate;
} else {
this._timeBarSecondsSpan = -this._timeBarSecondsSpan;
this._startJulian = endJulianDate;
this._endJulian = startJulianDate;
if (this._timeBarSecondsSpan <= 0) {
throw new DeveloperError('Start time must come before end time.');
}
this._startJulian = startJulianDate;
this._endJulian = endJulianDate;

// If clock is not unbounded, clamp timeline range to clock.
if (this._clock && (this._clock.clockRange !== ClockRange.UNBOUNDED)) {
Expand Down

0 comments on commit 47af737

Please sign in to comment.