Ensure object specific actions load in previews (#7504)

* add actions after element has had chance to render

* add test

* remove test.only
This commit is contained in:
Scott Bell 2024-02-15 19:00:04 +01:00 committed by GitHub
parent cd560bceed
commit 4fbccd4c91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 79 additions and 40 deletions

View File

@ -1,33 +0,0 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2024, 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.
*****************************************************************************/
/*
* This test suite is dedicated to testing the preview plugin.
*/
import { test } from '../../../../pluginFixtures.js';
test.describe('Preview mode', () => {
test.fixme('all context menu items are available for a telemetry table', async ({ page }) => {
// compare the context menu options when viewing a telemetry table directly
// vs when it is presented in preview mode (e.g. edit mode is enabled and the table is clicked on from the tree)
});
});

View File

@ -0,0 +1,73 @@
/*****************************************************************************
* Open MCT, Copyright (c) 2014-2024, 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.
*****************************************************************************/
/*
* This test suite is dedicated to testing the preview plugin.
*/
import { createDomainObjectWithDefaults, expandEntireTree } from '../../../../appActions.js';
import { expect, test } from '../../../../pluginFixtures.js';
test.describe('Preview mode', () => {
test('all context menu items are available for a telemetry table', async ({ page }) => {
await page.goto('./', { waitUntil: 'domcontentloaded' });
// Create a Display Layout
const displayLayout = await createDomainObjectWithDefaults(page, {
type: 'Display Layout'
});
// Create a Telemetry Table
const telemetryTable = await createDomainObjectWithDefaults(page, {
type: 'Telemetry Table',
parent: displayLayout.uuid
});
// Create a Sinewave Generator
await createDomainObjectWithDefaults(page, {
type: 'Sine Wave Generator',
parent: telemetryTable.uuid
});
await page.goto(displayLayout.url);
await page.getByLabel('View menu items').click();
await expect(page.getByLabel('Export Marked Rows')).toBeVisible();
await page.getByRole('menuitem', { name: 'Large View' }).click();
await page.getByLabel('Overlay').getByLabel('More actions').click();
await expect(page.getByLabel('Export Table Data')).toBeVisible();
await expect(page.getByLabel('Export Marked Rows')).toBeVisible();
await page.getByRole('menuitem', { name: 'Pause' }).click();
await page.getByLabel('Close').click();
await expandEntireTree(page);
await page.getByLabel('Edit Object').click();
const treePane = page.getByRole('tree', {
name: 'Main Tree'
});
const telemetryTableTreeItem = treePane.getByRole('treeitem', {
name: new RegExp(telemetryTable.name)
});
await telemetryTableTreeItem.locator('a').click();
await page.getByLabel('Overlay').getByLabel('More actions').click();
await expect(page.getByLabel('Export Table Data')).toBeVisible();
await expect(page.getByLabel('Export Marked Rows')).toBeVisible();
});
});

View File

@ -35,6 +35,8 @@
</template>
<script>
import { nextTick } from 'vue';
import StyleRuleManager from '@/plugins/condition/StyleRuleManager';
import { STYLE_CONSTANTS } from '@/plugins/condition/utils/constants';
@ -108,11 +110,6 @@ export default {
this.addExistingViewBackToParent();
}
},
updated() {
// FIXME: fixes a problem where the some context menu items are not available when in Preview Mode
// see https://github.com/nasa/openmct/issues/7158
this.getActionsCollection(this.view);
},
methods: {
clear() {
if (this.view) {
@ -148,8 +145,6 @@ export default {
this.view = this.currentViewProvider.view(this.domainObject, this.objectPath);
}
this.getActionsCollection(this.view);
if (isExistingView) {
this.viewContainer.appendChild(this.existingViewElement);
} else {
@ -162,6 +157,10 @@ export default {
}
this.initObjectStyles();
nextTick(() => {
this.getActionsCollection(this.view);
});
},
addExistingViewBackToParent() {
this.existingView.parentElement.appendChild(this.existingViewElement);