mirror of
https://github.com/nasa/openmct.git
synced 2025-05-08 19:48:41 +00:00
Merge pull request #2261 from nasa/object-path-on-drop
Change domain-object event transfer data to domain-object-path
This commit is contained in:
commit
00ce246fc5
@ -177,13 +177,13 @@
|
|||||||
this.openmct.objects.mutate(this.internalDomainObject, path, value);
|
this.openmct.objects.mutate(this.internalDomainObject, path, value);
|
||||||
},
|
},
|
||||||
handleDrop($event) {
|
handleDrop($event) {
|
||||||
if (!$event.dataTransfer.types.includes('openmct/domain-object')) {
|
if (!$event.dataTransfer.types.includes('openmct/domain-object-path')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$event.preventDefault();
|
$event.preventDefault();
|
||||||
|
|
||||||
let domainObject = JSON.parse($event.dataTransfer.getData('openmct/domain-object'));
|
let domainObject = JSON.parse($event.dataTransfer.getData('openmct/domain-object-path'))[0];
|
||||||
let elementRect = this.$el.getBoundingClientRect();
|
let elementRect = this.$el.getBoundingClientRect();
|
||||||
let droppedObjectPosition = [
|
let droppedObjectPosition = [
|
||||||
Math.floor(($event.pageX - elementRect.left) / this.gridSize[0]),
|
Math.floor(($event.pageX - elementRect.left) / this.gridSize[0]),
|
||||||
|
@ -100,7 +100,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
allowDrop(event, index) {
|
allowDrop(event, index) {
|
||||||
if (event.dataTransfer.getData('openmct/domain-object')) {
|
if (event.dataTransfer.types.includes('openmct/domain-object-path')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
let frameId = event.dataTransfer.getData('frameid'),
|
let frameId = event.dataTransfer.getData('frameid'),
|
||||||
@ -124,9 +124,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
moveOrCreateFrame(insertIndex, event) {
|
moveOrCreateFrame(insertIndex, event) {
|
||||||
if (event.dataTransfer.types.includes('openmct/domain-object')) {
|
if (event.dataTransfer.types.includes('openmct/domain-object-path')) {
|
||||||
// create frame using domain object
|
// create frame using domain object
|
||||||
let domainObject = JSON.parse(event.dataTransfer.getData('openmct/domain-object'));
|
let domainObject = JSON.parse(event.dataTransfer.getData('openmct/domain-object-path'))[0];
|
||||||
this.$emit(
|
this.$emit(
|
||||||
'create-frame',
|
'create-frame',
|
||||||
this.index,
|
this.index,
|
||||||
|
@ -107,10 +107,10 @@ function (
|
|||||||
|
|
||||||
EntryController.prototype.dropOnEntry = function (entryid, event) {
|
EntryController.prototype.dropOnEntry = function (entryid, event) {
|
||||||
|
|
||||||
var data = event.dataTransfer.getData('openmct/domain-object');
|
var data = event.dataTransfer.getData('openmct/domain-object-path');
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
var selectedObject = JSON.parse(data),
|
var selectedObject = JSON.parse(data)[0],
|
||||||
selectedObjectId = selectedObject.identifier.key,
|
selectedObjectId = selectedObject.identifier.key,
|
||||||
cssClass = this.openmct.types.get(selectedObject.type),
|
cssClass = this.openmct.types.get(selectedObject.type),
|
||||||
entryPos = this.entryPosById(entryid),
|
entryPos = this.entryPosById(entryid),
|
||||||
|
@ -120,8 +120,8 @@ function (
|
|||||||
var date = Date.now(),
|
var date = Date.now(),
|
||||||
embed;
|
embed;
|
||||||
|
|
||||||
if (event.dataTransfer && event.dataTransfer.getData('openmct/domain-object')) {
|
if (event.dataTransfer && event.dataTransfer.getData('openmct/domain-object-path')) {
|
||||||
var selectedObject = JSON.parse(event.dataTransfer.getData('openmct/domain-object')),
|
var selectedObject = JSON.parse(event.dataTransfer.getData('openmct/domain-object-path'))[0],
|
||||||
selectedObjectId = selectedObject.identifier.key,
|
selectedObjectId = selectedObject.identifier.key,
|
||||||
cssClass = this.openmct.types.get(selectedObject.type);
|
cssClass = this.openmct.types.get(selectedObject.type);
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ export default {
|
|||||||
this.setCurrentTab = true;
|
this.setCurrentTab = true;
|
||||||
},
|
},
|
||||||
dragstart (e) {
|
dragstart (e) {
|
||||||
if (e.dataTransfer.getData('openmct/domain-object')) {
|
if (e.dataTransfer.types.includes('openmct/domain-object-path')) {
|
||||||
this.isDragging = true;
|
this.isDragging = true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -65,11 +65,19 @@ export default {
|
|||||||
},
|
},
|
||||||
dragStart(event) {
|
dragStart(event) {
|
||||||
let navigatedObject = this.openmct.router.path[0];
|
let navigatedObject = this.openmct.router.path[0];
|
||||||
let serializedObject = JSON.stringify(this.observedObject);
|
let serializedPath = JSON.stringify(this.objectPath);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Cannot inspect data transfer objects on dragover/dragenter so impossible to determine composability at
|
||||||
|
* that point. If dragged object can be composed by navigated object, then indicate with presence of
|
||||||
|
* 'composable-domain-object' in data transfer
|
||||||
|
*/
|
||||||
if (this.openmct.composition.checkPolicy(navigatedObject, this.observedObject)) {
|
if (this.openmct.composition.checkPolicy(navigatedObject, this.observedObject)) {
|
||||||
event.dataTransfer.setData("openmct/composable-domain-object", serializedObject);
|
event.dataTransfer.setData("openmct/composable-domain-object", JSON.stringify(this.domainObject));
|
||||||
}
|
}
|
||||||
event.dataTransfer.setData("openmct/domain-object", serializedObject);
|
// serialize domain object anyway, because some views can drag-and-drop objects without composition
|
||||||
|
// (eg. notabook.)
|
||||||
|
event.dataTransfer.setData("openmct/domain-object-path", serializedPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user