From 482fcbf6eeea3b72f26bff74a5697a5089abb6a1 Mon Sep 17 00:00:00 2001 From: Henry <akhenry@gmail.com> Date: Mon, 1 Aug 2016 15:14:23 -0700 Subject: [PATCH] Refactored bundle --- example/localTimeSystem/bundle.js | 48 ++++++++ .../localTimeSystem/src/LocalTimeFormat.js | 112 ++++++++++++++++++ .../localTimeSystem/src/LocalTimeSystem.js | 76 ++++++++++++ main.js | 8 +- .../compatibility}/bundle.js | 2 +- .../src/ConductorRepresenter.js | 0 .../src/ConductorTelemetryDecorator.js | 0 .../conductor-v2/{ => conductor}/bundle.js | 10 +- .../{ => conductor}/res/sass/_constants.scss | 0 .../res/sass/time-conductor.scss | 14 +-- .../templates/mode-selector/mode-menu.html | 0 .../mode-selector/mode-selector.html | 0 .../res/templates/time-conductor.html | 0 .../{ => conductor}/src/TimeConductor.js | 0 .../{ => conductor}/src/TimeConductorSpec.js | 0 .../src/timeSystems/LocalClock.js | 0 .../src/timeSystems/TickSource.js | 0 .../src/timeSystems/TimeSystem.js | 0 .../src/ui/MctConductorAxis.js | 0 .../src/ui/TimeConductorController.js | 0 .../src/ui/TimeConductorValidation.js | 0 .../{ => conductor}/src/ui/modes/FixedMode.js | 0 .../src/ui/modes/FollowMode.js | 0 .../src/ui/modes/TimeConductorMode.js | 0 .../conductor-v2/utcTimeSystem/bundle.js | 40 +++++++ .../src}/UTCTimeSystem.js | 6 +- 26 files changed, 293 insertions(+), 23 deletions(-) create mode 100644 example/localTimeSystem/bundle.js create mode 100644 example/localTimeSystem/src/LocalTimeFormat.js create mode 100644 example/localTimeSystem/src/LocalTimeSystem.js rename platform/features/{conductor-v2-compatibility => conductor-v2/compatibility}/bundle.js (96%) rename platform/features/{conductor-v2-compatibility => conductor-v2/compatibility}/src/ConductorRepresenter.js (100%) rename platform/features/{conductor-v2-compatibility => conductor-v2/compatibility}/src/ConductorTelemetryDecorator.js (100%) rename platform/features/conductor-v2/{ => conductor}/bundle.js (91%) rename platform/features/conductor-v2/{ => conductor}/res/sass/_constants.scss (100%) rename platform/features/conductor-v2/{ => conductor}/res/sass/time-conductor.scss (96%) rename platform/features/conductor-v2/{ => conductor}/res/templates/mode-selector/mode-menu.html (100%) rename platform/features/conductor-v2/{ => conductor}/res/templates/mode-selector/mode-selector.html (100%) rename platform/features/conductor-v2/{ => conductor}/res/templates/time-conductor.html (100%) rename platform/features/conductor-v2/{ => conductor}/src/TimeConductor.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/TimeConductorSpec.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/timeSystems/LocalClock.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/timeSystems/TickSource.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/timeSystems/TimeSystem.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/MctConductorAxis.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/TimeConductorController.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/TimeConductorValidation.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/modes/FixedMode.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/modes/FollowMode.js (100%) rename platform/features/conductor-v2/{ => conductor}/src/ui/modes/TimeConductorMode.js (100%) create mode 100644 platform/features/conductor-v2/utcTimeSystem/bundle.js rename platform/features/conductor-v2/{src/timeSystems => utcTimeSystem/src}/UTCTimeSystem.js (94%) diff --git a/example/localTimeSystem/bundle.js b/example/localTimeSystem/bundle.js new file mode 100644 index 0000000000..b7cb6f775b --- /dev/null +++ b/example/localTimeSystem/bundle.js @@ -0,0 +1,48 @@ +/***************************************************************************** + * 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. + *****************************************************************************/ + +define([ + "./src/LocalTimeSystem", + "./src/LocalTimeFormat", + 'legacyRegistry' +], function ( + LocalTimeSystem, + LocalTimeFormat, + legacyRegistry +) { + legacyRegistry.register("example/localTimeSystem", { + "extensions": { + "formats": [ + { + "key": "local", + "implementation": LocalTimeFormat + } + ], + "timeSystems": [ + { + "implementation": LocalTimeSystem, + "depends": ["$timeout"] + } + ] + } + }); +}); diff --git a/example/localTimeSystem/src/LocalTimeFormat.js b/example/localTimeSystem/src/LocalTimeFormat.js new file mode 100644 index 0000000000..f0aa91c529 --- /dev/null +++ b/example/localTimeSystem/src/LocalTimeFormat.js @@ -0,0 +1,112 @@ +/***************************************************************************** + * 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. + *****************************************************************************/ + +define([ + 'moment' +], function ( + moment +) { + + var DATE_FORMAT = "YYYY-MM-DD hh:mm:ss.SSS", + DATE_FORMATS = [ + DATE_FORMAT, + "YYYY-MM-DD hh:mm:ss", + "YYYY-MM-DD hh:mm", + "YYYY-MM-DD" + ]; + + /** + * @typedef Scale + * @property {number} min the minimum scale value, in ms + * @property {number} max the maximum scale value, in ms + */ + + /** + * Formatter for UTC timestamps. Interprets numeric values as + * milliseconds since the start of 1970. + * + * @implements {Format} + * @constructor + * @memberof platform/commonUI/formats + */ + function LocalTimeFormat() { + } + + /** + * Returns an appropriate time format based on the provided value and + * the threshold required. + * @private + */ + function getScaledFormat (d) { + var m = moment.utc(d); + /** + * Uses logic from d3 Time-Scales, v3 of the API. See + * https://github.com/d3/d3-3.x-api-reference/blob/master/Time-Scales.md + * + * Licensed + */ + return [ + [".SSS", function(m) { return m.milliseconds(); }], + [":ss", function(m) { return m.seconds(); }], + ["hh:mm", function(m) { return m.minutes(); }], + ["hh", function(m) { return m.hours(); }], + ["ddd DD", function(m) { + return m.days() && + m.date() != 1; + }], + ["MMM DD", function(m) { return m.date() != 1; }], + ["MMMM", function(m) { + return m.month(); + }], + ["YYYY", function() { return true; }] + ].filter(function (row){ + return row[1](m); + })[0][0]; + }; + + /** + * + * @param value + * @param {Scale} [scale] Optionally provides context to the + * format request, allowing for scale-appropriate formatting. + * @returns {string} the formatted date + */ + LocalTimeFormat.prototype.format = function (value, scale) { + if (scale !== undefined){ + var scaledFormat = getScaledFormat(value, scale); + if (scaledFormat) { + return moment.utc(value).format(scaledFormat); + } + } + return moment(value).format(DATE_FORMAT); + }; + + LocalTimeFormat.prototype.parse = function (text) { + return moment(text, DATE_FORMATS).valueOf(); + }; + + LocalTimeFormat.prototype.validate = function (text) { + return moment(text, DATE_FORMATS).isValid(); + }; + + return LocalTimeFormat; +}); diff --git a/example/localTimeSystem/src/LocalTimeSystem.js b/example/localTimeSystem/src/LocalTimeSystem.js new file mode 100644 index 0000000000..376ee8ada3 --- /dev/null +++ b/example/localTimeSystem/src/LocalTimeSystem.js @@ -0,0 +1,76 @@ +/***************************************************************************** + * 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. + *****************************************************************************/ + +define([ + '../../../platform/features/conductor/src/timeSystems/TimeSystem', + '../../platform/features/conductor/src/timeSystems/LocalClock' +], function (TimeSystem, LocalClock) { + var FIFTEEN_MINUTES = 15 * 60 * 1000, + DEFAULT_PERIOD = 1000; + + /** + * This time system supports UTC dates and provides a ticking clock source. + * @implements TimeSystem + * @constructor + */ + function LocalTimeSystem ($timeout) { + TimeSystem.call(this); + + /** + * Some metadata, which will be used to identify the time system in + * the UI + * @type {{key: string, name: string, glyph: string}} + */ + this.metadata = { + 'key': 'local', + 'name': 'Local 12 hour', + 'glyph': '\u0043' + }; + + this._formats = ['utc']; + this._tickSources = [new LocalClock($timeout, DEFAULT_PERIOD)]; + } + + LocalTimeSystem.prototype = Object.create(TimeSystem.prototype); + + LocalTimeSystem.prototype.formats = function () { + return this._formats; + }; + + LocalTimeSystem.prototype.tickSources = function () { + return this._tickSources; + }; + + LocalTimeSystem.prototype.defaults = function () { + var now = Math.ceil(Date.now() / 1000) * 1000; + return [ + { + key: 'local-default', + name: 'Local 12 hour time system defaults', + deltas: {start: FIFTEEN_MINUTES, end: 0}, + bounds: {start: now - FIFTEEN_MINUTES, end: now} + } + ]; + }; + + return LocalTimeSystem; +}); diff --git a/main.js b/main.js index f5f05e95a6..2241b3c3fd 100644 --- a/main.js +++ b/main.js @@ -91,8 +91,9 @@ define([ './platform/features/plot/bundle', './platform/features/timeline/bundle', //'./platform/features/conductor/bundle', - './platform/features/conductor-v2/bundle', - './platform/features/conductor-v2-compatibility/bundle', + './platform/features/conductor-v2/conductor/bundle', + './platform/features/conductor-v2/compatibility/bundle', + './platform/features/conductor-v2/utcTimeSystem/bundle', './platform/features/table/bundle', './platform/forms/bundle', './platform/identity/bundle', @@ -104,7 +105,8 @@ define([ './platform/search/bundle', './platform/status/bundle', './platform/commonUI/regions/bundle', - './example/msl/bundle' + './example/msl/bundle', + './example/localTimeSystem/bundle' ], function (Main, legacyRegistry) { return { legacyRegistry: legacyRegistry, diff --git a/platform/features/conductor-v2-compatibility/bundle.js b/platform/features/conductor-v2/compatibility/bundle.js similarity index 96% rename from platform/features/conductor-v2-compatibility/bundle.js rename to platform/features/conductor-v2/compatibility/bundle.js index 967a189488..d92b81729f 100644 --- a/platform/features/conductor-v2-compatibility/bundle.js +++ b/platform/features/conductor-v2/compatibility/bundle.js @@ -30,7 +30,7 @@ define([ legacyRegistry ) { - legacyRegistry.register("platform/features/conductor-v2-compatibility", { + legacyRegistry.register("platform/features/conductor-v2/compatibility", { "extensions": { "representers": [ { diff --git a/platform/features/conductor-v2-compatibility/src/ConductorRepresenter.js b/platform/features/conductor-v2/compatibility/src/ConductorRepresenter.js similarity index 100% rename from platform/features/conductor-v2-compatibility/src/ConductorRepresenter.js rename to platform/features/conductor-v2/compatibility/src/ConductorRepresenter.js diff --git a/platform/features/conductor-v2-compatibility/src/ConductorTelemetryDecorator.js b/platform/features/conductor-v2/compatibility/src/ConductorTelemetryDecorator.js similarity index 100% rename from platform/features/conductor-v2-compatibility/src/ConductorTelemetryDecorator.js rename to platform/features/conductor-v2/compatibility/src/ConductorTelemetryDecorator.js diff --git a/platform/features/conductor-v2/bundle.js b/platform/features/conductor-v2/conductor/bundle.js similarity index 91% rename from platform/features/conductor-v2/bundle.js rename to platform/features/conductor-v2/conductor/bundle.js index d13f0632e1..3bd6d2b5f6 100644 --- a/platform/features/conductor-v2/bundle.js +++ b/platform/features/conductor-v2/conductor/bundle.js @@ -24,7 +24,6 @@ define([ "./src/TimeConductor", "./src/ui/TimeConductorController", "./src/ui/MCTConductorAxis", - "./src/timeSystems/UTCTimeSystem", "text!./res/templates/time-conductor.html", "text!./res/templates/mode-selector/mode-selector.html", "text!./res/templates/mode-selector/mode-menu.html", @@ -33,14 +32,13 @@ define([ TimeConductor, TimeConductorController, MCTConductorAxis, - UTCTimeSystem, timeConductorTemplate, modeSelectorTemplate, modeMenuTemplate, legacyRegistry ) { - legacyRegistry.register("platform/features/conductor-v2", { + legacyRegistry.register("platform/features/conductor-v2/conductor", { "extensions": { "services": [ { @@ -87,12 +85,6 @@ define([ "key": "mode-menu", "template": modeMenuTemplate } - ], - "timeSystems": [ - { - "implementation": UTCTimeSystem, - "depends": ["$timeout"] - } ] } }); diff --git a/platform/features/conductor-v2/res/sass/_constants.scss b/platform/features/conductor-v2/conductor/res/sass/_constants.scss similarity index 100% rename from platform/features/conductor-v2/res/sass/_constants.scss rename to platform/features/conductor-v2/conductor/res/sass/_constants.scss diff --git a/platform/features/conductor-v2/res/sass/time-conductor.scss b/platform/features/conductor-v2/conductor/res/sass/time-conductor.scss similarity index 96% rename from platform/features/conductor-v2/res/sass/time-conductor.scss rename to platform/features/conductor-v2/conductor/res/sass/time-conductor.scss index ef35bc2ad4..999c3d9e1c 100644 --- a/platform/features/conductor-v2/res/sass/time-conductor.scss +++ b/platform/features/conductor-v2/conductor/res/sass/time-conductor.scss @@ -20,13 +20,13 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ @import "bourbon"; -@import "../../../../commonUI/general/res/sass/constants"; -@import "../../../../commonUI/general/res/sass/mixins"; -@import "../../../../commonUI/general/res/sass/mobile/constants"; -@import "../../../../commonUI/general/res/sass/mobile/mixins"; -@import "../../../../commonUI/themes/espresso/res/sass/constants"; -@import "../../../../commonUI/themes/espresso/res/sass/mixins"; -@import "../../../../commonUI/general/res/sass/icons"; +@import "../../../../../commonUI/general/res/sass/constants"; +@import "../../../../../commonUI/general/res/sass/mixins"; +@import "../../../../../commonUI/general/res/sass/mobile/constants"; +@import "../../../../../commonUI/general/res/sass/mobile/mixins"; +@import "../../../../../commonUI/themes/espresso/res/sass/constants"; +@import "../../../../../commonUI/themes/espresso/res/sass/mixins"; +@import "../../../../../commonUI/general/res/sass/icons"; @import "constants"; @mixin toiLineHovEffects() { diff --git a/platform/features/conductor-v2/res/templates/mode-selector/mode-menu.html b/platform/features/conductor-v2/conductor/res/templates/mode-selector/mode-menu.html similarity index 100% rename from platform/features/conductor-v2/res/templates/mode-selector/mode-menu.html rename to platform/features/conductor-v2/conductor/res/templates/mode-selector/mode-menu.html diff --git a/platform/features/conductor-v2/res/templates/mode-selector/mode-selector.html b/platform/features/conductor-v2/conductor/res/templates/mode-selector/mode-selector.html similarity index 100% rename from platform/features/conductor-v2/res/templates/mode-selector/mode-selector.html rename to platform/features/conductor-v2/conductor/res/templates/mode-selector/mode-selector.html diff --git a/platform/features/conductor-v2/res/templates/time-conductor.html b/platform/features/conductor-v2/conductor/res/templates/time-conductor.html similarity index 100% rename from platform/features/conductor-v2/res/templates/time-conductor.html rename to platform/features/conductor-v2/conductor/res/templates/time-conductor.html diff --git a/platform/features/conductor-v2/src/TimeConductor.js b/platform/features/conductor-v2/conductor/src/TimeConductor.js similarity index 100% rename from platform/features/conductor-v2/src/TimeConductor.js rename to platform/features/conductor-v2/conductor/src/TimeConductor.js diff --git a/platform/features/conductor-v2/src/TimeConductorSpec.js b/platform/features/conductor-v2/conductor/src/TimeConductorSpec.js similarity index 100% rename from platform/features/conductor-v2/src/TimeConductorSpec.js rename to platform/features/conductor-v2/conductor/src/TimeConductorSpec.js diff --git a/platform/features/conductor-v2/src/timeSystems/LocalClock.js b/platform/features/conductor-v2/conductor/src/timeSystems/LocalClock.js similarity index 100% rename from platform/features/conductor-v2/src/timeSystems/LocalClock.js rename to platform/features/conductor-v2/conductor/src/timeSystems/LocalClock.js diff --git a/platform/features/conductor-v2/src/timeSystems/TickSource.js b/platform/features/conductor-v2/conductor/src/timeSystems/TickSource.js similarity index 100% rename from platform/features/conductor-v2/src/timeSystems/TickSource.js rename to platform/features/conductor-v2/conductor/src/timeSystems/TickSource.js diff --git a/platform/features/conductor-v2/src/timeSystems/TimeSystem.js b/platform/features/conductor-v2/conductor/src/timeSystems/TimeSystem.js similarity index 100% rename from platform/features/conductor-v2/src/timeSystems/TimeSystem.js rename to platform/features/conductor-v2/conductor/src/timeSystems/TimeSystem.js diff --git a/platform/features/conductor-v2/src/ui/MctConductorAxis.js b/platform/features/conductor-v2/conductor/src/ui/MctConductorAxis.js similarity index 100% rename from platform/features/conductor-v2/src/ui/MctConductorAxis.js rename to platform/features/conductor-v2/conductor/src/ui/MctConductorAxis.js diff --git a/platform/features/conductor-v2/src/ui/TimeConductorController.js b/platform/features/conductor-v2/conductor/src/ui/TimeConductorController.js similarity index 100% rename from platform/features/conductor-v2/src/ui/TimeConductorController.js rename to platform/features/conductor-v2/conductor/src/ui/TimeConductorController.js diff --git a/platform/features/conductor-v2/src/ui/TimeConductorValidation.js b/platform/features/conductor-v2/conductor/src/ui/TimeConductorValidation.js similarity index 100% rename from platform/features/conductor-v2/src/ui/TimeConductorValidation.js rename to platform/features/conductor-v2/conductor/src/ui/TimeConductorValidation.js diff --git a/platform/features/conductor-v2/src/ui/modes/FixedMode.js b/platform/features/conductor-v2/conductor/src/ui/modes/FixedMode.js similarity index 100% rename from platform/features/conductor-v2/src/ui/modes/FixedMode.js rename to platform/features/conductor-v2/conductor/src/ui/modes/FixedMode.js diff --git a/platform/features/conductor-v2/src/ui/modes/FollowMode.js b/platform/features/conductor-v2/conductor/src/ui/modes/FollowMode.js similarity index 100% rename from platform/features/conductor-v2/src/ui/modes/FollowMode.js rename to platform/features/conductor-v2/conductor/src/ui/modes/FollowMode.js diff --git a/platform/features/conductor-v2/src/ui/modes/TimeConductorMode.js b/platform/features/conductor-v2/conductor/src/ui/modes/TimeConductorMode.js similarity index 100% rename from platform/features/conductor-v2/src/ui/modes/TimeConductorMode.js rename to platform/features/conductor-v2/conductor/src/ui/modes/TimeConductorMode.js diff --git a/platform/features/conductor-v2/utcTimeSystem/bundle.js b/platform/features/conductor-v2/utcTimeSystem/bundle.js new file mode 100644 index 0000000000..5b13e605d4 --- /dev/null +++ b/platform/features/conductor-v2/utcTimeSystem/bundle.js @@ -0,0 +1,40 @@ +/***************************************************************************** + * 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. + *****************************************************************************/ + +define([ + "./src/UTCTimeSystem", + 'legacyRegistry' +], function ( + UTCTimeSystem, + legacyRegistry +) { + legacyRegistry.register("platform/features/conductor-v2/utcTimeSystem", { + "extensions": { + "timeSystems": [ + { + "implementation": UTCTimeSystem, + "depends": ["$timeout"] + } + ] + } + }); +}); diff --git a/platform/features/conductor-v2/src/timeSystems/UTCTimeSystem.js b/platform/features/conductor-v2/utcTimeSystem/src/UTCTimeSystem.js similarity index 94% rename from platform/features/conductor-v2/src/timeSystems/UTCTimeSystem.js rename to platform/features/conductor-v2/utcTimeSystem/src/UTCTimeSystem.js index 0d64873c21..59ae84a34b 100644 --- a/platform/features/conductor-v2/src/timeSystems/UTCTimeSystem.js +++ b/platform/features/conductor-v2/utcTimeSystem/src/UTCTimeSystem.js @@ -21,9 +21,9 @@ *****************************************************************************/ define([ - './TimeSystem', - './LocalClock' -], function (TimeSystem, LocalClock, UTCTimeFormat) { + '../../conductor/src/timeSystems/TimeSystem', + '../../conductor/src/timeSystems/LocalClock' +], function (TimeSystem, LocalClock) { var FIFTEEN_MINUTES = 15 * 60 * 1000, DEFAULT_PERIOD = 1000;