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;