[Timers] Follow timers from timelines (#1694)
* Squashed commit of the following: commit f1dc1ce152e186da0d10c8e77d920ac0a76c9bc2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:35:38 2017 -0700 [Timers] Rewrite JSDoc for FollowTimerAction https://github.com/nasa/openmct/pull/1694/files#r137604769 commit 7ab0693cc983f8a04ac8ee9002f4d776b06a869a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:27:53 2017 -0700 [Timer] Expect domain objects from FollowIndicator test commit ff89c0849d16ab451bfd2fddd9202cf36940f599 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:26:28 2017 -0700 [Timer] Add JSDoc for new method commit 2a0343352eca241dfc28a4aa0b3832e3e6928864 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:24:59 2017 -0700 [Timeline] Update TOI tests ...to account for refactoring out of tick handling. commit 01cbaafc72870fab4ada5894637ae5721214933d Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:17:25 2017 -0700 [Timeline] Update dependencies for TOI test commit 6bd5c378566362dce331e7c200dea87f0b08ecc6 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:15:21 2017 -0700 [Timers] Update timerService tests with dependencies commit b0793865c5131e17a58786ec356d67f2f2bba4c5 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:09:54 2017 -0700 [Timers] Declare vars to satisfy JSHint commit 9d2a63f7fe61dadf68255d795512ec55f532c533 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:07:12 2017 -0700 [Timeline] Handle stopped timer commit 30871270514730f3f2f12482075e5140bb97fa1f Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:59:08 2017 -0700 [Timer] Tweak refactored timer logic commit 53ad127ba7cf679377dc865301612a1d78399324 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:53:36 2017 -0700 [Timer] Convert times from timerService ...to reduce resposibilities for TOI controller. commit f8341133cf23df383b8f6e4815b88e0066ebd2bc Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:03:37 2017 -0700 [Timeline] Factor out timer knowledge commit aebd9e0ac223971b868b03343dbe4c61c6eb4849 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:34:58 2017 -0700 [Timeline] Consistently use this commit 48ac427a20c5c343aecdbd54b068d8691f7830b6 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:33:57 2017 -0700 [Timeline] Remove unused tick binding/call commit ea62f0a15ba4ab5de53213bbed14599eaf878d70 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:10:59 2017 -0700 [Timeline] Retrieve timestamp on demand commit f53bd04b5e343b22ea52b431785ade891577bb6a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:07:55 2017 -0700 [Timeline] Update clocks on bounds events https://github.com/nasa/openmct/pull/1694/files#r137603081 commit 51d8e376ee46aafa13cd9a969c6f03885e10dafb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:40:33 2017 -0700 [Timeline] Don't listen for non-existing tick events commit 5cc40c488cec5e7453c2fe1dea5e5a4fa3509ecd Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:39:21 2017 -0700 [Time] Revert Time API changes https://github.com/nasa/openmct/pull/1694/files#r137603081 commit c55c8bc627bf0a7f3cfd04b604b82d15ff469ab9 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:37:40 2017 -0700 [Timeline] Finish testing TOI controller commit af5cea5f2f172a309568d477dfdf11b8d45e74bb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:06:47 2017 -0700 [Timeline] Test TOI controller commit ba64db68b132fa431e8ccdb533024bf2850f9712 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 10:06:41 2017 -0700 [Timers] Test timerService commit 247e663b326ec5b8145b832af9b26086204baea3 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 10:05:24 2017 -0700 [Timers] Remove unused timerService method commit 8d741ad5744e1b7deb669dbaa0f3d30e4eb5866e Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:59:32 2017 -0700 [Timers] Remove unused timerService dependency commit b59c8917bdef5ec3e54c8857d993d86547cfe177 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:58:10 2017 -0700 [Timers] Remove unused timerService event commit f15dd9827f835a814dc40a6201c90268a60ed64a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:49:09 2017 -0700 [Timers] Test timer-following indicator commit 2501f11af8c0b2aed9ebf16ffd28c0003b2701c2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:42:54 2017 -0700 [Timer] Complete test coverage for FollowTimerAction commit aa2be83fc15cd68ee6de4d9f8205dc2fcba8c35b Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:35:37 2017 -0700 [Timers] Begin testing Follow Timer action commit d9062e0b0ff351b141dcb646972053ec72292d53 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:45:18 2017 -0700 [Timeline] Remove unused variables commit 79ebe4dd2b2aefc1e83ea8142588ed0715b3c269 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:39:22 2017 -0700 [Timeline] JSDoc for TOI controller commit 330f6b465188555e8e59f4eaf8ce1875b5335846 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:30:58 2017 -0700 [Timeline] Use different icon to follow time bounds commit f0a3b628e6d1d843324085edd563b68997f5a215 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:30:46 2017 -0700 [Timeline] Simplify TOI following initialization commit e76f3d1d525e0d19845b4c5b457995e60c416ad0 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:27:07 2017 -0700 [Timeline] Add toggle to follow time bounds commit 8ec072c0a2a953c074e0c327430dd68f27894ffb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:19:25 2017 -0700 [Timeline] Follow TC bounds based on boolean commit 206a26734dedc267af6d298a77658aa261ca4fea Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:37:12 2017 -0700 [Timeline] Tune bounds following commit 19563bdf53a036c7bf09c52924425a1902b243bb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:19:19 2017 -0700 [Timeline] Remove unused method commit 293981ec55ad115d7bd90b92f5bd090df64bd7c2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:18:59 2017 -0700 [Timeline] Only update timestamp on tick Leave bounds-following to the bounds event commit 9180e15971d2043f0999a16f0aa8794273bcfc74 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:43:01 2017 -0700 [Time] Document tick event commit c7b163dff0d94aaea86b76647501f21623b353e1 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:39:57 2017 -0700 [Timeline] Stop listening on destroy ...from the TOI controller. commit ca7def3cf98e1eaf6c3aeb16cf9fd79452c86bd0 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:32:40 2017 -0700 [Timeline] Remove surplus watches commit 367e7afa94ae1ed448e39f13be804c62e2bfcf00 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:30:14 2017 -0700 [Timeline] Very deltas are valid before panning commit 7ee94f316e90d046015266a2a9168e349ff73345 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:28:10 2017 -0700 [Timeline] Scroll with TOI only while in view commit 9d7bb431119b7bc6ddc86f0058718e4385478518 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:36:46 2017 -0700 [Timeline] Utilize zoomController.bounds commit f151b9e8adfd235c31e32bef5fddab835efa7c8f Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:35:57 2017 -0700 [Timeline] Add methods to set zoom bounds commit c3d0b9876ab79c18003838ed3315045c5fb2ddbb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:32:08 2017 -0700 [Timelines] Observe bounds changes ...to synchronize zoom with Time Conductor, #1688 commit 58adafc46f231b0fd92827d10c377131166ff39c Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:37:07 2017 -0700 [Timers] JSDoc for TimerService commit a325a8d5085bf1a4c9aa3ab20771308d4789765a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:12:50 2017 -0700 [Timeline] Re-tweak follow scroll calculations ...for visibility. commit 41e4bf153607b081aaf92253fa2b21300e2f0ea7 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:03:45 2017 -0700 [Timeline] Tweak follow scroll calculations ...for visibility. commit 08a5b9f14ab629a310dc27a3771ca454f1187327 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:59:45 2017 -0700 [Timeline] Replace debug output with scroll updates commit 26585ecd61341b4ee89abd8ee866e705a02bbc9a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:59:07 2017 -0700 [Timeline] Move TOI to scrollable area commit 654eda027c3c67a3a0ff33136109ca27d14762ba Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:56:07 2017 -0700 [Timeline] Begin implementing TOI following commit 552f67a11ce439be58ab7ca7884c46241a25adee Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:55:51 2017 -0700 [Timeline] At zoom-to-time method For use by time-of-interest controller, #1688 commit 37acbfd458740b2c3176875f83d37f0fdf57e727 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:46:33 2017 -0700 [Timeline] Remove other excess $apply calls ...although this should make us nervy about those callbacks being invoked in different ways. commit 0e72847c9ba59f957efa2d412cb77c024afa9e63 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:44:27 2017 -0700 [Timeline] Remove $apply from $watch callback ...to avoid an infinite digest loop. commit bade0fd9f60101d5b1b782cd28e608af493c9076 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:42:18 2017 -0700 [Timeline] Begin adding TOI line to template commit f94034a3b4136f6b174155397084f8cdb22ce544 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:11:25 2017 -0700 [Timers] Add missing semicolon, satisfy JSHint commit cb465b94011e7432cc7e4d9e815641f97dc61d7a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:08:45 2017 -0700 [Time] Verify that tick event is emitted commit 7c84a86a33ceb73ba6a06801374ea3f89793c450 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 11:59:06 2017 -0700 [Time] Emit tick events from Time API https://github.com/nasa/openmct/pull/1694 commit d319a783fcd882c03eb7d9a81fec33898016384e Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 11:56:28 2017 -0700 [Timeline] Sketch in TOI controller ...to position/follow time-of-interest, relative to the active timer. commit 2dbdb2627450039d69dbfd10eed2c100207e061a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:57:47 2017 -0700 [Timers] Use timerService ...to coordinate between action and indicator commit f94a2358eaf0366bd4da2b44e69ccb62b153c5db Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:52:22 2017 -0700 [Timers] Use TimerService from Follow Timer action commit a720c2ec2cda4a300d26167f4717f0571bedcbfd Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:50:31 2017 -0700 [Timers] Expose TimerService through bundle commit e32bbc3e232d25f7c5dba98674781e4f263c4870 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:49:03 2017 -0700 [Timers] Sketch in timer service ...which will keep track of the active timer used to interpret SET for Timelines. commit a038c2b1d8fd34c2874fa8fc0421fa7ba53e11ab Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:41:05 2017 -0700 [Timers] Register indicator commit 0e93ae87a1cccc4f3a0636844625b64ccb77a7ae Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:39:21 2017 -0700 [Timers] Skeleton for time following indicator commit e806386891639740e9fe3d8641c2f60ab5a88eac Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 09:37:14 2017 -0700 [Timers] Register the Follow Timer action commit 008aa95932070459dcc6fa1d918a23dac8df7592 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 09:35:08 2017 -0700 [Timers] Skeleton for Follow Timer action ...to synchronize the time conductor with a particular Timer. #1688 * [Timers] Remove unused variable to pass lint checks * [Timers] Frontend updates for time-of-interest Squashed commit of the following: commit370b910d36Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Sep 20 10:59:00 2017 -0700 [Frontend] Fix in FollowIndicator.js Fixes #1688 commit883d1feb32Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Sep 20 10:36:56 2017 -0700 [Frontend] Styling and content on Follow indicator Fixes #1688 commitcff85fbbdeAuthor: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Sep 20 10:09:19 2017 -0700 [Frontend] Styling complete on Follow Line Fixes #1688 commit563a86b69fAuthor: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Sep 18 16:05:53 2017 -0700 [Front-end] WIP Markup and CSS for Follow Line Fixes #1688 Added line icon, style refinement; commitfc49e5d023Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov> Date: Mon Sep 18 15:07:35 2017 -0700 [Front-end] WIP Markup and CSS for Follow Line Fixes #1688 Moved TimelineTOIController up 2 levels of markup hierarchy to allow Follow Lines, one in each split pane; Follow LInes markup and CSS in progress; commit8ec3c42291Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Wed Sep 13 16:46:14 2017 -0700 [Frontend] WIP Timeline Follow Line Fixes #1688 VERY WIP! Initial move of styles into classes; * [Timeline] Follow up on front-end updates Fixes #1688 Squashed commit of the following: commit 817c7f31289b3e7631c3332d2192a68f21f50f9e Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 21 12:47:48 2017 -0700 [Timeline] Initialize lastWidth ...to avoid clamping values before a width has actually been observed. commit 5f7324c1cdb0cbef6385fbccac31b0404d216f95 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 21 12:21:11 2017 -0700 [Timeline] Clamp right edge of zoom ...to avoid getting stuck in a weird scrolling state for large timer values. commit 076aca112392e65835e7a01ac8e28780d24bfff1 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 21 12:02:23 2017 -0700 [Timeline] Don't set scroll.x to negative values ...avoids mispositioning timer-following line, https://github.com/nasa/openmct/issues/1688#issuecomment-330373625 commit ac9bdb919df69fac65b297487131e2c41204ebeb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 21 11:32:49 2017 -0700 [Timers] Loosen test expectation Resolves build failure https://circleci.com/gh/nasa/openmct/4181 by reducing test specificity for indicator display name. * [Timer] Handle mutations to followed timers Fixes #1741 Squashed commit of the following: commit 5fdd156dc9089baac2e975a85373146e0b788731 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Oct 5 12:18:06 2017 -0700 [Timer] Test mutation observation ...to verify resolution of root cause for #1741 commit 348b193fd45fc457d4b56bc1ddb2249aab65afba Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Oct 5 12:15:05 2017 -0700 [Timers] Update expected API usage in Follow Timer test commit 7a584dd993d68c4c50a99ac66976420b5931893c Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Oct 5 12:12:11 2017 -0700 [Timers] Update spec for timerService ...to account for use of openmct.objects commit ad396a79f0bad9dfc5382745943dd34ddcee1bef Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Oct 5 12:10:25 2017 -0700 [Timer] Observe timer mutations ...such that followed timer remains in sync with timer model, e.g. during navigation. Fixes #1741
This commit is contained in:
committed by
Pete Richards
parent
07d9769966
commit
77c7bdfdec
@@ -0,0 +1,111 @@
|
||||
/*****************************************************************************
|
||||
* Open MCT, Copyright (c) 2009-2016, United States Government
|
||||
* as represented by the Administrator of the National Aeronautics and Space
|
||||
* Administration. All rights reserved.
|
||||
*
|
||||
* Open MCT is licensed under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/LICENSE-2.0.
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
* License for the specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*
|
||||
* Open MCT includes source code licensed under additional open source
|
||||
* licenses. See the Open Source Licenses file (LICENSES.md) included with
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
|
||||
define([], function () {
|
||||
|
||||
/**
|
||||
* Tracks time-of-interest in timelines, updating both scroll state
|
||||
* (when appropriate) and positioning of the displayed line.
|
||||
*/
|
||||
function TimelineTOIController(openmct, timerService, $scope) {
|
||||
this.openmct = openmct;
|
||||
this.timerService = timerService;
|
||||
this.$scope = $scope;
|
||||
|
||||
this.change = this.change.bind(this);
|
||||
this.bounds = this.bounds.bind(this);
|
||||
this.destroy = this.destroy.bind(this);
|
||||
|
||||
this.timerService.on('change', this.change);
|
||||
this.openmct.time.on('bounds', this.bounds);
|
||||
|
||||
this.$scope.$on('$destroy', this.destroy);
|
||||
|
||||
this.$scope.scroll.follow = this.timerService.hasTimer();
|
||||
if (this.$scope.zoomController) {
|
||||
this.bounds(this.openmct.time.bounds());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle a `change` event from the timer service; track the
|
||||
* new timer.
|
||||
*/
|
||||
TimelineTOIController.prototype.change = function () {
|
||||
this.$scope.scroll.follow =
|
||||
this.$scope.scroll.follow || this.timerService.hasTimer();
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle a `bounds` event from the time API; scroll the timeline
|
||||
* to match the current bounds, if currently in follow mode.
|
||||
*/
|
||||
TimelineTOIController.prototype.bounds = function (bounds) {
|
||||
if (this.isFollowing()) {
|
||||
var start = this.timerService.convert(bounds.start);
|
||||
var end = this.timerService.convert(bounds.end);
|
||||
this.duration = bounds.end - bounds.start;
|
||||
this.$scope.zoomController.bounds(start, end);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle a `$destroy` event from scope; detach all observers.
|
||||
*/
|
||||
TimelineTOIController.prototype.destroy = function () {
|
||||
this.timerService.off('change', this.change);
|
||||
this.openmct.time.off('bounds', this.bounds);
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the x position of the time-of-interest line,
|
||||
* in pixels from the left edge of the timeline area.
|
||||
*/
|
||||
TimelineTOIController.prototype.x = function () {
|
||||
var now = this.timerService.now();
|
||||
|
||||
if (now === undefined) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return this.$scope.zoomController.toPixels(this.timerService.now());
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if there is an active time-of-interest to be shown.
|
||||
* @return {boolean} true when active
|
||||
*/
|
||||
TimelineTOIController.prototype.isActive = function () {
|
||||
return this.x() !== undefined;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if the timeline should be following time conductor bounds.
|
||||
* @return {boolean} true when following
|
||||
*/
|
||||
TimelineTOIController.prototype.isFollowing = function () {
|
||||
return !!this.$scope.scroll.follow && this.timerService.now() !== undefined;
|
||||
};
|
||||
|
||||
return TimelineTOIController;
|
||||
});
|
||||
@@ -32,7 +32,8 @@ define(
|
||||
// Prefer to start with the middle index
|
||||
var zoomLevels = ZOOM_CONFIGURATION.levels || [1000],
|
||||
zoomIndex = Math.floor(zoomLevels.length / 2),
|
||||
tickWidth = ZOOM_CONFIGURATION.width || 200;
|
||||
tickWidth = ZOOM_CONFIGURATION.width || 200,
|
||||
lastWidth = Number.MAX_VALUE; // Don't constrain prematurely
|
||||
|
||||
function toMillis(pixels) {
|
||||
return (pixels / tickWidth) * zoomLevels[zoomIndex];
|
||||
@@ -55,19 +56,29 @@ define(
|
||||
|
||||
function setScroll(x) {
|
||||
$window.requestAnimationFrame(function () {
|
||||
$scope.scroll.x = x;
|
||||
$scope.scroll.x = Math.min(
|
||||
Math.max(x, 0),
|
||||
lastWidth - $scope.scroll.width
|
||||
);
|
||||
$scope.$apply();
|
||||
});
|
||||
}
|
||||
|
||||
function initializeZoomFromTimespan(timespan) {
|
||||
var timelineDuration = timespan.getDuration();
|
||||
function initializeZoomFromStartEnd(start, end) {
|
||||
var duration = end - start;
|
||||
zoomIndex = 0;
|
||||
while (toMillis($scope.scroll.width) < timelineDuration &&
|
||||
while (toMillis($scope.scroll.width) < duration &&
|
||||
zoomIndex < zoomLevels.length - 1) {
|
||||
zoomIndex += 1;
|
||||
}
|
||||
setScroll(toPixels(timespan.getStart()));
|
||||
setScroll(toPixels(start));
|
||||
}
|
||||
|
||||
function initializeZoomFromTimespan(timespan) {
|
||||
return initializeZoomFromStartEnd(
|
||||
timespan.getStart(),
|
||||
timespan.getEnd()
|
||||
);
|
||||
}
|
||||
|
||||
function initializeZoom() {
|
||||
@@ -101,6 +112,13 @@ define(
|
||||
}
|
||||
return zoomLevels[zoomIndex];
|
||||
},
|
||||
/**
|
||||
* Adjust the current zoom bounds to fit both the
|
||||
* start and the end time provided.
|
||||
* @param {number} start the starting timestamp
|
||||
* @param {number} end the ending timestamp
|
||||
*/
|
||||
bounds: initializeZoomFromStartEnd,
|
||||
/**
|
||||
* Set the zoom level to fit the bounds of the timeline
|
||||
* being viewed.
|
||||
@@ -119,14 +137,14 @@ define(
|
||||
*/
|
||||
toMillis: toMillis,
|
||||
/**
|
||||
* Get the pixel width necessary to fit the specified
|
||||
* timestamp, expressed as an offset in milliseconds from
|
||||
* the start of the timeline.
|
||||
* Set the maximum timestamp value to be displayed, and get
|
||||
* the pixel width necessary to display this value.
|
||||
* @param {number} timestamp the time to display
|
||||
*/
|
||||
width: function (timestamp) {
|
||||
var pixels = Math.ceil(toPixels(timestamp * (1 + PADDING)));
|
||||
return Math.max($scope.scroll.width, pixels);
|
||||
lastWidth = Math.max($scope.scroll.width, pixels);
|
||||
return lastWidth;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user