Compare commits
	
		
			17 Commits
		
	
	
		
			nb-embed-e
			...
			mct5629-v3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d19e1b7f33 | ||
| 
						 | 
					fcac781a1b | ||
| 
						 | 
					284f197c5e | ||
| 
						 | 
					7c35a7b732 | ||
| 
						 | 
					2fbe70744c | ||
| 
						 | 
					2267deea7a | ||
| 
						 | 
					369fbb26b9 | ||
| 
						 | 
					b46a08113e | ||
| 
						 | 
					ba35de0df6 | ||
| 
						 | 
					6064a0d4fb | ||
| 
						 | 
					f8b9d9274b | ||
| 
						 | 
					df0489ab69 | ||
| 
						 | 
					1a8e5f081d | ||
| 
						 | 
					ab8048cfda | ||
| 
						 | 
					ae99120bf5 | ||
| 
						 | 
					bc0c8a3cbf | ||
| 
						 | 
					4186f8d147 | 
@@ -0,0 +1,66 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT, Copyright (c) 2014-2022, 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
const { test, expect } = require('../../../../pluginFixtures');
 | 
			
		||||
const { createDomainObjectWithDefaults } = require('../../../../appActions');
 | 
			
		||||
 | 
			
		||||
test.describe('Testing Flexible Layout @unstable', () => {
 | 
			
		||||
    test.beforeEach(async ({ page }) => {
 | 
			
		||||
        await page.goto('./', { waitUntil: 'networkidle' });
 | 
			
		||||
 | 
			
		||||
        // Create Sine Wave Generator
 | 
			
		||||
        await createDomainObjectWithDefaults(page, {
 | 
			
		||||
            type: 'Sine Wave Generator',
 | 
			
		||||
            name: "Test Sine Wave Generator"
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // Create Clock Object
 | 
			
		||||
        await createDomainObjectWithDefaults(page, {
 | 
			
		||||
            type: 'Clock',
 | 
			
		||||
            name: "Test Clock"
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
    test('panes have the appropriate draggable attribute while in Edit and Browse modes', async ({ page }) => {
 | 
			
		||||
        // Create a Flexible Layout
 | 
			
		||||
        await createDomainObjectWithDefaults(page, {
 | 
			
		||||
            type: 'Flexible Layout',
 | 
			
		||||
            name: "Test Flexible Layout"
 | 
			
		||||
        });
 | 
			
		||||
        // Edit Flexible Layout
 | 
			
		||||
        await page.locator('[title="Edit"]').click();
 | 
			
		||||
 | 
			
		||||
        // Expand the 'My Items' folder in the left tree
 | 
			
		||||
        await page.locator('.c-tree__item__view-control.c-disclosure-triangle').first().click();
 | 
			
		||||
        // Add the Sine Wave Generator and Clock to the Flexible Layout
 | 
			
		||||
        await page.dragAndDrop('text=Test Sine Wave Generator', '.c-fl__container.is-empty');
 | 
			
		||||
        await page.dragAndDrop('text=Test Clock', '.c-fl__container.is-empty');
 | 
			
		||||
        // Check that panes can be dragged while Flexible Layout is in Edit mode
 | 
			
		||||
        let dragWrapper = await page.locator('.c-fl-container__frames-holder .c-fl-frame__drag-wrapper').first();
 | 
			
		||||
        await expect(dragWrapper).toHaveAttribute('draggable', 'true');
 | 
			
		||||
        // Save Flexible Layout
 | 
			
		||||
        await page.locator('button[title="Save"]').click();
 | 
			
		||||
        await page.locator('text=Save and Finish Editing').click();
 | 
			
		||||
        // Check that panes are not draggable while Flexible Layout is in Browse mode
 | 
			
		||||
        dragWrapper = await page.locator('.c-fl-container__frames-holder .c-fl-frame__drag-wrapper').first();
 | 
			
		||||
        await expect(dragWrapper).toHaveAttribute('draggable', 'false');
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "openmct",
 | 
			
		||||
  "version": "2.0.8",
 | 
			
		||||
  "version": "2.1.0",
 | 
			
		||||
  "description": "The Open MCT core platform",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@babel/eslint-parser": "7.18.9",
 | 
			
		||||
 
 | 
			
		||||
@@ -281,6 +281,10 @@ export default {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (!this.isEditing) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            let containerId = event.dataTransfer.getData('containerid');
 | 
			
		||||
            let container = this.containers.filter((c) => c.id === containerId)[0];
 | 
			
		||||
            let containerPos = this.containers.indexOf(container);
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@
 | 
			
		||||
    <div
 | 
			
		||||
        ref="frame"
 | 
			
		||||
        class="c-frame c-fl-frame__drag-wrapper is-selectable u-inspectable is-moveable"
 | 
			
		||||
        draggable="true"
 | 
			
		||||
        :draggable="draggable"
 | 
			
		||||
        @dragstart="initDrag"
 | 
			
		||||
    >
 | 
			
		||||
        <object-frame
 | 
			
		||||
@@ -93,6 +93,9 @@ export default {
 | 
			
		||||
    computed: {
 | 
			
		||||
        hasFrame() {
 | 
			
		||||
            return !this.frame.noFrame;
 | 
			
		||||
        },
 | 
			
		||||
        draggable() {
 | 
			
		||||
            return this.isEditing;
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
 
 | 
			
		||||
@@ -110,7 +110,23 @@ export default {
 | 
			
		||||
    },
 | 
			
		||||
    mounted() {
 | 
			
		||||
        this.isEditing = this.openmct.editor.isEditing();
 | 
			
		||||
        this.timestamp = Date.now();
 | 
			
		||||
        this.timestamp = this.openmct.time.clock()?.currentValue;
 | 
			
		||||
        this.openmct.time.on('clock', (newClock) => {
 | 
			
		||||
            this.filterValue = this.domainObject.configuration.filter;
 | 
			
		||||
            //newclock can be undefined
 | 
			
		||||
            if (newClock === undefined) {
 | 
			
		||||
                // Show everything for fixed time
 | 
			
		||||
                this.hideAll = false;
 | 
			
		||||
                this.showAll = true;
 | 
			
		||||
                // clear also invokes listActivities
 | 
			
		||||
                this.clearPreviousActivities();
 | 
			
		||||
            } else {
 | 
			
		||||
                this.setSort();
 | 
			
		||||
                this.setViewBounds();
 | 
			
		||||
                this.listActivities();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        this.getPlanDataAndSetConfig(this.domainObject);
 | 
			
		||||
 | 
			
		||||
        this.unlisten = this.openmct.objects.observe(this.domainObject, 'selectFile', this.planFileUpdated);
 | 
			
		||||
@@ -118,6 +134,7 @@ export default {
 | 
			
		||||
        this.removeStatusListener = this.openmct.status.observe(this.domainObject.identifier, this.setStatus);
 | 
			
		||||
        this.status = this.openmct.status.get(this.domainObject.identifier);
 | 
			
		||||
        this.unlistenTicker = ticker.listen(this.clearPreviousActivities);
 | 
			
		||||
        this.openmct.time.on('bounds', this.updateTimestamp);
 | 
			
		||||
        this.openmct.editor.on('isEditing', this.setEditState);
 | 
			
		||||
 | 
			
		||||
        this.deferAutoScroll = _.debounce(this.deferAutoScroll, 500);
 | 
			
		||||
@@ -128,6 +145,16 @@ export default {
 | 
			
		||||
            this.composition.on('remove', this.removeItem);
 | 
			
		||||
            this.composition.load();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // initialize the full view if fixed time
 | 
			
		||||
        if (this.openmct.time.clock() === undefined) {
 | 
			
		||||
            // Show everything
 | 
			
		||||
            this.filterValue = this.domainObject.configuration.filter;
 | 
			
		||||
            this.hideAll = false;
 | 
			
		||||
            this.showAll = true;
 | 
			
		||||
            this.listActivities();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    },
 | 
			
		||||
    beforeDestroy() {
 | 
			
		||||
        if (this.unlisten) {
 | 
			
		||||
@@ -147,6 +174,7 @@ export default {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.openmct.editor.off('isEditing', this.setEditState);
 | 
			
		||||
        this.openmct.time.off('bounds', this.updateTimestamp);
 | 
			
		||||
 | 
			
		||||
        this.$el.parentElement.removeEventListener('scroll', this.deferAutoScroll, true);
 | 
			
		||||
        if (this.clearAutoScrollDisabledTimer) {
 | 
			
		||||
@@ -159,6 +187,11 @@ export default {
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    methods: {
 | 
			
		||||
        updateTimestamp(bounds, isTick) {
 | 
			
		||||
            if (isTick === true) {
 | 
			
		||||
                this.timestamp = this.openmct.time.clock().currentValue();
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        planFileUpdated(selectFile) {
 | 
			
		||||
            this.getPlanData({
 | 
			
		||||
                selectFile,
 | 
			
		||||
@@ -377,7 +410,7 @@ export default {
 | 
			
		||||
                    activity.key = uuid();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                activity.duration = activity.start - this.timestamp;
 | 
			
		||||
                activity.duration = this.timestamp && activity.start ? activity.start - this.timestamp : undefined;
 | 
			
		||||
 | 
			
		||||
                return activity;
 | 
			
		||||
            });
 | 
			
		||||
@@ -400,7 +433,7 @@ export default {
 | 
			
		||||
 | 
			
		||||
            this.firstCurrentActivityIndex = -1;
 | 
			
		||||
            this.currentActivitiesCount = 0;
 | 
			
		||||
            this.$el.parentElement.scrollTo({top: 0});
 | 
			
		||||
            this.$el.parentElement?.scrollTo({top: 0});
 | 
			
		||||
            this.autoScrolled = false;
 | 
			
		||||
        },
 | 
			
		||||
        setScrollTop() {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user