From 5aa93ba50c61258b294cceff3ca37450c2b26f75 Mon Sep 17 00:00:00 2001 From: DJ Date: Sun, 9 Apr 2017 18:40:22 -0500 Subject: [PATCH] [Timer] Back-end code cleanup and removed unused code Cleaned up code by removing unused and unneeded code and the tests associated with it --- .../clock/src/actions/AbstractTimerAction.js | 74 ------------------ .../clock/src/actions/PauseTimerAction.js | 11 +-- .../clock/src/actions/RestartTimerAction.js | 11 +-- .../clock/src/actions/StartTimerAction.js | 38 ++++++++-- .../clock/src/actions/StopTimerAction.js | 11 +-- .../clock/src/controllers/TimerController.js | 32 -------- .../test/actions/AbstractTimerActionSpec.js | 75 ------------------- .../test/controllers/TimerControllerSpec.js | 13 ---- 8 files changed, 43 insertions(+), 222 deletions(-) delete mode 100644 platform/features/clock/src/actions/AbstractTimerAction.js delete mode 100644 platform/features/clock/test/actions/AbstractTimerActionSpec.js diff --git a/platform/features/clock/src/actions/AbstractTimerAction.js b/platform/features/clock/src/actions/AbstractTimerAction.js deleted file mode 100644 index 8ebfcd0aa6..0000000000 --- a/platform/features/clock/src/actions/AbstractTimerAction.js +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************************** - * 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 () { - - /** - * Implements the "Start" and "Restart" action for timers. - * - * Sets the reference timestamp in a timer to the current - * time, such that it begins counting up. - * - * @implements {Action} - * @memberof platform/features/clock - * @constructor - * @param {Function} now a function which returns the current - * time (typically wrapping `Date.now`) - * @param {ActionContext} context the context for this action - */ - function AbstractTimerAction(now, context) { - this.domainObject = context.domainObject; - this.now = now; - } - - AbstractTimerAction.prototype.perform = function () { - var domainObject = this.domainObject, - now = this.now; - - function setTimestamp(model) { - //if we are resuming - if (model.pausedTime) { - var timeShift = now() - model.pausedTime; - model.timestamp = model.timestamp + timeShift; - } else { - model.timestamp = now(); - } - } - - function setTimerState(model) { - model.timerState = 'started'; - } - - function setPausedTime(model) { - model.pausedTime = undefined; - } - - return domainObject.useCapability('mutation', setTimestamp) && - domainObject.useCapability('mutation', setTimerState) && - domainObject.useCapability('mutation', setPausedTime); - }; - - return AbstractTimerAction; - } -); diff --git a/platform/features/clock/src/actions/PauseTimerAction.js b/platform/features/clock/src/actions/PauseTimerAction.js index 5156c08a13..0d94e07a21 100644 --- a/platform/features/clock/src/actions/PauseTimerAction.js +++ b/platform/features/clock/src/actions/PauseTimerAction.js @@ -21,8 +21,8 @@ *****************************************************************************/ define( - ['./AbstractTimerAction'], - function (AbstractTimerAction) { + [], + function () { /** * Implements the "Pause" action for timers. @@ -30,7 +30,6 @@ define( * Sets the reference pausedTime in a timer to the current * time, such that it stops counting up. * - * @extends {platform/features/clock.AbstractTimerAction} * @implements {Action} * @memberof platform/features/clock * @constructor @@ -39,12 +38,10 @@ define( * @param {ActionContext} context the context for this action */ function PauseTimerAction(now, context) { - AbstractTimerAction.apply(this, [now, context]); + this.domainObject = context.domainObject; + this.now = now; } - PauseTimerAction.prototype = - Object.create(AbstractTimerAction.prototype); - PauseTimerAction.appliesTo = function (context) { var model = (context.domainObject && context.domainObject.getModel()) || diff --git a/platform/features/clock/src/actions/RestartTimerAction.js b/platform/features/clock/src/actions/RestartTimerAction.js index 27032ce22a..4197b0c082 100644 --- a/platform/features/clock/src/actions/RestartTimerAction.js +++ b/platform/features/clock/src/actions/RestartTimerAction.js @@ -21,8 +21,8 @@ *****************************************************************************/ define( - ['./AbstractTimerAction'], - function (AbstractTimerAction) { + [], + function () { /** * Implements the "Restart at 0" action. @@ -30,7 +30,6 @@ define( * Behaves the same as (and delegates functionality to) * the "Start" action. * - * @extends {platform/features/clock.AbstractTimerAction} * @implements {Action} * @memberof platform/features/clock * @constructor @@ -39,12 +38,10 @@ define( * @param {ActionContext} context the context for this action */ function RestartTimerAction(now, context) { - AbstractTimerAction.apply(this, [now, context]); + this.domainObject = context.domainObject; + this.now = now; } - RestartTimerAction.prototype = - Object.create(AbstractTimerAction.prototype); - RestartTimerAction.appliesTo = function (context) { var model = (context.domainObject && context.domainObject.getModel()) || diff --git a/platform/features/clock/src/actions/StartTimerAction.js b/platform/features/clock/src/actions/StartTimerAction.js index 5b7211666a..c1b49c805b 100644 --- a/platform/features/clock/src/actions/StartTimerAction.js +++ b/platform/features/clock/src/actions/StartTimerAction.js @@ -21,8 +21,8 @@ *****************************************************************************/ define( - ['./AbstractTimerAction'], - function (AbstractTimerAction) { + [], + function () { /** * Implements the "Start" action for timers. @@ -30,7 +30,6 @@ define( * Sets the reference timestamp in a timer to the current * time, such that it begins counting up. * - * @extends {platform/features/clock.AbstractTimerAction} * @implements {Action} * @memberof platform/features/clock * @constructor @@ -39,12 +38,10 @@ define( * @param {ActionContext} context the context for this action */ function StartTimerAction(now, context) { - AbstractTimerAction.apply(this, [now, context]); + this.domainObject = context.domainObject; + this.now = now; } - StartTimerAction.prototype = - Object.create(AbstractTimerAction.prototype); - StartTimerAction.appliesTo = function (context) { var model = (context.domainObject && context.domainObject.getModel()) || @@ -56,6 +53,33 @@ define( model.timerState !== 'started'; }; + StartTimerAction.prototype.perform = function () { + var domainObject = this.domainObject, + now = this.now; + + function setTimestamp(model) { + //if we are resuming + if (model.pausedTime) { + var timeShift = now() - model.pausedTime; + model.timestamp = model.timestamp + timeShift; + } else { + model.timestamp = now(); + } + } + + function setTimerState(model) { + model.timerState = 'started'; + } + + function setPausedTime(model) { + model.pausedTime = undefined; + } + + return domainObject.useCapability('mutation', setTimestamp) && + domainObject.useCapability('mutation', setTimerState) && + domainObject.useCapability('mutation', setPausedTime); + }; + return StartTimerAction; } ); diff --git a/platform/features/clock/src/actions/StopTimerAction.js b/platform/features/clock/src/actions/StopTimerAction.js index 88a213b934..f91fcde7bf 100644 --- a/platform/features/clock/src/actions/StopTimerAction.js +++ b/platform/features/clock/src/actions/StopTimerAction.js @@ -21,8 +21,8 @@ *****************************************************************************/ define( - ['./AbstractTimerAction'], - function (AbstractTimerAction) { + [], + function () { /** * Implements the "Stop" action for timers. @@ -30,7 +30,6 @@ define( * Sets the reference timestamp in a timer undefined, * such that it is reset and makes no movements. * - * @extends {platform/features/clock.AbstractTimerAction} * @implements {Action} * @memberof platform/features/clock * @constructor @@ -39,12 +38,10 @@ define( * @param {ActionContext} context the context for this action */ function StopTimerAction(now, context) { - AbstractTimerAction.apply(this, [now, context]); + this.domainObject = context.domainObject; + this.now = now; } - StopTimerAction.prototype = - Object.create(AbstractTimerAction.prototype); - StopTimerAction.appliesTo = function (context) { var model = (context.domainObject && context.domainObject.getModel()) || diff --git a/platform/features/clock/src/controllers/TimerController.js b/platform/features/clock/src/controllers/TimerController.js index 974c4eade7..b4cd63c0ba 100644 --- a/platform/features/clock/src/controllers/TimerController.js +++ b/platform/features/clock/src/controllers/TimerController.js @@ -52,12 +52,9 @@ define( self.textValue = formatter(timeDelta); self.signValue = timeDelta < 0 ? "-" : timeDelta >= 1000 ? "+" : ""; - self.signCssClass = timeDelta < 0 ? "icon-minus" : - timeDelta >= 1000 ? "icon-plus" : ""; } else { self.textValue = ""; self.signValue = ""; - self.signCssClass = ""; } } @@ -199,26 +196,6 @@ define( } }; - /** - * Get the CSS class to display the stop button - * @returns {string} cssclass to display - */ - TimerController.prototype.stopButtonCssClass = function () { - return this.stopAction ? - this.stopAction.getMetadata().cssclass : ''; - }; - - /** - * Get the text to show the stop button - * (e.g. in a tooltip) - * @returns {string} name of the action - */ - TimerController.prototype.stopButtonText = function () { - return this.stopAction ? - this.stopAction.getMetadata().name : ''; - }; - - /** * Perform the action associated with the stop button. */ @@ -238,15 +215,6 @@ define( return this.signValue; }; - /** - * Get the sign (+ or -) of the current timer value, as - * a CSS class. - * @returns {string} sign of the current timer value - */ - TimerController.prototype.signClass = function () { - return this.signCssClass; - }; - /** * Get the text to display for the current timer value. * @returns {string} current timer value diff --git a/platform/features/clock/test/actions/AbstractTimerActionSpec.js b/platform/features/clock/test/actions/AbstractTimerActionSpec.js deleted file mode 100644 index 74d8763ced..0000000000 --- a/platform/features/clock/test/actions/AbstractTimerActionSpec.js +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************************** - * 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( - ["../../src/actions/AbstractTimerAction"], - function (AbstractTimerAction) { - - describe("A timer's start/restart action", function () { - var mockNow, - mockDomainObject, - testModel, - action; - - function asPromise(value) { - return (value || {}).then ? value : { - then: function (callback) { - return asPromise(callback(value)); - } - }; - } - - beforeEach(function () { - mockNow = jasmine.createSpy('now'); - mockDomainObject = jasmine.createSpyObj( - 'domainObject', - ['getCapability', 'useCapability'] - ); - - mockDomainObject.useCapability.andCallFake(function (c, v) { - if (c === 'mutation') { - testModel = v(testModel) || testModel; - return asPromise(true); - } - }); - - testModel = {}; - - action = new AbstractTimerAction(mockNow, { - domainObject: mockDomainObject - }); - }); - - it("updates the model with a timestamp", function () { - mockNow.andReturn(12000); - action.perform(); - expect(testModel.timestamp).toEqual(12000); - }); - - it("does not truncate milliseconds", function () { - mockNow.andReturn(42321); - action.perform(); - expect(testModel.timestamp).toEqual(42321); - }); - }); - } -); diff --git a/platform/features/clock/test/controllers/TimerControllerSpec.js b/platform/features/clock/test/controllers/TimerControllerSpec.js index 486f158111..b912dc8921 100644 --- a/platform/features/clock/test/controllers/TimerControllerSpec.js +++ b/platform/features/clock/test/controllers/TimerControllerSpec.js @@ -127,7 +127,6 @@ define( mockWindow.requestAnimationFrame.mostRecentCall.args[0](); expect(controller.sign()).toEqual(""); expect(controller.text()).toEqual(""); - expect(controller.stopButtonText()).toEqual(""); }); it("formats time to display relative to target", function () { @@ -164,18 +163,6 @@ define( expect(controller.buttonText()).toEqual("Pause"); }); - it("shows cssclass & name for the stop action", function () { - invokeWatch('domainObject', mockDomainObject); - expect(controller.stopButtonCssClass()).toEqual(""); - expect(controller.stopButtonText()).toEqual(""); - - testModel.timestamp = 12321; - testModel.timerState = 'started'; - invokeWatch('model.modified', 1); - expect(controller.stopButtonCssClass()).toEqual("icon-box"); - expect(controller.stopButtonText()).toEqual("Stop"); - }); - it("performs correct start/pause/stop action on click", function () { //test start invokeWatch('domainObject', mockDomainObject);