From 681cd0bb9cb561fdc0e244e8f94729731be6b968 Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Thu, 3 Sep 2015 14:53:23 -0700 Subject: [PATCH] [Time Controller] Add conductor service WTD-1515. --- .../conductor/src/ConductorService.js | 46 ++++++++++++++ .../src/ConductorTelemetryCapability.js | 10 +-- .../features/conductor/src/TimeConductor.js | 63 +++++++++++++++++++ 3 files changed, 114 insertions(+), 5 deletions(-) create mode 100644 platform/features/conductor/src/ConductorService.js create mode 100644 platform/features/conductor/src/TimeConductor.js diff --git a/platform/features/conductor/src/ConductorService.js b/platform/features/conductor/src/ConductorService.js new file mode 100644 index 0000000000..c40838ff53 --- /dev/null +++ b/platform/features/conductor/src/ConductorService.js @@ -0,0 +1,46 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web 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 Web 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. + *****************************************************************************/ +/*global define*/ + +define( + ['./TimeConductor'], + function (TimeConductor) { + 'use strict'; + + var ONE_DAY_IN_MS = 1000 * 60 * 60 * 24, + SIX_HOURS_IN_MS = ONE_DAY_IN_MS / 4; + + function ConductorService(now) { + var initialEnd = + Math.ceil(now() / SIX_HOURS_IN_MS) * SIX_HOURS_IN_MS; + + this.conductor = + new TimeConductor(initialEnd - ONE_DAY_IN_MS, initialEnd); + } + + ConductorService.prototype.getConductor = function () { + return this.conductor; + }; + + return ConductorService; + } +); diff --git a/platform/features/conductor/src/ConductorTelemetryCapability.js b/platform/features/conductor/src/ConductorTelemetryCapability.js index ea10bddb15..f1269a36e7 100644 --- a/platform/features/conductor/src/ConductorTelemetryCapability.js +++ b/platform/features/conductor/src/ConductorTelemetryCapability.js @@ -31,20 +31,20 @@ define( } ConductorTelemetryCapability.prototype.getMetadata = function () { - return this.wrappedCapability.getMetadata; + return this.wrappedCapability.getMetadata(); }; ConductorTelemetryCapability.prototype.requestData = function (request) { request = request || {}; - request.start = this.timeConductor.getStart(); - request.end = this.timeConductor.getEnd(); + request.start = this.timeConductor.queryStart(); + request.end = this.timeConductor.queryEnd(); return this.wrappedCapability.requestData(request); }; ConductorTelemetryCapability.prototype.subscribe = function (callback, request) { request = request || {}; - request.start = this.timeConductor.getStart(); - request.end = this.timeConductor.getEnd(); + request.start = this.timeConductor.queryStart(); + request.end = this.timeConductor.queryEnd(); return this.wrappedCapability.subscribe(callback, request); }; diff --git a/platform/features/conductor/src/TimeConductor.js b/platform/features/conductor/src/TimeConductor.js new file mode 100644 index 0000000000..d4eefeffd8 --- /dev/null +++ b/platform/features/conductor/src/TimeConductor.js @@ -0,0 +1,63 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web 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 Web 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. + *****************************************************************************/ +/*global define*/ + +define( + function () { + 'use strict'; + + function TimeConductor(start, end) { + this.inner = [ start, end ]; + this.outer = [ start, end ]; + } + + TimeConductor.prototype.queryStart = function (value) { + if (arguments.length > 0) { + this.outer[0] = value; + } + return this.outer[0]; + }; + + TimeConductor.prototype.queryEnd = function (value) { + if (arguments.length > 0) { + this.outer[1] = value; + } + return this.outer[1]; + }; + + TimeConductor.prototype.displayStart = function (value) { + if (arguments.length > 0) { + this.inner[0] = value; + } + return this.inner[0]; + }; + + TimeConductor.prototype.displayEnd = function (value) { + if (arguments.length > 0) { + this.inner[1] = value; + } + return this.inner[1]; + }; + + return TimeConductor; + } +);