Skip to content

Commit a1d658e

Browse files
authored
Merge branch 'master' into plot-float32-exceed-fix
2 parents 770696a + 7bf9832 commit a1d658e

File tree

5 files changed

+132
-61
lines changed

5 files changed

+132
-61
lines changed

e2e/tests/functional/tooltips.e2e.spec.js

+115-50
Original file line numberDiff line numberDiff line change
@@ -89,20 +89,6 @@ test.describe('Verify tooltips', () => {
8989
await expandEntireTree(page);
9090
});
9191

92-
// LAD Tables - DONE
93-
// Expanded collapsed plot legend - DONE
94-
// Object Labels - DONE
95-
// Display Layout headers - DONE
96-
// Flexible Layout headers - DONE
97-
// Tab View layout headers - DONE
98-
// Search - DONE
99-
// Gauge -
100-
// Notebook Embed - DONE
101-
// Telemetry Table -
102-
// Timeline Objects
103-
// Tree - DONE
104-
// Recent Objects
105-
10692
test('display correct paths for LAD tables', async ({ page, openmctConfig }) => {
10793
// Create LAD table
10894
await createDomainObjectWithDefaults(page, {
@@ -254,13 +240,13 @@ test.describe('Verify tooltips', () => {
254240
tooltipText = tooltipText.replace('\n', '').trim();
255241
expect(tooltipText).toBe('My Items / Test Overlay Plot');
256242

257-
// await page.keyboard.up('Control');
258-
// await page.locator('.c-plot-legend__view-control >> nth=0').click();
259-
// await page.keyboard.down('Control');
260-
// await page.locator('.plot-wrapper-expanded-legend .plot-series-name').first().hover();
261-
// tooltipText = await page.locator('.c-tooltip').textContent();
262-
// tooltipText = tooltipText.replace('\n', '').trim();
263-
// expect(tooltipText).toBe(sineWaveObject1.path);
243+
await page.keyboard.up('Control');
244+
await page.locator('.c-plot-legend__view-control >> nth=0').click();
245+
await page.keyboard.down('Control');
246+
await page.locator('.plot-wrapper-expanded-legend .plot-series-name').first().hover();
247+
tooltipText = await page.locator('.c-tooltip').textContent();
248+
tooltipText = tooltipText.replace('\n', '').trim();
249+
expect(tooltipText).toBe(sineWaveObject1.path);
264250

265251
await page.getByText('Test Stacked Plot').nth(2).hover();
266252
tooltipText = await page.locator('.c-tooltip').textContent();
@@ -345,18 +331,18 @@ test.describe('Verify tooltips', () => {
345331
expect(tooltipText).toBe(sineWaveObject3.path);
346332
});
347333

348-
test('display path for source telemetry when hovering over gauge', ({ page }) => {
349-
expect(true).toBe(true);
350-
// await createDomainObjectWithDefaults(page, {
351-
// type: 'Gauge',
352-
// name: 'Test Gauge'
353-
// });
354-
// await page.dragAndDrop(`text=${sineWaveObject3.name}`, '.c-gauge__wrapper');
355-
// await page.keyboard.down('Control');
356-
// await page.locator('.c-gauge__current-value-text-wrapper').hover();
357-
// let tooltipText = await page.locator('.c-tooltip').textContent();
358-
// tooltipText = tooltipText.replace('\n', '').trim();
359-
// expect(tooltipText).toBe(sineWaveObject3.path);
334+
test('display path for source telemetry when hovering over gauge', async ({ page }) => {
335+
await createDomainObjectWithDefaults(page, {
336+
type: 'Gauge',
337+
name: 'Test Gauge'
338+
});
339+
await page.dragAndDrop(`text=${sineWaveObject3.name}`, '.c-gauge__wrapper');
340+
await page.keyboard.down('Control');
341+
// eslint-disable-next-line playwright/no-force-option
342+
await page.locator('.c-gauge.c-dial').hover({ position: { x: 0, y: 0 }, force: true });
343+
let tooltipText = await page.locator('.c-tooltip').textContent();
344+
tooltipText = tooltipText.replace('\n', '').trim();
345+
expect(tooltipText).toBe(sineWaveObject3.path);
360346
});
361347

362348
test('display tooltip path for notebook embeds', async ({ page }) => {
@@ -373,26 +359,105 @@ test.describe('Verify tooltips', () => {
373359
expect(tooltipText).toBe(sineWaveObject3.path);
374360
});
375361

376-
// test('display tooltip path for telemetry table names', async ({ page }) => {
377-
// await setEndOffset(page, { secs: '10' });
378-
// await createDomainObjectWithDefaults(page, {
379-
// type: 'Telemetry Table',
380-
// name: 'Test Telemetry Table'
381-
// });
362+
test('display tooltip path for telemetry table names', async ({ page }) => {
363+
// set endBound to 10 seconds after start bound
364+
const url = await page.url();
365+
const parsedUrl = new URL(url.replace('#', '!'));
366+
const startBound = Number(parsedUrl.searchParams.get('tc.startBound'));
367+
const tenSecondsInMilliseconds = 10 * 1000;
368+
const endBound = startBound + tenSecondsInMilliseconds;
369+
parsedUrl.searchParams.set('tc.endBound', endBound);
370+
await page.goto(parsedUrl.href.replace('!', '#'));
371+
372+
await createDomainObjectWithDefaults(page, {
373+
type: 'Telemetry Table',
374+
name: 'Test Telemetry Table'
375+
});
376+
377+
await page.dragAndDrop(`text=${sineWaveObject1.name}`, '.c-telemetry-table');
378+
await page.dragAndDrop(`text=${sineWaveObject3.name}`, '.c-telemetry-table');
379+
380+
await page.locator('button[title="Save"]').click();
381+
await page.locator('text=Save and Finish Editing').click();
382+
await page.keyboard.down('Control');
383+
384+
await page.locator('.noselect > [title="SWG 3"]').first().hover();
385+
let tooltipText = await page.locator('.c-tooltip').textContent();
386+
tooltipText = tooltipText.replace('\n', '').trim();
387+
expect(tooltipText).toBe(sineWaveObject3.path);
388+
389+
await page.locator('.noselect > [title="SWG 1"]').first().hover();
390+
tooltipText = await page.locator('.c-tooltip').textContent();
391+
tooltipText = tooltipText.replace('\n', '').trim();
392+
expect(tooltipText).toBe(sineWaveObject1.path);
393+
});
394+
395+
test('display tooltip path for recently viewed items', async ({ page }) => {
396+
// drag up Recently Viewed pane
397+
await page
398+
.locator('.l-pane.l-pane--vertical-handle-before', {
399+
hasText: 'Recently Viewed'
400+
})
401+
.locator('.l-pane__handle')
402+
.hover();
403+
await page.mouse.down();
404+
await page.mouse.move(0, 300);
405+
await page.mouse.up();
382406

383-
// await page.dragAndDrop(`text=${sineWaveObject1.name}`, '.c-telemetry-table');
384-
// await page.dragAndDrop(`text=${sineWaveObject3.name}`, '.c-telemetry-table');
407+
await page.keyboard.down('Control');
408+
await page.getByLabel('Recent Objects').getByText(sineWaveObject3.name).hover();
409+
let tooltipText = await page.locator('.c-tooltip').textContent();
410+
tooltipText = tooltipText.replace('\n', '').trim();
411+
expect(tooltipText).toBe(sineWaveObject3.path);
385412

386-
// await page.locator('button[title="Save"]').click();
387-
// await page.locator('text=Save and Finish Editing').click();
413+
await page.getByLabel('Recent Objects').getByText(sineWaveObject2.name).hover();
414+
tooltipText = await page.locator('.c-tooltip').textContent();
415+
tooltipText = tooltipText.replace('\n', '').trim();
416+
expect(tooltipText).toBe(sineWaveObject2.path);
388417

389-
// // .c-telemetry-table__body
418+
await page.getByLabel('Recent Objects').getByText(sineWaveObject1.name).hover();
419+
tooltipText = await page.locator('.c-tooltip').textContent();
420+
tooltipText = tooltipText.replace('\n', '').trim();
421+
expect(tooltipText).toBe(sineWaveObject1.path);
422+
});
390423

391-
// await page.keyboard.down('Control');
424+
test('display tooltip path for time strips', async ({ page }) => {
425+
// Create Time Strip
426+
await createDomainObjectWithDefaults(page, {
427+
type: 'Time Strip',
428+
name: 'Test Time Strip'
429+
});
430+
// Edit Overlay Plot
431+
await page.locator('[title="Edit"]').click();
432+
await page.dragAndDrop(
433+
`text=${sineWaveObject1.name}`,
434+
'.c-object-view.is-object-type-time-strip'
435+
);
436+
await page.dragAndDrop(
437+
`text=${sineWaveObject2.name}`,
438+
'.c-object-view.is-object-type-time-strip'
439+
);
440+
await page.dragAndDrop(
441+
`text=${sineWaveObject3.name}`,
442+
'.c-object-view.is-object-type-time-strip'
443+
);
444+
await page.locator('button[title="Save"]').click();
445+
await page.locator('text=Save and Finish Editing').click();
446+
447+
await page.keyboard.down('Control');
448+
await page.getByText(sineWaveObject1.name).nth(2).hover();
449+
let tooltipText = await page.locator('.c-tooltip').textContent();
450+
tooltipText = tooltipText.replace('\n', '').trim();
451+
expect(tooltipText).toBe(sineWaveObject1.path);
392452

393-
// await page.locator('.noselect > [title="SWG 3"]').first().hover();
394-
// let tooltipText = await page.locator('.c-tooltip').textContent();
395-
// tooltipText = tooltipText.replace('\n', '').trim();
396-
// expect(tooltipText).toBe(sineWaveObject3.path);
397-
// });
453+
await page.getByText(sineWaveObject2.name).nth(2).hover();
454+
tooltipText = await page.locator('.c-tooltip').textContent();
455+
tooltipText = tooltipText.replace('\n', '').trim();
456+
expect(tooltipText).toBe(sineWaveObject2.path);
457+
458+
await page.getByText(sineWaveObject3.name).nth(2).hover();
459+
tooltipText = await page.locator('.c-tooltip').textContent();
460+
tooltipText = tooltipText.replace('\n', '').trim();
461+
expect(tooltipText).toBe(sineWaveObject3.path);
462+
});
398463
});

src/plugins/filters/components/FilterField.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
type="text"
4040
:aria-label="label"
4141
:disabled="useGlobal"
42-
:value="persistedValue(filter)"
43-
@change="updateFilterValueFromString($event, filter)"
42+
:value="persistedValue(filter.comparator)"
43+
@change="updateFilterValueFromString($event, filter.comparator)"
4444
/>
4545
</template>
4646

src/plugins/filters/components/FiltersView.vue

+3-2
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
<script>
4444
import _ from 'lodash';
45+
import { toRaw } from 'vue';
4546

4647
import FilterObject from './FilterObject.vue';
4748
import GlobalFilters from './GlobalFilters.vue';
@@ -267,14 +268,14 @@ export default {
267268
this.openmct.objects.mutate(
268269
this.providedObject,
269270
'configuration.filters',
270-
this.persistedFilters
271+
toRaw(this.persistedFilters)
271272
);
272273
},
273274
mutateConfigurationGlobalFilters() {
274275
this.openmct.objects.mutate(
275276
this.providedObject,
276277
'configuration.globalFilters',
277-
this.globalFilters
278+
toRaw(this.globalFilters)
278279
);
279280
}
280281
}

src/plugins/gauge/components/GaugeComponent.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@
226226
</template>
227227

228228
<template v-if="typeMeter">
229-
<div class="c-meter">
229+
<div class="c-meter" @mouseover.ctrl="showToolTip" @mouseleave="hideToolTip">
230230
<div v-if="displayMinMax" class="c-gauge__range c-meter__range js-gauge-meter-range">
231231
<div class="c-meter__range__high">{{ rangeHigh }}</div>
232232
<div class="c-meter__range__low">{{ rangeLow }}</div>

src/plugins/telemetryTable/components/TableFooterIndicator.vue

+11-6
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,19 @@ export default {
157157
},
158158
getFilterLabels(filterObject, metadatum) {
159159
let filterLabels = [];
160+
160161
Object.values(filterObject).forEach((comparator) => {
161-
comparator.forEach((filterValue) => {
162-
metadatum.filters[0].possibleValues.forEach((option) => {
163-
if (option.value === filterValue) {
164-
filterLabels.push(option.label);
165-
}
162+
if (typeof comparator !== 'string') {
163+
comparator.forEach((filterValue) => {
164+
metadatum.filters[0].possibleValues.forEach((option) => {
165+
if (option.value === filterValue) {
166+
filterLabels.push(option.label);
167+
}
168+
});
166169
});
167-
});
170+
} else {
171+
filterLabels.push(comparator);
172+
}
168173
});
169174

170175
return filterLabels;

0 commit comments

Comments
 (0)