Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nasa/openmct.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshi <simplyrender@gmail.com>2021-03-09 20:25:17 +0300
committerJoshi <simplyrender@gmail.com>2021-03-09 20:25:17 +0300
commit3e5ecdeb8ecb3e5983aa5e67d3c9f72c5fa75b3a (patch)
treed4f3df4d0854c275a57a5b7274e3795f428748fb
parent60eaccf6090c9946be72dc6dafa50fbbb13f81a2 (diff)
parentcfaaf6b1fefc460c2eea4512c4dd5ee4150f86ed (diff)
Merge branch 'master' of https://github.com/nasa/openmct into version-1.6.2-rc1v1.6.2-rc1version-1.6.2-rc1
-rw-r--r--src/plugins/imagery/components/Compass/Compass.vue15
-rw-r--r--src/plugins/imagery/components/Compass/CompassHUD.vue8
-rw-r--r--src/plugins/imagery/components/Compass/CompassRose.vue42
-rw-r--r--src/plugins/imagery/components/Compass/utils.js33
-rw-r--r--src/plugins/imagery/components/ImageryViewLayout.vue9
-rw-r--r--src/plugins/imagery/components/RelatedTelemetry/RelatedTelemetry.js8
6 files changed, 57 insertions, 58 deletions
diff --git a/src/plugins/imagery/components/Compass/Compass.vue b/src/plugins/imagery/components/Compass/Compass.vue
index 9080b38b8..c9527c9a3 100644
--- a/src/plugins/imagery/components/Compass/Compass.vue
+++ b/src/plugins/imagery/components/Compass/Compass.vue
@@ -27,7 +27,6 @@
>
<CompassHUD
v-if="hasCameraFieldOfView"
- :heading="heading"
:sun-heading="sunHeading"
:camera-angle-of-view="cameraAngleOfView"
:camera-pan="cameraPan"
@@ -79,26 +78,20 @@ export default {
},
computed: {
hasCameraFieldOfView() {
- return this.heading !== undefined && this.cameraPan !== undefined;
+ return this.cameraPan !== undefined && this.cameraAngleOfView > 0;
},
- // compass direction from north in degrees
+ // horizontal rotation from north in degrees
heading() {
return this.image.heading;
},
- pitch() {
- return this.image.pitch;
- },
- // compass direction from north in degrees
+ // horizontal rotation from north in degrees
sunHeading() {
return this.image.sunOrientation;
},
- // relative direction from heading in degrees
+ // horizontal rotation from north in degrees
cameraPan() {
return this.image.cameraPan;
},
- cameraTilt() {
- return this.image.cameraTilt;
- },
cameraAngleOfView() {
return CAMERA_ANGLE_OF_VIEW;
},
diff --git a/src/plugins/imagery/components/Compass/CompassHUD.vue b/src/plugins/imagery/components/Compass/CompassHUD.vue
index b3a66e090..c3920c0bd 100644
--- a/src/plugins/imagery/components/Compass/CompassHUD.vue
+++ b/src/plugins/imagery/components/Compass/CompassHUD.vue
@@ -94,10 +94,6 @@ const COMPASS_POINTS = [
export default {
props: {
- heading: {
- type: Number,
- required: true
- },
sunHeading: {
type: Number,
default: undefined
@@ -136,8 +132,8 @@ export default {
},
visibleRange() {
return [
- rotate(this.heading, this.cameraPan, -this.cameraAngleOfView / 2),
- rotate(this.heading, this.cameraPan, this.cameraAngleOfView / 2)
+ rotate(this.cameraPan, -this.cameraAngleOfView / 2),
+ rotate(this.cameraPan, this.cameraAngleOfView / 2)
];
}
}
diff --git a/src/plugins/imagery/components/Compass/CompassRose.vue b/src/plugins/imagery/components/Compass/CompassRose.vue
index 07af6a266..0a0ca27d2 100644
--- a/src/plugins/imagery/components/Compass/CompassRose.vue
+++ b/src/plugins/imagery/components/Compass/CompassRose.vue
@@ -27,7 +27,7 @@
>
<div
class="c-nsew"
- :style="rotateFrameStyle"
+ :style="compassRoseStyle"
>
<svg
class="c-nsew__minor-ticks"
@@ -118,21 +118,21 @@
</div>
<div
+ v-if="hasHeading"
class="c-spacecraft-body"
:style="headingStyle"
>
</div>
<div
- v-if="showSunHeading"
+ v-if="hasSunHeading"
class="c-sun"
:style="sunHeadingStyle"
></div>
<div
- v-if="showCameraFOV"
class="c-cam-field"
- :style="cameraHeadingStyle"
+ :style="cameraPanStyle"
>
<div class="cam-field-half cam-field-half-l">
<div
@@ -177,16 +177,10 @@ export default {
}
},
computed: {
- cameraHeading() {
- return rotate(this.heading, this.cameraPan);
- },
- compassHeading() {
- return this.lockCompass ? this.cameraHeading : 0;
- },
north() {
- return rotate(this.compassHeading, -this.cameraHeading);
+ return this.lockCompass ? rotate(-this.cameraPan) : 0;
},
- rotateFrameStyle() {
+ compassRoseStyle() {
return { transform: `rotate(${ this.north }deg)` };
},
northTextTransform() {
@@ -216,6 +210,9 @@ export default {
west: `translate(50,87) ${ rotation }`
};
},
+ hasHeading() {
+ return this.heading !== undefined;
+ },
headingStyle() {
const rotation = rotate(this.north, this.heading);
@@ -223,14 +220,7 @@ export default {
transform: `translateX(-50%) rotate(${ rotation }deg)`
};
},
- cameraHeadingStyle() {
- const rotation = rotate(this.north, this.cameraHeading);
-
- return {
- transform: `rotate(${ rotation }deg)`
- };
- },
- showSunHeading() {
+ hasSunHeading() {
return this.sunHeading !== undefined;
},
sunHeadingStyle() {
@@ -240,18 +230,22 @@ export default {
transform: `rotate(${ rotation }deg)`
};
},
- showCameraFOV() {
- return this.cameraPan !== undefined && this.cameraAngleOfView > 0;
+ cameraPanStyle() {
+ const rotation = rotate(this.north, this.cameraPan);
+
+ return {
+ transform: `rotate(${ rotation }deg)`
+ };
},
// left half of camera field of view
- // rotated counter-clockwise from camera field of view heading
+ // rotated counter-clockwise from camera pan angle
cameraFOVStyleLeftHalf() {
return {
transform: `translateX(50%) rotate(${ -this.cameraAngleOfView / 2 }deg)`
};
},
// right half of camera field of view
- // rotated clockwise from camera field of view heading
+ // rotated clockwise from camera pan angle
cameraFOVStyleRightHalf() {
return {
transform: `translateX(-50%) rotate(${ this.cameraAngleOfView / 2 }deg)`
diff --git a/src/plugins/imagery/components/Compass/utils.js b/src/plugins/imagery/components/Compass/utils.js
index 67e82f5db..2d6a0a8a6 100644
--- a/src/plugins/imagery/components/Compass/utils.js
+++ b/src/plugins/imagery/components/Compass/utils.js
@@ -1,23 +1,28 @@
-export function rotate(direction, ...rotations) {
+/**
+ *
+ * sums an arbitrary number of absolute rotations
+ * (meaning rotations relative to one common direction 0)
+ * normalizes the rotation to the range [0, 360)
+ *
+ * @param {...number} rotations in degrees
+ * @returns {number} normalized sum of all rotations - [0, 360) degrees
+ */
+export function rotate(...rotations) {
const rotation = rotations.reduce((a, b) => a + b, 0);
- return normalizeCompassDirection(direction + rotation);
-}
-
-export function normalizeCompassDirection(degrees) {
- const base = degrees % 360;
-
- return base >= 0 ? base : 360 + base;
+ return normalizeCompassDirection(rotation);
}
export function inRange(degrees, [min, max]) {
+ const point = rotate(degrees);
+
return min > max
- ? (degrees >= min && degrees < 360) || (degrees <= max && degrees >= 0)
- : degrees >= min && degrees <= max;
+ ? (point >= min && point < 360) || (point <= max && point >= 0)
+ : point >= min && point <= max;
}
export function percentOfRange(degrees, [min, max]) {
- let distance = degrees;
+ let distance = rotate(degrees);
let minRange = min;
let maxRange = max;
@@ -31,3 +36,9 @@ export function percentOfRange(degrees, [min, max]) {
return (distance - minRange) / (maxRange - minRange);
}
+
+function normalizeCompassDirection(degrees) {
+ const base = degrees % 360;
+
+ return base >= 0 ? base : 360 + base;
+}
diff --git a/src/plugins/imagery/components/ImageryViewLayout.vue b/src/plugins/imagery/components/ImageryViewLayout.vue
index 07defd9ba..037a18728 100644
--- a/src/plugins/imagery/components/ImageryViewLayout.vue
+++ b/src/plugins/imagery/components/ImageryViewLayout.vue
@@ -348,7 +348,7 @@ export default {
// related telemetry keys
this.spacecraftPositionKeys = ['positionX', 'positionY', 'positionZ'];
- this.spacecraftOrientationKeys = ['heading', 'roll', 'pitch'];
+ this.spacecraftOrientationKeys = ['heading'];
this.cameraKeys = ['cameraPan', 'cameraTilt'];
this.sunKeys = ['sunOrientation'];
@@ -468,7 +468,12 @@ export default {
// set data ON image telemetry as well as in focusedImageRelatedTelemetry
for (let key of this.relatedTelemetry.keys) {
- if (this.relatedTelemetry[key] && this.relatedTelemetry[key].historical) {
+ if (
+ this.relatedTelemetry[key]
+ && this.relatedTelemetry[key].historical
+ && this.relatedTelemetry[key].requestLatestFor
+
+ ) {
let valuesOnTelemetry = this.relatedTelemetry[key].hasTelemetryOnDatum;
let value = await this.getMostRecentRelatedTelemetry(key, this.focusedImage);
diff --git a/src/plugins/imagery/components/RelatedTelemetry/RelatedTelemetry.js b/src/plugins/imagery/components/RelatedTelemetry/RelatedTelemetry.js
index 272552126..b4393044c 100644
--- a/src/plugins/imagery/components/RelatedTelemetry/RelatedTelemetry.js
+++ b/src/plugins/imagery/components/RelatedTelemetry/RelatedTelemetry.js
@@ -73,7 +73,7 @@ export default class RelatedTelemetry {
await this._initializeHistorical(key);
}
- if (this[key].realtime && this[key].realtime.telemetryObjectId) {
+ if (this[key].realtime && this[key].realtime.telemetryObjectId && this[key].realtime.telemetryObjectId !== '') {
await this._intializeRealtime(key);
}
}
@@ -82,7 +82,9 @@ export default class RelatedTelemetry {
}
async _initializeHistorical(key) {
- if (this[key].historical.telemetryObjectId) {
+ if (!this[key].historical.telemetryObjectId) {
+ this[key].historical.hasTelemetryOnDatum = true;
+ } else if (this[key].historical.telemetryObjectId !== '') {
this[key].historicalDomainObject = await this._openmct.objects.get(this[key].historical.telemetryObjectId);
this[key].requestLatestFor = async (datum) => {
@@ -96,8 +98,6 @@ export default class RelatedTelemetry {
return results[results.length - 1];
};
- } else {
- this[key].historical.hasTelemetryOnDatum = true;
}
}