mirror of
https://github.com/nasa/openmct.git
synced 2025-06-26 11:09:22 +00:00
Compare commits
5 Commits
test-form-
...
experiment
Author | SHA1 | Date | |
---|---|---|---|
06cddb6e16 | |||
ca53852014 | |||
d7d8bedf2a | |||
c24c652f4b | |||
1cb4f5b013 |
@ -123,7 +123,10 @@ export default {
|
|||||||
automargin: true,
|
automargin: true,
|
||||||
fixedrange: true
|
fixedrange: true
|
||||||
},
|
},
|
||||||
yaxis: primaryYaxis,
|
yaxis: {
|
||||||
|
...primaryYaxis,
|
||||||
|
type: 'log'
|
||||||
|
},
|
||||||
margin: {
|
margin: {
|
||||||
l: 5,
|
l: 5,
|
||||||
r: 5,
|
r: 5,
|
||||||
|
@ -62,6 +62,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.xValues = [];
|
||||||
|
this.yValues = [];
|
||||||
this.refreshData = this.refreshData.bind(this);
|
this.refreshData = this.refreshData.bind(this);
|
||||||
this.setTimeContext();
|
this.setTimeContext();
|
||||||
|
|
||||||
@ -156,7 +158,7 @@ export default {
|
|||||||
|
|
||||||
const yAxisMetadata = metadata.valuesForHints(['range'])[0];
|
const yAxisMetadata = metadata.valuesForHints(['range'])[0];
|
||||||
//Exclude 'name' and 'time' based metadata specifically, from the x-Axis values by using range hints only
|
//Exclude 'name' and 'time' based metadata specifically, from the x-Axis values by using range hints only
|
||||||
const xAxisMetadata = metadata.valuesForHints(['range']);
|
const xAxisMetadata = metadata.valuesForHints(['domain'])[0];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
xAxisMetadata,
|
xAxisMetadata,
|
||||||
@ -236,29 +238,29 @@ export default {
|
|||||||
let yValues = [];
|
let yValues = [];
|
||||||
|
|
||||||
//populate X and Y values for plotly
|
//populate X and Y values for plotly
|
||||||
axisMetadata.xAxisMetadata.forEach((metadata) => {
|
xValues.push(this.format(key, axisMetadata.xAxisMetadata.key, data));
|
||||||
xValues.push(metadata.name);
|
if (data[axisMetadata.yAxisMetadata.key]) {
|
||||||
if (data[metadata.key]) {
|
const formattedValue = this.format(key, axisMetadata.yAxisMetadata.key, data);
|
||||||
const formattedValue = this.format(key, metadata.key, data);
|
yValues.push(formattedValue);
|
||||||
yValues.push(formattedValue);
|
} else {
|
||||||
} else {
|
yValues.push(null);
|
||||||
yValues.push(null);
|
}
|
||||||
}
|
|
||||||
});
|
this.xValues = this.xValues.concat(xValues);
|
||||||
|
this.yValues = this.yValues.concat(yValues);
|
||||||
|
|
||||||
const trace = {
|
const trace = {
|
||||||
key,
|
key,
|
||||||
name: telemetryObject.name,
|
name: telemetryObject.name,
|
||||||
x: xValues,
|
x: this.xValues,
|
||||||
y: yValues,
|
y: this.yValues,
|
||||||
text: yValues.map(String),
|
text: yValues.map(String),
|
||||||
xAxisMetadata: axisMetadata.xAxisMetadata,
|
xAxisMetadata: axisMetadata.xAxisMetadata,
|
||||||
yAxisMetadata: axisMetadata.yAxisMetadata,
|
yAxisMetadata: axisMetadata.yAxisMetadata,
|
||||||
type: 'bar',
|
type: 'scatter',
|
||||||
marker: {
|
marker: {
|
||||||
color: this.domainObject.configuration.barStyles.series[key].color
|
color: this.domainObject.configuration.barStyles.series[key].color
|
||||||
},
|
}
|
||||||
hoverinfo: 'skip'
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addTrace(trace, key);
|
this.addTrace(trace, key);
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
<div v-for="tick in ticks"
|
<div v-for="tick in ticks"
|
||||||
:key="tick.value"
|
:key="tick.value"
|
||||||
class="gl-plot-tick gl-plot-y-tick-label"
|
class="gl-plot-tick gl-plot-y-tick-label"
|
||||||
:style="{ top: (100 * (max - tick.value) / interval) + '%' }"
|
:style="{ top: tick.top }"
|
||||||
:title="tick.fullText || tick.text"
|
:title="tick.fullText || tick.text"
|
||||||
style="margin-top: -0.50em; direction: ltr;"
|
style="margin-top: -0.50em; direction: ltr;"
|
||||||
>
|
>
|
||||||
@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import eventHelpers from "./lib/eventHelpers";
|
import eventHelpers from "./lib/eventHelpers";
|
||||||
import { ticks, getFormattedTicks } from "./tickUtils";
|
import {d3Ticks, ticks, getFormattedTicks, d3TicksLog} from "./tickUtils";
|
||||||
import configStore from "./configuration/ConfigStore";
|
import configStore from "./configuration/ConfigStore";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -172,7 +172,7 @@ export default {
|
|||||||
}, this);
|
}, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ticks(range.min, range.max, number);
|
return d3Ticks(range.min, range.max, number);
|
||||||
},
|
},
|
||||||
|
|
||||||
updateTicksForceRegeneration() {
|
updateTicksForceRegeneration() {
|
||||||
@ -210,6 +210,27 @@ export default {
|
|||||||
|
|
||||||
newTicks = getFormattedTicks(newTicks, format);
|
newTicks = getFormattedTicks(newTicks, format);
|
||||||
|
|
||||||
|
if (this.axisType !== 'xAxis') {
|
||||||
|
let min = this.min;
|
||||||
|
let max = this.max;
|
||||||
|
newTicks = newTicks.map((tick) => {
|
||||||
|
let value;
|
||||||
|
if (tick.value !== 0) {
|
||||||
|
value = (Math.log10(max) - Math.log10(tick.value)) / (Math.log10(max) - Math.log10(min)) * (100);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value < 0) {
|
||||||
|
value = -value;
|
||||||
|
}
|
||||||
|
|
||||||
|
tick.top = value + '%';
|
||||||
|
|
||||||
|
return tick;
|
||||||
|
});
|
||||||
|
console.log(this.min, this.max, newTicks.map(tick => `${tick.value} + ${tick.top}`));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
this.ticks = newTicks;
|
this.ticks = newTicks;
|
||||||
this.shouldCheckWidth = true;
|
this.shouldCheckWidth = true;
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,9 @@ export default class PlotSeries extends Model {
|
|||||||
return this.limitEvaluator.evaluate(datum, valueMetadata);
|
return this.limitEvaluator.evaluate(datum, valueMetadata);
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
const format = this.formats[newKey];
|
const format = this.formats[newKey];
|
||||||
this.getYVal = format.parse.bind(format);
|
this.getYVal = (point) => {
|
||||||
|
return Math.log(format.parse(point));
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
formatX(point) {
|
formatX(point) {
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
import * as d3Scale from 'd3-scale';
|
||||||
|
import * as d3Axis from 'd3-axis';
|
||||||
|
|
||||||
const e10 = Math.sqrt(50);
|
const e10 = Math.sqrt(50);
|
||||||
const e5 = Math.sqrt(10);
|
const e5 = Math.sqrt(10);
|
||||||
const e2 = Math.sqrt(2);
|
const e2 = Math.sqrt(2);
|
||||||
@ -40,6 +43,33 @@ function getPrecision(step) {
|
|||||||
return precision;
|
return precision;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function d3Ticks(start, stop, count) {
|
||||||
|
let scale = d3Scale.scaleLinear();
|
||||||
|
scale.domain([start, stop]);
|
||||||
|
|
||||||
|
const axis = d3Axis.axisLeft(scale);
|
||||||
|
|
||||||
|
return axis.scale().ticks(count);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function d3TicksLog(start, stop, count) {
|
||||||
|
if (start < 0) {
|
||||||
|
start = 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let scale = d3Scale.scaleLog().domain([start, stop]);
|
||||||
|
|
||||||
|
const axis = d3Axis.axisBottom(scale);
|
||||||
|
|
||||||
|
const generatedTicks = axis.scale().ticks(count);
|
||||||
|
if (generatedTicks.length < 1) {
|
||||||
|
// if the difference between start, stop is small, the ticks might not be generated for log
|
||||||
|
return d3Ticks(start, stop, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
return generatedTicks;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Linear tick generation from d3-array.
|
* Linear tick generation from d3-array.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user