Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2.0.4 merge into master #5297

Merged
merged 24 commits into from
Jun 9, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
378a4ca
Release 2.0.3
shefalijoshi Apr 25, 2022
286a533
Fix tick values for plots ticks in log mode and null check (#5119)
shefalijoshi Apr 26, 2022
ce28dd2
Handle scrolling to focused image on resize/new data (#5121)
shefalijoshi Apr 28, 2022
3d2d932
[LAD Tables] Use Telemetry Collections (#5127)
jvigliotta Apr 28, 2022
b7b2056
added telemetry collection to alphanumeric telemetry view (#5131)
jvigliotta Apr 28, 2022
2519e60
Added animation styling for POS and CAM; adjusted cutoff for isNewIma…
michaelrogers Apr 28, 2022
8b4a55a
Fix transactions overwriting latest objects with stale objects on sav…
davetsay Apr 28, 2022
d7d06b5
Gauge edit enabled 2.0.3 (#5133)
nikhilmandlik Apr 28, 2022
e75befa
Dynamic dial-type Gauge sizing by height and width (#5129)
charlesh88 Apr 28, 2022
a94ec34
[Telemetry Collections] Include data with start and end bounds (#5145)
jvigliotta Apr 29, 2022
f80a3c1
Reverts forced precision for log plots axis labels (#5147)
akhenry May 2, 2022
663f42a
Condition Widgets trigger hundreds of persistence calls (#5146)
nikhilmandlik May 2, 2022
610f78b
Update version for 2.0.4 (#5255)
shefalijoshi May 24, 2022
6abd395
Eliminate NaN conditions and clear stale duration (#5248)
michaelrogers May 25, 2022
2a165a4
Temp source map fix 2.0.4 (#5267)
nikhilmandlik May 26, 2022
ae1b752
Imagery Fixes for release/2.0.4 (#5282)
michaelrogers Jun 6, 2022
7cad3c0
Imagery test fixes (#5293)
shefalijoshi Jun 6, 2022
e286359
Imagery validation fix (#5295)
shefalijoshi Jun 6, 2022
36fb641
Merge branch 'master' of https://github.com/nasa/openmct into 2.0.4-m…
shefalijoshi Jun 8, 2022
9cfe420
lint fix
shefalijoshi Jun 8, 2022
4db7885
Add missing tests
shefalijoshi Jun 8, 2022
c655d29
Use the master version and ignore release/2.0.4 changes
shefalijoshi Jun 9, 2022
a750122
Merge branch 'master' into 2.0.4-master
shefalijoshi Jun 9, 2022
2281a1b
Merge branch 'master' into 2.0.4-master
jvigliotta Jun 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge branch 'master' of https://github.com/nasa/openmct into 2.0.4-m…
…aster
  • Loading branch information
shefalijoshi committed Jun 8, 2022
commit 36fb6414e6385481ca6411acad65284261e977bb
75 changes: 36 additions & 39 deletions e2e/tests/plugins/condition/condition.e2e.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,39 +32,40 @@ const { expect } = require('@playwright/test');
let conditionSetUrl;
let getConditionSetIdentifierFromUrl;

test('Create new Condition Set object and store @localStorage', async ({ page, context }) => {
//Go to baseURL
await page.goto('/', { waitUntil: 'networkidle' });
test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext();
const page = await context.newPage();
//Go to baseURL
await page.goto('/', { waitUntil: 'networkidle' });

//Click the Create button
await page.click('button:has-text("Create")');

// Click text=Condition Set
await page.click('text=Condition Set');

// Click text=OK
await Promise.all([
page.waitForNavigation(),
page.click('text=OK')
]);

await expect(page.locator('.l-browse-bar__object-name')).toContainText('Unnamed Condition Set');
//Save localStorage for future test execution
await context.storageState({ path: './e2e/tests/recycled_storage.json' });
// Click text=Condition Set
await page.locator('li:has-text("Condition Set")').click();

//Set object identifier from url
conditionSetUrl = await page.url();
console.log('conditionSetUrl ' + conditionSetUrl);
// Click text=OK
await Promise.all([
page.waitForNavigation(),
page.click('text=OK')
]);

getConditionSetIdentifierFromUrl = await conditionSetUrl.split('/').pop().split('?')[0];
console.log('getConditionSetIdentifierFromUrl ' + getConditionSetIdentifierFromUrl);
//Save localStorage for future test execution
await context.storageState({ path: './e2e/tests/recycled_storage.json' });

});
//Set object identifier from url
conditionSetUrl = await page.url();
console.log('conditionSetUrl ' + conditionSetUrl);

test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
getConditionSetIdentifierFromUrl = await conditionSetUrl.split('/').pop().split('?')[0];
console.debug('getConditionSetIdentifierFromUrl ' + getConditionSetIdentifierFromUrl);
});
test.afterAll(async ({ browser }) => {
await browser.close();
});
//Load localStorage for subsequent tests
test.use({ storageState: './e2e/tests/recycled_storage.json' });

//Begin suite of tests again localStorage
test('Condition set object properties persist in main view and inspector', async ({ page }) => {
//Navigate to baseURL with injected localStorage
Expand Down Expand Up @@ -121,7 +122,7 @@ test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
// Verify Condition Set Object is renamed in Tree
await expect(page.locator('a:has-text("Renamed Condition Set")')).toBeTruthy();
// Verify Search Tree reflects renamed Name property
await page.locator('input[type="search"]').fill('Renamed');
await page.locator('[aria-label="OpenMCT Search"] input[type="search"]').fill('Renamed');
await expect(page.locator('a:has-text("Renamed Condition Set")')).toBeTruthy();

//Reload Page
Expand All @@ -145,35 +146,31 @@ test.describe.serial('Condition Set CRUD Operations on @localStorage', () => {
// Verify Condition Set Object is renamed in Tree
await expect(page.locator('a:has-text("Renamed Condition Set")')).toBeTruthy();
// Verify Search Tree reflects renamed Name property
await page.locator('input[type="search"]').fill('Renamed');
await page.locator('[aria-label="OpenMCT Search"] input[type="search"]').fill('Renamed');
await expect(page.locator('a:has-text("Renamed Condition Set")')).toBeTruthy();
});
test('condition set object can be deleted by Search Tree Actions menu on @localStorage', async ({ page }) => {
//Navigate to baseURL
await page.goto('/', { waitUntil: 'networkidle' });

const numberOfConditionSetsToStart = await page.locator('a:has-text("Unnamed Condition Set Condition Set")').count();
//Expect Unnamed Condition Set to be visible in Main View
await expect(page.locator('a:has-text("Unnamed Condition Set Condition Set")')).toBeVisible();
await expect(page.locator('a:has-text("Unnamed Condition Set Condition Set") >> nth=0')).toBeVisible();

// Search for Unnamed Condition Set
await page.locator('input[type="search"]').fill('Unnamed Condition Set');
// Right Click to Open Actions Menu
await page.locator('a:has-text("Unnamed Condition Set")').click({
button: 'right'
});
// Click Remove Action
await page.locator('[aria-label="OpenMCT Search"] input[type="search"]').fill('Unnamed Condition Set');
// Click Search Result
await page.locator('[aria-label="OpenMCT Search"] >> text=Unnamed Condition Set').first().click();
// Click hamburger button
await page.locator('[title="More options"]').click();
// Click text=Remove
await page.locator('text=Remove').click();

await page.locator('text=OK').click();

//Expect Unnamed Condition Set to be removed in Main View
await expect(page.locator('a:has-text("Unnamed Condition Set Condition Set")')).not.toBeVisible();

await page.locator('.c-search__clear-input').click();
// Search for Unnamed Condition Set
await page.locator('input[type="search"]').fill('Unnamed Condition Set');
// Expect Unnamed Condition Set to be removed
await expect(page.locator('a:has-text("Unnamed Condition Set")')).not.toBeVisible();
const numberOfConditionSetsAtEnd = await page.locator('a:has-text("Unnamed Condition Set Condition Set")').count();
expect(numberOfConditionSetsAtEnd).toEqual(numberOfConditionSetsToStart - 1);

//Feature?
//Domain Object is still available by direct URL after delete
Expand Down
6 changes: 3 additions & 3 deletions e2e/tests/recycled_storage.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
"localStorage": [
{
"name": "tcHistory",
"value": "{\"utc\":[{\"start\":1651513945533,\"end\":1651515745533}]}"
"value": "{\"utc\":[{\"start\":1652301954635,\"end\":1652303754635}]}"
},
{
"name": "mct",
"value": "{\"mine\":{\"identifier\":{\"key\":\"mine\",\"namespace\":\"\"},\"name\":\"My Items\",\"type\":\"folder\",\"composition\":[{\"key\":\"c0f99e39-85e7-4ef7-99b1-ef52d4ed69b2\",\"namespace\":\"\"}],\"location\":\"ROOT\",\"persisted\":1651515746374,\"modified\":1651515746374},\"c0f99e39-85e7-4ef7-99b1-ef52d4ed69b2\":{\"name\":\"Unnamed Condition Set\",\"type\":\"conditionSet\",\"identifier\":{\"key\":\"c0f99e39-85e7-4ef7-99b1-ef52d4ed69b2\",\"namespace\":\"\"},\"configuration\":{\"conditionTestData\":[],\"conditionCollection\":[{\"isDefault\":true,\"id\":\"e35a066b-eb0e-4b05-a4c9-cc31dc202572\",\"configuration\":{\"name\":\"Default\",\"output\":\"Default\",\"trigger\":\"all\",\"criteria\":[]},\"summary\":\"Default condition\"}]},\"composition\":[],\"telemetry\":{},\"modified\":1651515746373,\"location\":\"mine\",\"persisted\":1651515746373}}"
"value": "{\"mine\":{\"identifier\":{\"key\":\"mine\",\"namespace\":\"\"},\"name\":\"My Items\",\"type\":\"folder\",\"composition\":[{\"key\":\"f64bea3b-58a7-4586-8c05-8b651e5f0bfd\",\"namespace\":\"\"}],\"location\":\"ROOT\",\"persisted\":1652303756008,\"modified\":1652303756007},\"f64bea3b-58a7-4586-8c05-8b651e5f0bfd\":{\"name\":\"Unnamed Condition Set\",\"type\":\"conditionSet\",\"identifier\":{\"key\":\"f64bea3b-58a7-4586-8c05-8b651e5f0bfd\",\"namespace\":\"\"},\"configuration\":{\"conditionTestData\":[],\"conditionCollection\":[{\"isDefault\":true,\"id\":\"73f2d9ae-d1f3-4561-b7fc-ecd5df557249\",\"configuration\":{\"name\":\"Default\",\"output\":\"Default\",\"trigger\":\"all\",\"criteria\":[]},\"summary\":\"Default condition\"}]},\"composition\":[],\"telemetry\":{},\"modified\":1652303755999,\"location\":\"mine\",\"persisted\":1652303756002}}"
},
{
"name": "mct-tree-expanded",
Expand All @@ -19,4 +19,4 @@
]
}
]
}
}
9 changes: 9 additions & 0 deletions src/MCT.js
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,15 @@ define([

this.branding = BrandingAPI.default;

/**
* MCT's annotation API that enables
* human-created comments and categorization linked to data products
* @type {module:openmct.AnnotationAPI}
* @memberof module:openmct.MCT#
* @name annotation
*/
this.annotation = new api.AnnotationAPI(this);

// Plugins that are installed by default
this.install(this.plugins.Plot());
this.install(this.plugins.TelemetryTable.default());
Expand Down
54 changes: 40 additions & 14 deletions src/plugins/gauge/components/Gauge.vue
Original file line number Diff line number Diff line change
Expand Up @@ -64,11 +64,11 @@
</svg>

<svg
v-if="displayCurVal"
class="c-dial__current-value-text-wrapper"
viewBox="0 0 512 512"
>
<svg
v-if="displayCurVal"
class="c-dial__current-value-text-sizer"
:viewBox="curValViewBox"
>
Expand All @@ -79,36 +79,46 @@
style="transform: translate(50%, 70%)"
>{{ curVal }}</text>
</svg>
<svg
class="c-gauge__units c-dial__units"
viewBox="0 0 50 100"
>
<text
class="c-dial__units-text"
lengthAdjust="spacing"
text-anchor="middle"
style="transform: translate(50%, 72%)"
>{{ units }}</text>
</svg>
</svg>

<svg
class="c-dial__bg"
viewBox="0 0 10 10"
>

<g
v-if="limitLow !== null && dialLowLimitDeg < getLimitDegree('low', 'max')"
v-if="isDialLowLimit"
class="c-dial__limit-low"
:style="`transform: rotate(${dialLowLimitDeg}deg)`"
>
<rect
v-if="dialLowLimitDeg >= getLimitDegree('low', 'q1')"
v-if="isDialLowLimitLow"
class="c-dial__low-limit__low"
x="5"
y="5"
width="5"
height="5"
/>
<rect
v-if="dialLowLimitDeg >= getLimitDegree('low', 'q2')"
v-if="isDialLowLimitMid"
class="c-dial__low-limit__mid"
x="5"
y="0"
width="5"
height="5"
/>
<rect
v-if="dialLowLimitDeg >= getLimitDegree('low', 'q3')"
v-if="isDialLowLimitHigh"
class="c-dial__low-limit__high"
x="0"
y="0"
Expand All @@ -118,28 +128,28 @@
</g>

<g
v-if="limitHigh !== null && dialHighLimitDeg < getLimitDegree('high', 'max')"
v-if="isDialHighLimit"
class="c-dial__limit-high"
:style="`transform: rotate(${dialHighLimitDeg}deg)`"
>
<rect
v-if="dialHighLimitDeg <= getLimitDegree('high', 'max')"
v-if="isDialHighLimitLow"
class="c-dial__high-limit__low"
x="0"
y="5"
width="5"
height="5"
/>
<rect
v-if="dialHighLimitDeg <= getLimitDegree('high', 'q2')"
v-if="isDialHighLimitMid"
class="c-dial__high-limit__mid"
x="0"
y="0"
width="5"
height="5"
/>
<rect
v-if="dialHighLimitDeg <= getLimitDegree('high', 'q3')"
v-if="isDialHighLimitHigh"
class="c-dial__high-limit__high"
x="5"
y="0"
Expand All @@ -159,23 +169,23 @@
:style="`transform: rotate(${degValueFilledDial}deg)`"
>
<rect
v-if="degValue >= getLimitDegree('low', 'q1')"
v-if="isDialFilledValueLow"
class="c-dial__filled-value__low"
x="5"
y="5"
width="5"
height="5"
/>
<rect
v-if="degValue >= getLimitDegree('low', 'q2')"
v-if="isDialFilledValueMid"
class="c-dial__filled-value__mid"
x="5"
y="0"
width="5"
height="5"
/>
<rect
v-if="degValue >= getLimitDegree('low', 'q3')"
v-if="isDialFilledValueHigh"
class="c-dial__filled-value__high"
x="0"
y="0"
Expand Down Expand Up @@ -262,7 +272,23 @@
lengthAdjust="spacing"
text-anchor="middle"
style="transform: translate(50%, 70%)"
>{{ curVal }}</text>
>
<tspan>{{ curVal }}</tspan>
<tspan
v-if="typeMeterHorizontal && displayUnits"
class="c-gauge__units"
font-size="10"
>{{ units }}</tspan>
</text>
<text
v-if="typeMeterVertical && displayUnits"
dy="12"
class="c-gauge__units"
font-size="10"
lengthAdjust="spacing"
text-anchor="middle"
style="transform: translate(50%, 70%)"
>{{ units }}</text>
</svg>
</svg>
</div>
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/gauge/gauge.scss
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ svg[class*='c-dial'] {
transition: transform $transitionTimeGauge;
}

&__current-value-text {
&__current-value-text,
&__units-text {
fill: $colorGaugeTextValue;
font-family: $heroFont;
}
Expand Down
56 changes: 16 additions & 40 deletions src/plugins/imagery/components/ImageControls.vue
Original file line number Diff line number Diff line change
Expand Up @@ -50,46 +50,22 @@
@handleResetImage="handleResetImage"
/>

<button
class="c-button icon-reset t-btn-zoom-reset"
title="Remove zoom and pan"
@click="handleResetImage"
></button>

<span class="c-image-controls__zoom-factor">x{{ formattedZoomFactor }}</span>
</div>
<div class="c-image-controls__control c-image-controls__brightness-contrast">
<span
class="c-image-controls__sliders"
draggable="true"
@dragstart.stop.prevent
>
<div class="c-image-controls__input icon-brightness">
<input
v-model="filters.brightness"
type="range"
min="0"
max="500"
@change="notifyFiltersChanged"
>
</div>
<div class="c-image-controls__input icon-contrast">
<input
v-model="filters.contrast"
type="range"
min="0"
max="500"
@change="notifyFiltersChanged"
>
</div>
</span>
<span class="t-reset-btn-holder c-imagery__lc__reset-btn c-image-controls__btn-reset">
<button
class="c-icon-link icon-reset t-btn-reset"
@click="handleResetFilters"
></button>
</span>
</div>
<imagery-view-menu-switcher
class="--show-if-less-than-220"
:icon-class="'icon-magnify'"
:title="'Zoom settings'"
>
<zoom-settings
:pan-zoom-locked="panZoomLocked"
:class="'c-control-menu c-menu--has-close-btn'"
:zoom-factor="zoomFactor"
:is-menu="true"
@zoomOut="zoomOut"
@zoomIn="zoomIn"
@toggleZoomLock="toggleZoomLock"
@handleResetImage="handleResetImage"
/>
</imagery-view-menu-switcher>
</div>
</template>

Expand Down
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.