mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-18 12:39:29 +00:00
68 lines
1.4 KiB
JavaScript
68 lines
1.4 KiB
JavaScript
/**
|
|
* TODO(chris): This is only a prototype!!!
|
|
*/
|
|
const DragAndDrop = {
|
|
TYPE_LE: "lehreinheit",
|
|
TYPE_VEVENT: "vevent",
|
|
|
|
getValidTransferData(event, allowedTypes) {
|
|
const json = event.dataTransfer.getData('text');
|
|
let obj;
|
|
try {
|
|
obj = JSON.parse(json);
|
|
if (!obj.type)
|
|
return null;
|
|
if (allowedTypes && !allowedTypes.includes(obj.type))
|
|
return null;
|
|
} catch (error) {
|
|
return null;
|
|
}
|
|
return obj;
|
|
},
|
|
isValidTransferData(event, allowedTypes) {
|
|
return this.getValidTransferData(event, allowedTypes) ? true : false;
|
|
},
|
|
getTransferData(event) {
|
|
const json = event.dataTransfer.getData('text');
|
|
return JSON.parse(json);
|
|
},
|
|
setTransferData(event, data) {
|
|
switch (data.type) {
|
|
case DragAndDrop.TYPE_LE:
|
|
data = DragAndDrop.fromLe(data);
|
|
break;
|
|
default:
|
|
if (data.dtstart && data.dtend && data.uid && data.summary) {
|
|
data = DragAndDrop.fromVEvent(data);
|
|
break;
|
|
}
|
|
return false; // No type found => abort
|
|
}
|
|
|
|
event.dataTransfer.setData('text', JSON.stringify(data));
|
|
return true;
|
|
},
|
|
fromLe(data) {
|
|
const {
|
|
type = DragAndDrop.TYPE_LE,
|
|
lehreinheit_id: id,
|
|
stundenblockung
|
|
} = data;
|
|
|
|
return { type, id, stundenblockung };
|
|
},
|
|
fromVEvent(data) {
|
|
const {
|
|
type = DragAndDrop.TYPE_VEVENT,
|
|
uid: id,
|
|
dtstart,
|
|
dtend,
|
|
summary
|
|
} = data;
|
|
|
|
return { type, id, dtstart, dtend, summary };
|
|
}
|
|
};
|
|
|
|
export default DragAndDrop;
|