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:
Pete Richards 2019-01-15 09:48:32 -08:00 committed by GitHub
commit 00ce246fc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 13 deletions

View File

@ -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]),

View File

@ -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,

View File

@ -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),

View File

@ -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);

View File

@ -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;
} }
}, },

View File

@ -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);
} }
} }
} }