mirror of
https://github.com/nasa/openmct.git
synced 2025-05-08 11:38:35 +00:00
Merge pull request #2026 from nasa/plot-bug-hunt
[plot] misc bug fixes - Fixes Issues #2025, #2024, #2014
This commit is contained in:
commit
29de11167f
@ -22,7 +22,7 @@
|
|||||||
<div ng-controller="PlotOptionsController">
|
<div ng-controller="PlotOptionsController">
|
||||||
<ul class="tree l-inspector-part">
|
<ul class="tree l-inspector-part">
|
||||||
<h2 title="Display properties for this object">Plot Series Options</h2>
|
<h2 title="Display properties for this object">Plot Series Options</h2>
|
||||||
<li ng-repeat="series in config.series.models">
|
<li ng-repeat="series in config.series.models" ng-init="seriesForm = form.series[$index]">
|
||||||
<span class="tree-item menus-to-left">
|
<span class="tree-item menus-to-left">
|
||||||
<span class='ui-symbol view-control flex-elem'
|
<span class='ui-symbol view-control flex-elem'
|
||||||
ng-class="{ expanded: series.expanded }"
|
ng-class="{ expanded: series.expanded }"
|
||||||
@ -40,10 +40,10 @@
|
|||||||
title="The field to be plotted as a value for this series.">Value</div>
|
title="The field to be plotted as a value for this series.">Value</div>
|
||||||
<div class="grid-cell value">
|
<div class="grid-cell value">
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<select ng-model="form.series[$index].yKey">
|
<select ng-model="seriesForm.yKey">
|
||||||
<option ng-repeat="option in form.series[$index].yAxisOptions"
|
<option ng-repeat="option in seriesForm.yAxisOptions"
|
||||||
value="{{option.value}}"
|
value="{{option.value}}"
|
||||||
ng-selected="option.value == form.series[$index].yKey">
|
ng-selected="option.value == seriesForm.yKey">
|
||||||
{{option.name}}
|
{{option.name}}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
title="The line rendering style for this series.">Line Style</div>
|
title="The line rendering style for this series.">Line Style</div>
|
||||||
<div class="grid-cell value">
|
<div class="grid-cell value">
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<select ng-model="form.series[$index].interpolate">
|
<select ng-model="seriesForm.interpolate">
|
||||||
<option value="none">None</option>
|
<option value="none">None</option>
|
||||||
<option value="linear">Linear interpolate</option>
|
<option value="linear">Linear interpolate</option>
|
||||||
<option value="stepAfter">Step after</option>
|
<option value="stepAfter">Step after</option>
|
||||||
@ -66,21 +66,21 @@
|
|||||||
<li class="grid-row">
|
<li class="grid-row">
|
||||||
<div class="grid-cell label"
|
<div class="grid-cell label"
|
||||||
title="Whether markers are displayed.">Markers</div>
|
title="Whether markers are displayed.">Markers</div>
|
||||||
<div class="grid-cell value"><input type="checkbox" ng-model="form.series[$index].markers"/></div>
|
<div class="grid-cell value"><input type="checkbox" ng-model="seriesForm.markers"/></div>
|
||||||
</li>
|
</li>
|
||||||
<li class="grid-row">
|
<li class="grid-row">
|
||||||
<div class="grid-cell label"
|
<div class="grid-cell label"
|
||||||
title="Display markers visually denoting points in alarm.">Alarm Markers</div>
|
title="Display markers visually denoting points in alarm.">Alarm Markers</div>
|
||||||
<div class="grid-cell value"><input type="checkbox" ng-model="form.series[$index].alarmMarkers"/></div>
|
<div class="grid-cell value"><input type="checkbox" ng-model="seriesForm.alarmMarkers"/></div>
|
||||||
</li>
|
</li>
|
||||||
<li class="grid-row" ng-show="form.series[$index].markers || form.series[$index].alarmMarkers">
|
<li class="grid-row" ng-show="seriesForm.markers || seriesForm.alarmMarkers">
|
||||||
<div class="grid-cell label"
|
<div class="grid-cell label"
|
||||||
title="The size of regular and alarm markers for this series.">Marker Size:</div>
|
title="The size of regular and alarm markers for this series.">Marker Size:</div>
|
||||||
<div class="grid-cell value"><input class="sm" type="text" ng-model="form.series[$index].markerSize"/></div>
|
<div class="grid-cell value"><input class="sm" type="text" ng-model="seriesForm.markerSize"/></div>
|
||||||
</li>
|
</li>
|
||||||
<li class="grid-row"
|
<li class="grid-row"
|
||||||
ng-controller="ClickAwayController as toggle"
|
ng-controller="ClickAwayController as toggle"
|
||||||
ng-show="form.series[$index].interpolate !== 'none' || form.series[$index].markers">
|
ng-show="seriesForm.interpolate !== 'none' || seriesForm.markers">
|
||||||
<div class="grid-cell label"
|
<div class="grid-cell label"
|
||||||
title="Manually set the plot line and marker color for this series.">Color</div>
|
title="Manually set the plot line and marker color for this series.">Color</div>
|
||||||
<div class="grid-cell value">
|
<div class="grid-cell value">
|
||||||
|
@ -146,10 +146,14 @@ define([
|
|||||||
this.updateStats(seriesStats);
|
this.updateStats(seriesStats);
|
||||||
}
|
}
|
||||||
}, this);
|
}, this);
|
||||||
|
this.listenTo(series, 'change:yKey', function () {
|
||||||
|
this.updateFromSeries(this.seriesCollection);
|
||||||
|
}, this);
|
||||||
},
|
},
|
||||||
untrackSeries: function (series) {
|
untrackSeries: function (series) {
|
||||||
this.stopListening(series);
|
this.stopListening(series);
|
||||||
this.resetStats();
|
this.resetStats();
|
||||||
|
this.updateFromSeries(this.seriesCollection);
|
||||||
},
|
},
|
||||||
toggleAutoscale: function (autoscale) {
|
toggleAutoscale: function (autoscale) {
|
||||||
if (autoscale && this.has('stats')) {
|
if (autoscale && this.has('stats')) {
|
||||||
@ -162,8 +166,13 @@ define([
|
|||||||
* Update yAxis format, values, and label from known series.
|
* Update yAxis format, values, and label from known series.
|
||||||
*/
|
*/
|
||||||
updateFromSeries: function (series) {
|
updateFromSeries: function (series) {
|
||||||
|
var plotModel = this.plot.get('domainObject');
|
||||||
|
var label = _.get(plotModel, 'configuration.yAxis.label');
|
||||||
var sampleSeries = series.first();
|
var sampleSeries = series.first();
|
||||||
if (!sampleSeries) {
|
if (!sampleSeries) {
|
||||||
|
if (!label) {
|
||||||
|
this.unset('label');
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,9 +181,6 @@ define([
|
|||||||
var yFormat = sampleSeries.formats[yKey];
|
var yFormat = sampleSeries.formats[yKey];
|
||||||
this.set('format', yFormat.format.bind(yFormat));
|
this.set('format', yFormat.format.bind(yFormat));
|
||||||
this.set('values', yMetadata.values);
|
this.set('values', yMetadata.values);
|
||||||
|
|
||||||
var plotModel = this.plot.get('domainObject');
|
|
||||||
var label = _.get(plotModel, 'configuration.xAxis.label');
|
|
||||||
if (!label) {
|
if (!label) {
|
||||||
var labelUnits = series.map(function (s) {
|
var labelUnits = series.map(function (s) {
|
||||||
return s.metadata.value(s.get('yKey')).units;
|
return s.metadata.value(s.get('yKey')).units;
|
||||||
|
@ -1,177 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT, Copyright (c) 2014-2018, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT 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 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([
|
|
||||||
|
|
||||||
], function () {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class for encapsulating structure and behaviour of the plot
|
|
||||||
* options form
|
|
||||||
* @memberOf platform/features/plot
|
|
||||||
* @param topic
|
|
||||||
* @constructor
|
|
||||||
*/
|
|
||||||
function PlotOptionsForm() {
|
|
||||||
|
|
||||||
/*
|
|
||||||
Defined below are the form structures for the plot options.
|
|
||||||
*/
|
|
||||||
this.xAxisForm = {
|
|
||||||
name: 'x-axis',
|
|
||||||
sections: [{
|
|
||||||
name: 'x-axis',
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
name: 'Domain',
|
|
||||||
control: 'select',
|
|
||||||
key: 'key',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
name: 'SCET',
|
|
||||||
value: 'scet'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'ERT',
|
|
||||||
value: 'ert'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'SCLK',
|
|
||||||
value: 'sclk'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'LST',
|
|
||||||
value: 'lst'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]};
|
|
||||||
|
|
||||||
this.yAxisForm = {
|
|
||||||
name: 'y-axis',
|
|
||||||
sections: [{
|
|
||||||
// Will need to be repeated for each y-axis, with a
|
|
||||||
// distinct name for each. Ideally the name of the axis
|
|
||||||
// itself.
|
|
||||||
name: 'y-axis',
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
name: 'Range',
|
|
||||||
control: 'select',
|
|
||||||
key: 'key',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
name: 'Autoselect',
|
|
||||||
value: 'auto'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'EU',
|
|
||||||
value: 'eu'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'DN',
|
|
||||||
value: 'dn'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Status',
|
|
||||||
value: 'enum'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Autoscale',
|
|
||||||
control: 'checkbox',
|
|
||||||
key: 'autoscale'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Min',
|
|
||||||
control: 'textfield',
|
|
||||||
key: 'min',
|
|
||||||
pattern: '[0-9]',
|
|
||||||
inputsize: 'sm'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Max',
|
|
||||||
control: 'textfield',
|
|
||||||
key: 'max',
|
|
||||||
pattern: '[0-9]',
|
|
||||||
inputsize: 'sm'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}]
|
|
||||||
};
|
|
||||||
this.plotSeriesForm = {
|
|
||||||
name: 'Series Options',
|
|
||||||
sections: [
|
|
||||||
{
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
name: 'Color',
|
|
||||||
control: 'color',
|
|
||||||
key: 'color'
|
|
||||||
}]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
name: 'Markers',
|
|
||||||
control: 'checkbox',
|
|
||||||
key: 'markers',
|
|
||||||
layout: 'control-first'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
rows: [
|
|
||||||
{
|
|
||||||
name: 'No Line',
|
|
||||||
control: 'radio',
|
|
||||||
key: 'interpolate',
|
|
||||||
value: 'none',
|
|
||||||
layout: 'control-first'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Step Line',
|
|
||||||
control: 'radio',
|
|
||||||
key: 'interpolate',
|
|
||||||
value: 'stepAfter',
|
|
||||||
layout: 'control-first'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Linear Line',
|
|
||||||
control: 'radio',
|
|
||||||
key: 'interpolate',
|
|
||||||
value: 'linear',
|
|
||||||
layout: 'control-first'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return PlotOptionsForm;
|
|
||||||
});
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user