diff --git a/src/plugins/displayLayout/DisplayLayoutType.js b/src/plugins/displayLayout/DisplayLayoutType.js
index 66b34d6c17..0d3b8b84f9 100644
--- a/src/plugins/displayLayout/DisplayLayoutType.js
+++ b/src/plugins/displayLayout/DisplayLayoutType.js
@@ -25,6 +25,7 @@ define(function () {
return {
name: "Display Layout",
creatable: true,
+ description: 'Assemble other objects and components together into a reusable screen layout. Simply drag in the objects you want, position and size them. Save your design and view or edit it at any time.',
cssClass: 'icon-layout',
initialize(domainObject) {
domainObject.composition = [];
diff --git a/src/plugins/displayLayout/components/DisplayLayout.vue b/src/plugins/displayLayout/components/DisplayLayout.vue
index 76a9fb6199..055e747e93 100644
--- a/src/plugins/displayLayout/components/DisplayLayout.vue
+++ b/src/plugins/displayLayout/components/DisplayLayout.vue
@@ -25,30 +25,26 @@
@dragover="handleDragOver"
@click="bypassSelection"
@drop="handleDrop">
-
-
-
@@ -59,30 +55,47 @@
@include abs();
display: flex;
flex-direction: column;
+ overflow: auto;
&__grid-holder {
display: none;
}
- &__object {
- flex: 1 1 auto;
- overflow: auto;
- }
-
&__frame {
position: absolute;
}
}
- .l-shell__main-container {
- > .l-layout {
- [s-selected] {
- border: $browseSelectedBorder;
+ .is-editing {
+ .l-shell__main-container {
+ &[s-selected],
+ &[s-selected-parent] {
+ // Display grid in main layout holder when editing
+ > .l-layout {
+ background: $editUIGridColorBg;
+
+ > [class*="__grid-holder"] {
+ display: block;
+ }
+ }
+ }
+ }
+
+ .l-layout__frame {
+ &[s-selected],
+ &[s-selected-parent] {
+ // Display grid in nested layouts when editing
+ > * > * > .l-layout {
+ background: $editUIGridColorBg;
+ box-shadow: inset $editUIGridColorFg 0 0 2px 1px;
+
+ > [class*='grid-holder'] {
+ display: block;
+ }
+ }
}
}
}
-
- // Styles moved to _global.scss;
@@ -119,7 +132,6 @@
data() {
let domainObject = JSON.parse(JSON.stringify(this.domainObject));
return {
- drilledIn: undefined,
internalDomainObject: domainObject,
initSelectIndex: undefined
};
@@ -275,12 +287,17 @@
this.initSelectIndex = this.layoutItems.length - 1;
},
trackItem(item) {
+ if (!item.identifier) {
+ return;
+ }
+
+ let keyString = this.openmct.objects.makeKeyString(item.identifier);
+
if (item.type === "telemetry-view") {
- let keyString = this.openmct.objects.makeKeyString(item.identifier);
let count = this.telemetryViewMap[keyString] || 0;
this.telemetryViewMap[keyString] = ++count;
} else if (item.type === "subobject-view") {
- this.objectViewMap[this.openmct.objects.makeKeyString(item.identifier)] = true;
+ this.objectViewMap[keyString] = true;
}
},
removeItem(item, index) {
@@ -376,5 +393,4 @@
}
}
}
-
diff --git a/src/plugins/displayLayout/components/LayoutFrame.vue b/src/plugins/displayLayout/components/LayoutFrame.vue
index 2560aa7393..d0820ee71f 100644
--- a/src/plugins/displayLayout/components/LayoutFrame.vue
+++ b/src/plugins/displayLayout/components/LayoutFrame.vue
@@ -25,25 +25,24 @@
:class="{
'no-frame': !item.hasFrame,
'u-inspectable': inspectable,
- 'is-drilled-in': item.drilledIn
+ 'is-resizing': isResizing
}"
- :style="style"
- @dblclick="drill($event)">
+ :style="style">
+ @mousedown="startDrag([1,1], [0,0], $event, 'move')">
+ @mousedown="startDrag([1,1], [-1,-1], $event, 'resize')">