1.7.4 stable master (#4015)

This commit is contained in:
Shefali Joshi 2021-07-13 13:59:37 -07:00 committed by GitHub
parent 41b860a547
commit 4b85360446
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 102 additions and 71 deletions

View File

@ -181,7 +181,7 @@ define([
], ],
"category": "contextual", "category": "contextual",
"name": "Stop", "name": "Stop",
"cssClass": "icon-box", "cssClass": "icon-box-round-corners",
"priority": "preferred" "priority": "preferred"
} }
], ],

View File

@ -101,7 +101,7 @@ define(
name: "Pause" name: "Pause"
}); });
mockStop.getMetadata.and.returnValue({ mockStop.getMetadata.and.returnValue({
cssClass: "icon-box", cssClass: "icon-box-round-corners",
name: "Stop" name: "Stop"
}); });
mockScope.domainObject = mockDomainObject; mockScope.domainObject = mockDomainObject;

View File

@ -45,6 +45,7 @@ export default class URLTimeSettingsSynchronizer {
} }
initialize() { initialize() {
this.updateTimeSettings();
this.openmct.router.on('change:params', this.updateTimeSettings); this.openmct.router.on('change:params', this.updateTimeSettings);
TIME_EVENTS.forEach(event => { TIME_EVENTS.forEach(event => {

View File

@ -41,7 +41,7 @@ export default class ConditionManager extends EventEmitter {
this.subscriptions = {}; this.subscriptions = {};
this.telemetryObjects = {}; this.telemetryObjects = {};
this.testData = { this.testData = {
conditionTestData: [], conditionTestInputs: this.conditionSetDomainObject.configuration.conditionTestData,
applied: false applied: false
}; };
this.initialize(); this.initialize();
@ -154,9 +154,11 @@ export default class ConditionManager extends EventEmitter {
updateConditionDescription(condition) { updateConditionDescription(condition) {
const found = this.conditionSetDomainObject.configuration.conditionCollection.find(conditionConfiguration => (conditionConfiguration.id === condition.id)); const found = this.conditionSetDomainObject.configuration.conditionCollection.find(conditionConfiguration => (conditionConfiguration.id === condition.id));
if (found.summary !== condition.description) {
found.summary = condition.description; found.summary = condition.description;
this.persistConditions(); this.persistConditions();
} }
}
initCondition(conditionConfiguration, index) { initCondition(conditionConfiguration, index) {
let condition = new Condition(conditionConfiguration, this.openmct, this); let condition = new Condition(conditionConfiguration, this.openmct, this);
@ -414,9 +416,11 @@ export default class ConditionManager extends EventEmitter {
} }
updateTestData(testData) { updateTestData(testData) {
if (!_.isEqual(testData, this.testData)) {
this.testData = testData; this.testData = testData;
this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionTestData', this.testData.conditionTestInputs); this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionTestData', this.testData.conditionTestInputs);
} }
}
persistConditions() { persistConditions() {
this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionCollection', this.conditionSetDomainObject.configuration.conditionCollection); this.openmct.objects.mutate(this.conditionSetDomainObject, 'configuration.conditionCollection', this.conditionSetDomainObject.configuration.conditionCollection);

View File

@ -280,7 +280,7 @@ describe("The Imagery View Layout", () => {
expect(imageInfo.url.indexOf(imageTelemetry[COUNT - 1].timeId)).not.toEqual(-1); expect(imageInfo.url.indexOf(imageTelemetry[COUNT - 1].timeId)).not.toEqual(-1);
}); });
it("should show the clicked thumbnail as the main image", (done) => { xit("should show the clicked thumbnail as the main image", (done) => {
const target = imageTelemetry[5].url; const target = imageTelemetry[5].url;
parent.querySelectorAll(`img[src='${target}']`)[0].click(); parent.querySelectorAll(`img[src='${target}']`)[0].click();
Vue.nextTick(() => { Vue.nextTick(() => {
@ -317,7 +317,7 @@ describe("The Imagery View Layout", () => {
}); });
}); });
it("should navigate via arrow keys", (done) => { xit("should navigate via arrow keys", (done) => {
let keyOpts = { let keyOpts = {
element: parent.querySelector('.c-imagery'), element: parent.querySelector('.c-imagery'),
key: 'ArrowLeft', key: 'ArrowLeft',

View File

@ -101,7 +101,6 @@ export default {
buttons: [ buttons: [
{ {
label: 'Cancel', label: 'Cancel',
emphasis: true,
callback: () => { callback: () => {
painterroInstance.dismiss(); painterroInstance.dismiss();
annotateOverlay.dismiss(); annotateOverlay.dismiss();
@ -109,6 +108,7 @@ export default {
}, },
{ {
label: 'Save', label: 'Save',
emphasis: true,
callback: () => { callback: () => {
painterroInstance.save((snapshotObject) => { painterroInstance.save((snapshotObject) => {
annotateOverlay.dismiss(); annotateOverlay.dismiss();

View File

@ -7,10 +7,10 @@
<div class="c-object-label__type-icon icon-camera"></div> <div class="c-object-label__type-icon icon-camera"></div>
<div class="c-object-label__name"> <div class="c-object-label__name">
Notebook Snapshots Notebook Snapshots
<span v-if="snapshots.length" </div>
<div v-if="snapshots.length"
class="l-browse-bar__object-details" class="l-browse-bar__object-details"
>&nbsp;{{ snapshots.length }} of {{ getNotebookSnapshotMaxCount() }} >{{ snapshots.length }} of {{ getNotebookSnapshotMaxCount() }}
</span>
</div> </div>
</div> </div>
<PopupMenu v-if="snapshots.length > 0" <PopupMenu v-if="snapshots.length > 0"

View File

@ -4,8 +4,10 @@
<div class="l-browse-bar__start"> <div class="l-browse-bar__start">
<div class="l-browse-bar__object-name--w"> <div class="l-browse-bar__object-name--w">
<span class="c-object-label l-browse-bar__object-name" <span class="c-object-label l-browse-bar__object-name"
v-bind:class="cssClass"
> >
<span class="c-object-label__type-icon"
v-bind:class="cssClass"
></span>
<span class="c-object-label__name">{{ name }}</span> <span class="c-object-label__name">{{ name }}</span>
</span> </span>
</div> </div>

View File

@ -49,10 +49,6 @@ describe('the plugin', function () {
child.style.height = '480px'; child.style.height = '480px';
element.appendChild(child); element.appendChild(child);
openmct.time.timeSystem('utc', {
start: 1597160002854,
end: 1597181232854
});
openmct.on('start', done); openmct.on('start', done);
openmct.start(appHolder); openmct.start(appHolder);
}); });
@ -105,6 +101,11 @@ describe('the plugin', function () {
let planView; let planView;
beforeEach(() => { beforeEach(() => {
openmct.time.timeSystem('utc', {
start: 1597160002854,
end: 1597181232854
});
planDomainObject = { planDomainObject = {
identifier: { identifier: {
key: 'test-object', key: 'test-object',

View File

@ -427,9 +427,12 @@ export default {
this.skipReloadOnInteraction = false; this.skipReloadOnInteraction = false;
this.loadMoreData(newRange, true); this.loadMoreData(newRange, true);
} else { } else {
// If we're not panning or zooming (time conductor and plot x-axis times are not out of sync)
// Drop any data that is more than 1x (max-min) before min. // Drop any data that is more than 1x (max-min) before min.
// Limit these purges to once a second. // Limit these purges to once a second.
if (!this.nextPurge || this.nextPurge < Date.now()) { const isPanningOrZooming = this.isTimeOutOfSync;
const purgeRecords = !isPanningOrZooming && (!this.nextPurge || (this.nextPurge < Date.now()));
if (purgeRecords) {
const keepRange = { const keepRange = {
min: newRange.min - (newRange.max - newRange.min), min: newRange.min - (newRange.max - newRange.min),
max: newRange.max max: newRange.max

View File

@ -279,6 +279,10 @@ describe("the plugin", function () {
let plotView; let plotView;
beforeEach(() => { beforeEach(() => {
openmct.time.timeSystem("utc", {
start: 0,
end: 4
});
const getFunc = openmct.$injector.get; const getFunc = openmct.$injector.get;
spyOn(openmct.$injector, "get") spyOn(openmct.$injector, "get")
.withArgs("exportImageService").and.returnValue({ .withArgs("exportImageService").and.returnValue({

View File

@ -121,6 +121,11 @@ describe("the plugin", () => {
let tableInstance; let tableInstance;
beforeEach(() => { beforeEach(() => {
openmct.time.timeSystem('utc', {
start: 0,
end: 4
});
testTelemetryObject = { testTelemetryObject = {
identifier: { identifier: {
namespace: "", namespace: "",

View File

@ -237,7 +237,6 @@
} }
} }
// Prototype
[class^='pr-tc-input-menu'] { [class^='pr-tc-input-menu'] {
// Uses ^= here to target both start and end menus // Uses ^= here to target both start and end menus
background: $colorBodyBg; background: $colorBodyBg;
@ -247,8 +246,7 @@
grid-column-gap: 3px; grid-column-gap: 3px;
grid-row-gap: 4px; grid-row-gap: 4px;
align-items: start; align-items: start;
filter: $filterMenu;
filter: brightness(1.4);
box-shadow: $shdwMenu; box-shadow: $shdwMenu;
padding: $interiorMargin; padding: $interiorMargin;
position: absolute; position: absolute;

View File

@ -237,11 +237,12 @@ $shdwSelect: rgba(black, 0.5) 0 0.5px 3px;
$controlDisabledOpacity: 0.2; $controlDisabledOpacity: 0.2;
// Menus // Menus
$colorMenuBg: pullForward($colorBodyBg, 15%); $colorMenuBg: $colorBodyBg;
$colorMenuFg: pullForward($colorBodyFg, 30%); $colorMenuFg: $colorBodyFg;
$colorMenuIc: pullForward($colorKey, 15%); $colorMenuIc: $colorKey;
$colorMenuHovBg: $colorMenuIc; $filterMenu: brightness(1.4);
$colorMenuHovFg: pullForward($colorMenuFg, 10%); $colorMenuHovBg: rgba($colorKey, 0.5);
$colorMenuHovFg: $colorBodyFgEm;
$colorMenuHovIc: $colorMenuHovFg; $colorMenuHovIc: $colorMenuHovFg;
$colorMenuElementHilite: pullForward($colorMenuBg, 10%); $colorMenuElementHilite: pullForward($colorMenuBg, 10%);
$shdwMenu: rgba(black, 0.5) 0 1px 5px; $shdwMenu: rgba(black, 0.5) 0 1px 5px;

View File

@ -241,11 +241,12 @@ $shdwSelect: rgba(black, 0.5) 0 0.5px 3px;
$controlDisabledOpacity: 0.2; $controlDisabledOpacity: 0.2;
// Menus // Menus
$colorMenuBg: pullForward($colorBodyBg, 15%); $colorMenuBg: $colorBodyBg;
$colorMenuFg: pullForward($colorBodyFg, 30%); $colorMenuFg: $colorBodyFg;
$colorMenuIc: pullForward($colorKey, 15%); $colorMenuIc: $colorKey;
$colorMenuHovBg: $colorMenuIc; $filterMenu: brightness(1.4);
$colorMenuHovFg: pullForward($colorMenuFg, 10%); $colorMenuHovBg: rgba($colorKey, 0.5);
$colorMenuHovFg: $colorBodyFgEm;
$colorMenuHovIc: $colorMenuHovFg; $colorMenuHovIc: $colorMenuHovFg;
$colorMenuElementHilite: pullForward($colorMenuBg, 10%); $colorMenuElementHilite: pullForward($colorMenuBg, 10%);
$shdwMenu: rgba(black, 0.5) 0 1px 5px; $shdwMenu: rgba(black, 0.5) 0 1px 5px;

View File

@ -237,9 +237,10 @@ $shdwSelect: none;
$controlDisabledOpacity: 0.3; $controlDisabledOpacity: 0.3;
// Menus // Menus
$colorMenuBg: pushBack($colorBodyBg, 10%); $colorMenuBg: $colorBodyBg;
$colorMenuFg: pullForward($colorMenuBg, 70%); $colorMenuFg: $colorBodyFg;
$colorMenuIc: $colorKey; $colorMenuIc: $colorKey;
$filterMenu: brightness(0.95);
$colorMenuHovBg: $colorMenuIc; $colorMenuHovBg: $colorMenuIc;
$colorMenuHovFg: $colorMenuBg; $colorMenuHovFg: $colorMenuBg;
$colorMenuHovIc: $colorMenuBg; $colorMenuHovIc: $colorMenuBg;

View File

@ -458,6 +458,7 @@ select {
@mixin menuOuter() { @mixin menuOuter() {
border-radius: $basicCr; border-radius: $basicCr;
background: $colorMenuBg; background: $colorMenuBg;
filter: $filterMenu;
text-shadow: $shdwMenuText; text-shadow: $shdwMenuText;
padding: $interiorMarginSm; padding: $interiorMarginSm;
box-shadow: $shdwMenu; box-shadow: $shdwMenu;

View File

@ -490,7 +490,7 @@
} }
#snap-annotation { #snap-annotation {
$m: $interiorMargin; $m: 0; //$interiorMargin;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: absolute; position: absolute;
@ -514,21 +514,32 @@
// Holds tool buttons, color selectors, etc. // Holds tool buttons, color selectors, etc.
$h: 22px; $h: 22px;
$fs: 0.8rem; $fs: 0.8rem;
$m: $interiorMarginSm;
order: 1;
flex: 0 0 auto;
height: auto;
background-color: transparent !important;
margin-bottom: $interiorMargin;
> div > span {
display: flex; display: flex;
align-items: center; align-items: center;
font-size: $fs; height: $h + ($m * 2) !important;
margin-bottom: $interiorMarginLg;
order: 1;
flex: 0 0 auto;
background-color: transparent !important;
padding: $interiorMarginSm;
> div {
display: contents;
> * + * { margin-left: $interiorMargin !important; }
}
.ptro-tool-controls {
display: flex;
margin-left: $interiorMarginLg !important;
> * + * {
margin-left: $interiorMargin !important;
}
} }
> div,
> div > span,
.ptro-icon-btn, .ptro-icon-btn,
.ptro-named-btn, .ptro-named-btn,
.ptro-color-btn, .ptro-color-btn,
@ -538,27 +549,18 @@
.tool-controls, .tool-controls,
.ptro-input { .ptro-input {
// Lot of resets for crappy CSS in Painterro // Lot of resets for crappy CSS in Painterro
&:first-child {
margin-left: 0 !important;
}
display: inline-block;
font-family: inherit; font-family: inherit;
font-size: $fs !important; font-size: $fs !important;
height: $h !important; height: $h !important;
margin: 0 0 0 5px; margin: 0;
position: relative; position: relative;
width: auto !important;
line-height: $h !important; line-height: $h !important;
top: auto;
right: auto;
bottom: auto;
left: auto;
vertical-align: top;
} }
.ptro-tool-ctl-name { .ptro-tool-ctl-name {
border-radius: 0; border-radius: 0;
background: none; background: none;
color: $colorBodyFg;
top: auto; top: auto;
font-family: inherit; font-family: inherit;
padding: 0; padding: 0;
@ -568,13 +570,15 @@
width: $h !important; width: $h !important;
} }
.ptro-check,
.ptro-color-control, .ptro-color-control,
.ptro-icon-btn, .ptro-icon-btn,
.ptro-named-btn { .ptro-named-btn {
// Buttons in toolbar. Why the f* they're named like this is a mystery // Buttons in toolbar
background-color: $colorBtnBg; border-radius: $smallCr;
color: $colorBtnFg; box-shadow: rgba($colorBtnFg, 0.3) 0 0 0 1px;
padding: 0 $interiorMargin; color: $colorBtnFg !important;
padding: 1px $interiorMargin;
&:hover { &:hover {
background: $colorBtnBgHov; background: $colorBtnBgHov;
@ -588,6 +592,13 @@
} }
} }
.ptro-color-control,
.ptro-icon-btn,
.ptro-named-btn {
// Buttons in toolbar
background-color: $colorBtnBg;
}
.ptro-color-active-control { .ptro-color-active-control {
background: $colorBtnMajorBg !important; background: $colorBtnMajorBg !important;
color: $colorBtnMajorFg !important; color: $colorBtnMajorFg !important;

View File

@ -17,15 +17,7 @@
<div v-if="singleSelectNonObject" <div v-if="singleSelectNonObject"
class="c-inspector__selected c-inspector__selected--non-domain-object c-object-label" class="c-inspector__selected c-inspector__selected--non-domain-object c-object-label"
> >
<span class="c-object-label__type-icon" <span class="c-object-label__name">Layout Object</span>
:class="typeCssClass"
></span>
<span v-if="!activity"
class="c-object-label__name"
>Layout Object</span>
<span v-else
class="c-object-label__name"
>{{ activity.name }}</span>
</div> </div>
</div> </div>
<div v-if="multiSelect" <div v-if="multiSelect"

View File

@ -32,6 +32,7 @@
&__scrollable { &__scrollable {
overflow: auto; overflow: auto;
padding-right: $interiorMargin;
} }
&__item--empty { &__item--empty {

View File

@ -113,7 +113,7 @@ import search from '../components/search.vue';
const ITEM_BUFFER = 25; const ITEM_BUFFER = 25;
const LOCAL_STORAGE_KEY__TREE_EXPANDED = 'mct-tree-expanded'; const LOCAL_STORAGE_KEY__TREE_EXPANDED = 'mct-tree-expanded';
const RETURN_ALL_DESCDNDANTS = true; const RETURN_ALL_DESCDNDANTS = true;
const TREE_ITEM_INDENT_PX = 15; const TREE_ITEM_INDENT_PX = 18;
export default { export default {
name: 'MctTree', name: 'MctTree',

View File

@ -103,10 +103,16 @@ export default {
}, },
mounted() { mounted() {
if (this.actionCollection) { if (this.actionCollection) {
this.actionCollection.hide(HIDDEN_ACTIONS);
this.actionCollection.on('update', this.updateActionItems); this.actionCollection.on('update', this.updateActionItems);
this.updateActionItems(this.actionCollection.getActionsObject()); this.updateActionItems(this.actionCollection.getActionsObject());
} }
}, },
destroyed() {
if (this.actionCollection) {
this.actionCollection.off('update', this.updateActionItems);
}
},
methods: { methods: {
setView(view) { setView(view) {
this.$emit('setView', view); this.$emit('setView', view);
@ -116,7 +122,6 @@ export default {
delete this.actionCollection; delete this.actionCollection;
}, },
updateActionItems() { updateActionItems() {
this.actionCollection.hide(HIDDEN_ACTIONS);
this.statusBarItems = this.actionCollection.getStatusBarActions(); this.statusBarItems = this.actionCollection.getStatusBarActions();
this.menuActionItems = this.actionCollection.getVisibleActions(); this.menuActionItems = this.actionCollection.getVisibleActions();
}, },

View File

@ -8,7 +8,7 @@ let resolveFunction;
let initialHash = ''; let initialHash = '';
describe('Application router utility functions', () => { xdescribe('Application router utility functions', () => {
beforeAll(done => { beforeAll(done => {
appHolder = document.createElement('div'); appHolder = document.createElement('div');
appHolder.style.width = '640px'; appHolder.style.width = '640px';