Skip to content

Commit 4cf6126

Browse files
committed
Refactoring based on feedback
Refactoring controller Migrating functions off controller onto service class Simplified modes Adding comments Removed unnecessary validation Fixing testing issues
1 parent 4ae6da0 commit 4cf6126

20 files changed

+564
-649
lines changed

example/localTimeSystem/src/LADTickSource.js

+1-4
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ define(['../../../platform/features/conductor-v2/conductor/src/timeSystems/Local
3030

3131
this.metadata = {
3232
key: 'test-lad',
33+
mode: 'LAD',
3334
cssclass: 'icon-clock',
3435
label: 'Latest Available Data',
3536
name: 'Latest available data',
@@ -38,9 +39,5 @@ define(['../../../platform/features/conductor-v2/conductor/src/timeSystems/Local
3839
}
3940
LADTickSource.prototype = Object.create(LocalClock.prototype);
4041

41-
LADTickSource.prototype.type = function () {
42-
return 'data';
43-
};
44-
4542
return LADTickSource;
4643
});

platform/features/conductor-v2/compatibility/bundle.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ define([
3939
"key": "conductorService",
4040
"implementation": ConductorService,
4141
"depends": [
42-
"timeConductorService"
42+
"timeConductor"
4343
]
4444
}
4545
],
4646
"representers": [
4747
{
4848
"implementation": ConductorRepresenter,
4949
"depends": [
50-
"timeConductorService"
50+
"timeConductor"
5151
]
5252
}
5353
],
@@ -57,7 +57,7 @@ define([
5757
"provides": "telemetryService",
5858
"implementation": ConductorTelemetryDecorator,
5959
"depends": [
60-
"timeConductorService"
60+
"timeConductor"
6161
]
6262
}
6363
]

platform/features/conductor-v2/compatibility/src/ConductorRepresenter.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ define(
3737
* @constructor
3838
*/
3939
function ConductorRepresenter(
40-
conductorService,
40+
timeConductor,
4141
scope,
4242
element
4343
) {
44-
this.conductor = conductorService.conductor();
44+
this.conductor = timeConductor;
4545
this.scope = scope;
4646
this.element = element;
4747

platform/features/conductor-v2/compatibility/src/ConductorTelemetryDecorator.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ define(
3636
* the service which exposes the global time conductor
3737
* @param {TelemetryService} telemetryService the decorated service
3838
*/
39-
function ConductorTelemetryDecorator(conductorService, telemetryService) {
40-
this.conductor = conductorService.conductor();
39+
function ConductorTelemetryDecorator(timeConductor, telemetryService) {
40+
this.conductor = timeConductor;
4141
this.telemetryService = telemetryService;
4242

4343
this.amendRequests = ConductorTelemetryDecorator.prototype.amendRequests.bind(this);

platform/features/conductor-v2/conductor/bundle.js

+15-13
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@
2121
*****************************************************************************/
2222

2323
define([
24-
"./src/ui/TimeConductorService",
24+
"./src/ui/TimeConductorViewService",
2525
"./src/ui/TimeConductorController",
26-
"./src/ui/MCTConductorAxis",
26+
"./src/TimeConductor",
27+
"./src/ui/MctConductorAxis",
2728
"./src/ui/NumberFormat",
2829
"text!./res/templates/time-conductor.html",
2930
"text!./res/templates/mode-selector/mode-selector.html",
3031
"text!./res/templates/mode-selector/mode-menu.html",
3132
'legacyRegistry'
3233
], function (
33-
TimeConductorService,
34+
TimeConductorViewService,
3435
TimeConductorController,
36+
TimeConductor,
3537
MCTConductorAxis,
3638
NumberFormat,
3739
timeConductorTemplate,
@@ -45,16 +47,15 @@ define([
4547
"services": [
4648
{
4749
"key": "timeConductor",
48-
"implementation": function (timeConductorService) {
49-
return timeConductorService.conductor();
50-
},
51-
"depends": [
52-
"timeConductorService"
53-
]
50+
"implementation": TimeConductor
5451
},
5552
{
56-
"key": "timeConductorService",
57-
"implementation": TimeConductorService
53+
"key": "timeConductorViewService",
54+
"implementation": TimeConductorViewService,
55+
"depends": [
56+
"timeConductor",
57+
"timeSystems[]"
58+
]
5859
}
5960
],
6061
"controllers": [
@@ -63,7 +64,8 @@ define([
6364
"implementation": TimeConductorController,
6465
"depends": [
6566
"$scope",
66-
"timeConductorService",
67+
"timeConductor",
68+
"timeConductorViewService",
6769
"timeSystems[]"
6870
]
6971
}
@@ -73,7 +75,7 @@ define([
7375
"key": "mctConductorAxis",
7476
"implementation": MCTConductorAxis,
7577
"depends": [
76-
"timeConductorService",
78+
"timeConductor",
7779
"formatService"
7880
]
7981
}

platform/features/conductor-v2/conductor/res/templates/time-conductor.html

+10-10
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<!-- Holds inputs and ticks -->
1212
<div class="l-time-conductor-inputs-and-ticks l-row-elem flex-elem no-margin">
1313
<form class="l-time-conductor-inputs-holder"
14-
ng-submit="tcController.updateBoundsFromForm(formModel)">
14+
ng-submit="tcController.updateBoundsFromForm(boundsModel)">
1515
<span class="l-time-range-w start-w">
1616
<span class="l-time-range-input-w start-date">
1717
<span class="title"></span>
@@ -20,8 +20,8 @@
2020
format: timeSystemModel.format,
2121
validate: tcController.validation.validateStart
2222
}"
23-
ng-model="formModel"
24-
ng-blur="tcController.updateBoundsFromForm(formModel)"
23+
ng-model="boundsModel"
24+
ng-blur="tcController.updateBoundsFromForm(boundsModel)"
2525
field="'start'"
2626
class="time-range-input">
2727
</mct-control>
@@ -34,8 +34,8 @@
3434
format: timeSystemModel.deltaFormat,
3535
validate: tcController.validation.validateStartDelta
3636
}"
37-
ng-model="formModel"
38-
ng-blur="tcController.updateDeltasFromForm(formModel)"
37+
ng-model="boundsModel"
38+
ng-blur="tcController.updateDeltasFromForm(boundsModel)"
3939
field="'startDelta'"
4040
class="hrs-min-input">
4141
</mct-control>
@@ -50,8 +50,8 @@
5050
format: timeSystemModel.format,
5151
validate: tcController.validation.validateEnd
5252
}"
53-
ng-model="formModel"
54-
ng-blur="tcController.updateBoundsFromForm(formModel)"
53+
ng-model="boundsModel"
54+
ng-blur="tcController.updateBoundsFromForm(boundsModel)"
5555
ng-disabled="modeModel.selectedKey !== 'fixed'"
5656
field="'end'"
5757
class="time-range-input">
@@ -65,8 +65,8 @@
6565
format: timeSystemModel.deltaFormat,
6666
validate: tcController.validation.validateEndDelta
6767
}"
68-
ng-model="formModel"
69-
ng-blur="tcController.updateDeltasFromForm(formModel)"
68+
ng-model="boundsModel"
69+
ng-blur="tcController.updateDeltasFromForm(boundsModel)"
7070
field="'endDelta'"
7171
class="hrs-min-input">
7272
</mct-control>
@@ -100,7 +100,7 @@
100100
</mct-control>
101101
<!-- Zoom control -->
102102
<div class="l-time-conductor-zoom-w grows flex-elem l-flex-row">
103-
<span class="time-conductor-zoom-current-range flex-elem flex-fixed holder">Mars Minutes</span>
103+
<span class="time-conductor-zoom-current-range flex-elem flex-fixed holder"></span>
104104
<input class="time-conductor-zoom flex-elem" type="range" />
105105
</div>
106106
</div>

platform/features/conductor-v2/conductor/src/TimeConductor.js

-3
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,6 @@ define(['EventEmitter'], function (EventEmitter) {
148148
* Time System
149149
* */
150150
this.emit('timeSystem', this.system);
151-
// Do something with bounds here. Try and convert between
152-
// time systems? Or just set defaults when time system changes?
153-
// eg.
154151
this.bounds(bounds);
155152
} else if (arguments.length === 1) {
156153
throw new Error('Must set bounds when changing time system');

platform/features/conductor-v2/conductor/src/timeSystems/LocalClock.js

+2-5
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ define(['./TickSource'], function (TickSource) {
2929
TickSource.call(this);
3030

3131
this.metadata = {
32-
key: 'real-time',
32+
key: 'local',
33+
mode: 'realtime',
3334
cssclass: 'icon-clock',
3435
label: 'Real-time',
3536
name: 'Real-time Mode',
@@ -84,9 +85,5 @@ define(['./TickSource'], function (TickSource) {
8485
}.bind(this);
8586
};
8687

87-
LocalClock.prototype.type = function () {
88-
return 'clock';
89-
};
90-
9188
return LocalClock;
9289
});

platform/features/conductor-v2/conductor/src/timeSystems/TickSource.js

-9
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,5 @@ define([], function () {
4343
throw new Error('Not implemented');
4444
};
4545

46-
/**
47-
* What does this source tick on? A clock, or data availability.
48-
* Information is required to support time conductor modes.
49-
* @returns {string} type One of 'clock' or 'data'
50-
*/
51-
TickSource.prototype.type = function () {
52-
throw new Error('Not implemented');
53-
}
54-
5546
return TickSource;
5647
});

platform/features/conductor-v2/conductor/src/ui/MctConductorAxis.js

+12-15
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ define(
3232
* labelled 'ticks'. It requires 'start' and 'end' integer values to
3333
* be specified as attributes.
3434
*/
35-
function MCTConductorAxis(conductorService, formatService) {
36-
var conductor = conductorService.conductor();
37-
35+
function MCTConductorAxis(conductor, formatService) {
3836
function link(scope, element, attrs, ngModelController) {
3937
var target = element[0].firstChild,
4038
height = target.offsetHeight,
@@ -45,25 +43,24 @@ define(
4543
.attr('width', '100%')
4644
.attr('height', height);
4745
var xAxis = d3.axisTop();
46+
var xScale = d3.scaleUtc();
47+
4848
// draw x axis with labels and move to the bottom of the chart area
4949
var axisElement = vis.append("g")
5050
.attr("transform", "translate(0," + (height - padding) + ")");
5151

5252
function setScale() {
53-
var xScale = undefined;
5453
var width = target.offsetWidth;
5554
var timeSystem = conductor.timeSystem();
5655
var bounds = conductor.bounds();
5756

5857
if (timeSystem.isUTCBased()) {
59-
xScale = d3.scaleUtc();
6058
xScale.domain([new Date(bounds.start), new Date(bounds.end)]);
6159
} else {
62-
xScale = d3.scaleLinear();
6360
xScale.domain([bounds.start, bounds.end]);
6461
}
62+
6563
xScale.range([padding, width - padding * 2]);
66-
xAxis.scale(xScale);
6764
axisElement.call(xAxis);
6865
}
6966

@@ -73,6 +70,13 @@ define(
7370
var format = formatService.getFormat(key);
7471
var b = conductor.bounds();
7572

73+
if (timeSystem.isUTCBased()) {
74+
xScale = d3.scaleUtc();
75+
} else {
76+
xScale = d3.scaleLinear();
77+
}
78+
79+
xAxis.scale(xScale);
7680
//Define a custom format function
7781
xAxis.tickFormat(function (tickValue) {
7882
// Normalize date representations to numbers
@@ -97,23 +101,16 @@ define(
97101
setScale();
98102
});
99103

100-
setScale();
101-
102104
if (conductor.timeSystem() !== undefined) {
103105
changeTimeSystem(conductor.timeSystem());
106+
setScale();
104107
}
105108
}
106109

107110
return {
108-
// Only show at the element level
109111
restrict: "E",
110-
111112
template: "<div class=\"l-axis-holder\" mct-resize=\"resize()\"></div>",
112-
113-
// ngOptions is terminal, so we need to be higher priority
114113
priority: 1000,
115-
116-
// Link function
117114
link: link
118115
};
119116
}

platform/features/conductor-v2/conductor/src/ui/NumberFormat.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@
2020
* at runtime from the About dialog for additional information.
2121
*****************************************************************************/
2222

23-
define([
24-
'moment'
25-
], function (
26-
moment
27-
) {
23+
define([], function () {
2824

2925
/**
3026
* Formatter for basic numbers. Provides basic support for non-UTC

0 commit comments

Comments
 (0)