This commit is contained in:
2021-09-17 20:16:34 +00:00
parent f729e48938
commit 65d6e40339

View File

@@ -73,7 +73,7 @@
@mousedown:event="startDrag"
@mousedown:time="startTime"
@mousemove:time="mouseMove"
@mouseup:time="endDrag"
@mouseup:time="endDragExtend"
@mouseleave.native="cancelDrag"
:event-more-text="$ay.t('More')"
>
@@ -267,7 +267,9 @@ SETTINGS:
https://vuetifyjs.com/en/components/floating-action-buttons/#speed-dial
issues:
drag losing end time for event
drag/extend needs to actually update the work order
drag/extend should not affect locked workorders!!
Add canModify or something to event data so no need to even start the op if it can't be done
Test: overlapping sched items that start or end outside of view
@@ -344,7 +346,8 @@ export default {
},
methods: {
startDrag({ event, timed }) {
//console.log("startDrag");
console.log("startDrag");
//TODO: IF event is not editable then just return here to prevent the drag
if (event && timed) {
//My work around to disambiguate dragging and clicking
clearTimeout(this.dragTimeout);
@@ -358,39 +361,71 @@ export default {
this.extendOriginal = null;
}
},
startTime(tms) {
//console.log("startTime", tms);
const mouse = this.toTime(tms);
if (this.dragEvent && this.dragTime === null) {
//const start = new Date(this.dragEvent.start).getTime();
const start = this.dragEvent.start;
this.dragTime = mouse - start;
//console.log("startTime dragTime is", this.dragTime);
} else {
this.createStart = this.roundTime(mouse);
console.log(
"startTime::STUB Create new element, popup FAB speeddial here"
);
// //console.log("startTime, create start:", this.createStart);
// this.createEvent = {
// name: `Event #${this.events.length}`,
// color: this.rndElement(this.colors),
// start: this.createStart,
// end: this.createStart,
// timed: true
// };
// //console.log("startTime, pushing event:", this.createEvent);
// this.events.push(this.createEvent);
}
},
extendBottom(event) {
//console.log("extendBottom", event);
console.log("extendBottom", event);
//TODO: if event is not editable then just return here to prevent extend
//My work around to disambiguate extending and clicking
clearTimeout(this.dragTimeout);
this.dragged = false;
this.dragTimeout = setTimeout(() => {
this.dragged = true;
}, 100); // Minimal delay to be regarded as extend instead of click
//this.dragEvent = event;
this.createEvent = event;
this.createStart = event.start;
this.extendOriginal = event.end;
},
endDragExtend() {
//On drag then dragEvent and dragTime are set
//on extend then createEvent (actual event), extendOriginal and createStart are set
//on create then createStart is only value set, dragEvent is null and createEvent is null
if (this.dragEvent) {
console.log("endDragExtend: event is DRAG of existing event");
}
if (this.createEvent) {
console.log("endDragExtend: event is EXTEND of existing event");
}
if (this.createStart && !this.dragEvent && !this.createEvent) {
console.log("endDragExtend: event is CREATE for new event");
}
// console.log("endDragExtend, deets: ", {
// dragEvent: this.dragEvent,
// dragTime: this.dragTime,
// createEvent: this.createEvent,
// createStart: this.createStart,
// extendOriginal: this.extendOriginal
// });
this.dragTime = null;
this.dragEvent = null;
this.createEvent = null;
this.createStart = null;
this.extendOriginal = null;
},
cancelDrag() {
// console.log("cancelDrag");
if (this.createEvent) {
console.log("Cancel drag A path (cancel?)");
if (this.extendOriginal) {
this.createEvent.end = this.extendOriginal;
} else {
console.log("Cancel drag B path (do it?)");
const i = this.events.indexOf(this.createEvent);
if (i !== -1) {
this.events.splice(i, 1);
}
}
}
this.createEvent = null;
this.createStart = null;
this.dragTime = null;
this.dragEvent = null;
},
mouseMove(tms) {
// //console.log("moustMove", tms);
const mouse = this.toTime(tms);
@@ -398,10 +433,9 @@ export default {
//console.log("mouseMove got time:", mouse);
if (this.dragEvent && this.dragTime !== null) {
// console.log("mosueMove:A", {
// dragEvent: JSON.stringify(this.dragEvent),
// dragTime: JSON.stringify(this.dragTime)
// });
//# DRAGGING PATH
console.log("MouseMove: DRAGGING");
//new Date(this.dragEvent.start).getTime();
const start = this.dragEvent.start;
const end = this.dragEvent.end;
@@ -421,7 +455,8 @@ export default {
this.dragEvent.start = newStart;
this.dragEvent.end = newEnd;
} else if (this.createEvent && this.createStart !== null) {
// console.log("mosueMove:B");
//# EXTENDING PATH
console.log("mosueMove: EXTENDING");
const mouseRounded = this.roundTime(mouse, false);
//console.log("mouseMove mouseRounded:", mouseRounded);
const min = Math.min(mouseRounded, this.createStart);
@@ -431,32 +466,34 @@ export default {
this.createEvent.end = max;
}
},
endDrag() {
// console.log("endDrag");
startTime(tms) {
//console.log("startTime", tms);
const mouse = this.toTime(tms);
this.dragTime = null;
this.dragEvent = null;
this.createEvent = null;
this.createStart = null;
this.extendOriginal = null;
},
cancelDrag() {
// console.log("cancelDrag");
if (this.createEvent) {
if (this.extendOriginal) {
this.createEvent.end = this.extendOriginal;
} else {
const i = this.events.indexOf(this.createEvent);
if (i !== -1) {
this.events.splice(i, 1);
}
}
if (this.dragEvent && this.dragTime === null) {
//const start = new Date(this.dragEvent.start).getTime();
const start = this.dragEvent.start;
this.dragTime = mouse - start;
//note: this captures once at start of drag
// console.log("startTime dragTime is", this.dragTime);
} else {
this.createStart = this.roundTime(mouse);
//TODO: implement speed dial create new item here
console.log(
"startTime::STUB Create new element, popup FAB speeddial here"
);
// //console.log("startTime, create start:", this.createStart);
// this.createEvent = {
// name: `Event #${this.events.length}`,
// color: this.rndElement(this.colors),
// start: this.createStart,
// end: this.createStart,
// timed: true
// };
// //console.log("startTime, pushing event:", this.createEvent);
// this.events.push(this.createEvent);
}
this.createEvent = null;
this.createStart = null;
this.dragTime = null;
this.dragEvent = null;
},
roundTime(time, down = true) {
//console.log("roundtime...");