Skip to content

Commit 2979277

Browse files
committed
Separate SG scale (Inspectors only so far)
1 parent 10bc7e2 commit 2979277

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

src/scripts/status.js

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { max, min } from "d3-array";
66
import { scaleLinear, scaleTime } from "d3-scale";
77
import { drag } from "d3-drag";
88
import { zoom } from "d3-zoom";
9-
import { axisBottom, axisLeft } from "d3-axis";
9+
import { axisBottom, axisLeft, axisRight } from "d3-axis";
1010
import { line } from "d3-shape";
1111
//import { timeFormat } from "d3-time-format";
1212

@@ -791,6 +791,7 @@ function renderChart(options) {
791791
.style("border", "1px solid black");
792792

793793
// Extract profile & temperature data into local arrays
794+
// First: profiles
794795
var profileData = header[0]['jobProfile'];
795796
var profileLineData = [];
796797
var temperatureLineDataHolder = [];
@@ -810,7 +811,7 @@ function renderChart(options) {
810811
if (header[0].hasOwnProperty("sensors")) {
811812
sensorList = header[0]["sensors"];
812813
}
813-
// Extract temperature data for all sensors
814+
// Second, extract temperature data for all sensors
814815
var sensor_instance;
815816
for (sensor_instance=0;sensor_instance<sensorList.length;sensor_instance++) {
816817
//console.log("renderChart() sensor name: " + sensorList[sensor_instance]);
@@ -834,11 +835,15 @@ function renderChart(options) {
834835
}
835836

836837
// Find extent of values in both profileLineData & all the temperatureLineData arrays (1 for each sensor)
837-
// N.B. could maybe do this while populating the *LineData arrays
838838
var minDataPoint = min(profileLineData, function(d) {return parseFloat(d.y);});
839839
var maxDataPoint = max(profileLineData, function(d) {return parseFloat(d.y);});
840840
var maxTime = max(profileLineData, function(d) {return parseFloat(d.x);});
841841

842+
// Separate scaling for gravity, so need separate min/max points
843+
var minGravDataPoint = 1.0;
844+
var maxGravDataPoint = 1.0;
845+
var maxGravTime = maxTime;
846+
842847
for (sensor_instance=0;sensor_instance<sensorList.length;sensor_instance++) {
843848
if (temperatureLineDataHolder[sensor_instance].length > 0) {
844849
var temperature = min(temperatureLineDataHolder[sensor_instance], function(d) {return parseFloat(d.y);});
@@ -851,27 +856,40 @@ function renderChart(options) {
851856

852857
if (gravityLineDataHolder[sensor_instance].length > 0) {
853858
var gravity = min(gravityLineDataHolder[sensor_instance], function(d) {return parseFloat(d.y);});
854-
if (gravity < minDataPoint ) minDataPoint = gravity;
859+
if (gravity < minGravDataPoint ) minGravDataPoint = gravity;
855860
gravity = max(gravityLineDataHolder[sensor_instance], function(d) {return parseFloat(d.y);});
856-
if (gravity > maxDataPoint ) maxDataPoint = gravity;
861+
if (gravity > maxGravDataPoint ) maxGravDataPoint = gravity;
857862
gravity = max(gravityLineDataHolder[sensor_instance], function(d) {return parseFloat(d.x);});
858-
if ( gravity > maxTime ) maxTime = gravity;
863+
if ( gravity > maxGravTime ) maxGravTime = gravity;
859864
}
860865
}
861866
// Add some clearance
862867
minDataPoint -= 5;
863868
maxDataPoint += 5;
864869
maxTime += 60;
870+
minGravDataPoint -= 0.05;
871+
maxGravDataPoint += 0.05;
872+
maxGravTime += 60;
865873

866874
//console.log("Min = " + minDataPoint + " Max = " + maxDataPoint);
867875
var linearScaleY = scaleLinear()
868876
.domain([minDataPoint, maxDataPoint])
869877
.range([graphHeight,0]);
870-
var yAxis = axisLeft(linearScaleY).ticks(5);
878+
var yAxis = axisLeft(linearScaleY).ticks(10);
871879
svg.append("g")
872880
.attr('class', 'y ' + nameBase + 'Axis unselectable')
873881
.attr("transform", "translate(" + graphMargin.left + "," + graphMargin.top + ")")
874882
.call(yAxis);
883+
884+
var linearGravScaleY = scaleLinear()
885+
.domain([minGravDataPoint, maxGravDataPoint])
886+
.range([graphHeight,0]);
887+
var yGravAxis = axisRight(linearGravScaleY).ticks(8);
888+
svg.append("g")
889+
.attr('class', 'y grav ' + nameBase + 'Axis unselectable')
890+
.attr("transform", "translate(" + (graphWidth + graphMargin.left) + "," + graphMargin.top + ")")
891+
.call(yGravAxis);
892+
875893
var linearScaleX = scaleTime()
876894
.domain([0,maxTime])
877895
.range([0,graphWidth]);
@@ -1002,7 +1020,7 @@ function renderChart(options) {
10021020
//console.log("scaled sp = " + gravityLineData[sp].x + " : " + gravityLineData[sp].y);
10031021
scaledGravityLineData.push({
10041022
"x":linearScaleX(gravityLineData[sp].x),
1005-
"y":linearScaleY(gravityLineData[sp].y)
1023+
"y":linearGravScaleY(gravityLineData[sp].y)
10061024
});
10071025
}
10081026
// Draw gravity graph
@@ -1035,7 +1053,7 @@ function renderChart(options) {
10351053
.append("tspan").attr("x",50).attr("y",18).attr('dy', '1.1em').attr("text-anchor", "end").text("Time:")
10361054
.append("tspan").attr("x",60).attr("y",18).attr('dy', '1.1em').attr("text-anchor", "start").text(tickText(linearScaleX.invert(mouse(this)[0])))
10371055
.append("tspan").attr("x",50).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "end").text("Grav:")
1038-
.append("tspan").attr("x",60).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "start").text((linearScaleY.invert(mouse(this)[1])).toFixed(gravDisplayPrecision));
1056+
.append("tspan").attr("x",60).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "start").text((linearGravScaleY.invert(mouse(this)[1])).toFixed(gravDisplayPrecision));
10391057
// Measure dummy text
10401058
var bbox = select("#" + nameBase + "TooltipText_" + longName).node().getBBox();
10411059
// Remove dummy text
@@ -1048,7 +1066,7 @@ function renderChart(options) {
10481066
.append("tspan").attr("x",50).attr("y",18).attr('dy', '1.1em').attr("text-anchor", "end").text("Time:")
10491067
.append("tspan").attr("x",60).attr("y",18).attr('dy', '1.1em').attr("text-anchor", "start").text(tickText(linearScaleX.invert(mouse(this)[0])))
10501068
.append("tspan").attr("x",50).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "end").text("Grav:")
1051-
.append("tspan").attr("x",60).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "start").text((linearScaleY.invert(mouse(this)[1])).toFixed(gravDisplayPrecision));
1069+
.append("tspan").attr("x",60).attr("y",36).attr('dy', '1.1em').attr("text-anchor", "start").text((linearGravScaleY.invert(mouse(this)[1])).toFixed(gravDisplayPrecision));
10521070

10531071
// Find size of new text box
10541072
bbox = select("#" + nameBase + "TooltipText_" + longName).node().getBBox();

0 commit comments

Comments
 (0)