[Timer] Back-end code cleanup and removed unused code

Cleaned up code by removing unused and unneeded code and the tests associated with it
This commit is contained in:
DJ 2017-04-09 18:40:22 -05:00
parent 26db493b0d
commit 5aa93ba50c
8 changed files with 43 additions and 222 deletions

View File

@ -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;
}
);

View File

@ -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()) ||

View File

@ -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()) ||

View File

@ -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;
}
);

View File

@ -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()) ||

View File

@ -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

View File

@ -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);
});
});
}
);

View File

@ -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);