Skip to content

Commit 2adec94

Browse files
author
Darnell Andries
committed
Merge branch 'develop'
2 parents 71219d1 + 9bd5915 commit 2adec94

File tree

7 files changed

+23
-10
lines changed

7 files changed

+23
-10
lines changed

demo/index.js

+2
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ window.onload = function() {
55

66
instance.addTask({id: 1, start: 9, end: 11, text: 'Task 1 - Get this stuff done!'}, true);
77
instance.addTask({id: 2, start: 12, end: 13, text: 'Task 2 - Get that stuff done!'}, true);
8+
9+
810
};

gulpfile.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ var babel = require('gulp-babel');
99
gulp.task('bundle', function() {
1010
return gulp.src('src/**/*.js')
1111
.pipe(babel({
12-
presets: ['es2015']
12+
presets: ['es2015'],
13+
plugins: ['transform-runtime']
1314
}))
1415
.pipe(gulp.dest("dist"));
1516
});

package.json

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "drag-timetable",
3-
"version": "1.0.7",
3+
"version": "1.0.8",
44
"description": "Simple, customizable draggable timetable.",
55
"main": "dist/app.js",
66
"scripts": {
@@ -23,6 +23,7 @@
2323
},
2424
"homepage": "https://github.com/DJAndries/drag-timetable#readme",
2525
"devDependencies": {
26+
"babel-plugin-transform-runtime": "^6.23.0",
2627
"babel-preset-env": "^1.1.8",
2728
"babel-preset-es2015": "^6.22.0",
2829
"babelify": "^7.3.0",
@@ -35,5 +36,7 @@
3536
"vinyl-buffer": "^1.0.0",
3637
"vinyl-source-stream": "^1.1.0"
3738
},
38-
"dependencies": {}
39+
"dependencies": {
40+
"babel-runtime": "^6.23.0"
41+
}
3942
}

src/drag.js

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ class TimetableDraggable {
1111

1212
onTouchStart(ev) {
1313
this.isDragging = true;
14-
this.startOffsetX = ev.offsetX;
15-
this.startOffsetY = ev.offsetY;
14+
const boundingRect = ev.currentTarget.getBoundingClientRect();
15+
this.startOffsetX = ev.clientX - boundingRect.left;
16+
this.startOffsetY = ev.clientY - boundingRect.top;
1617
this.currentGhostElement = this.element.cloneNode(true);
1718
this.currentGhostElement.style.position = 'absolute';
1819
this.currentGhostElement.style.left = (ev.pageX - this.startOffsetX) + "px";
@@ -28,7 +29,7 @@ class TimetableDraggable {
2829
if (this.isDragging) {
2930
this.isDragging = false;
3031
if (this.currentGhostElement) {
31-
this.currentGhostElement.remove();
32+
this.currentGhostElement.outerHTML = '';
3233
this.currentGhostElement = null;
3334
}
3435
this.dragManager.spacer.moveEnd(this.taskId);
@@ -41,7 +42,7 @@ class TimetableDraggable {
4142
this.currentGhostElement.style.left = (ev.pageX - this.startOffsetX) + "px";
4243
this.currentGhostElement.style.top = (ev.pageY - this.startOffsetY) + "px";
4344
}
44-
this.dragManager.spacer.moveUpdate(ev.pageY - this.startOffsetY - window.scrollY, this.taskId);
45+
this.dragManager.spacer.moveUpdate(ev.pageY - this.startOffsetY - document.documentElement.scrollTop, this.taskId);
4546
}
4647
}
4748
}

src/instance.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export default class TimetableInstance {
2020
}
2121

2222
removeTask(taskId) {
23-
this.contextObj.tasks[taskId] = undefined;
2423
this.contextObj.spacer.removeFromTable(this.contextObj.tasks[taskId]);
24+
this.contextObj.tasks[taskId] = undefined;
2525
}
2626

2727
onTaskTimeUpdate(taskId, startTime, endTime) {

src/spacer.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ export default class TimetableSpacer {
8787
const spacerId = this.timeToSpacerMap[i];
8888
this.timeToSpacerMap[i] = {taskId: task.id, boundary: [this.timeToSpacerMap[taskStart], this.timeToSpacerMap[taskEnd - 0.25]], availableValue: spacerId};
8989
if (i == taskStart) {
90+
this.spacerIdToElementArray[spacerId].style.display = '';
9091
this.spacerIdToElementArray[spacerId].appendChild(task.element);
9192
this.spacerIdToElementArray[spacerId].setAttribute('rowspan', '' + (endSpacerId - startSpacerId + 1));
9293
} else {
@@ -106,7 +107,7 @@ export default class TimetableSpacer {
106107
this.timeToSpacerMap[i] = spacerObj.availableValue;
107108
const spacerId = spacerObj.availableValue;
108109
if (i == task.start) {
109-
this.spacerIdToElementArray[spacerId].innerHTML = '';
110+
this.spacerIdToElementArray[spacerId].removeChild(this.spacerIdToElementArray[spacerId].firstChild);
110111
this.spacerIdToElementArray[spacerId].setAttribute('rowspan', '1');
111112
} else {
112113
this.spacerIdToElementArray[spacerId].style.display = '';
@@ -115,11 +116,16 @@ export default class TimetableSpacer {
115116
}
116117

117118
_initSpacers() {
119+
const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
120+
118121
for (let i = 0.0 + this.hourStart; i < this.hourEnd; i += 0.25) {
119122
const rowElement = document.createElement('tr');
120123
const spaceElement = document.createElement('td');
121124
rowElement.style.height = this.unitHeight;
122125
spaceElement.setAttribute('class', 'dragtimetable-spacer');
126+
if (isFirefox) {
127+
spaceElement.style.height = '100%';
128+
}
123129
this.spacerIdToElementArray.push(spaceElement);
124130
this.timeToSpacerMap[i] = this.spacerIdToElementArray.length - 1;
125131
this.spacerToTimeMap[this.spacerIdToElementArray.length - 1] = i;

src/task.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export default class TimetableTask {
3535

3636
getTimeElement() {
3737
const timeElement = document.createElement('div');
38-
timeElement.innerHTML = '&#x23f0; ' + TimetableUtil.getHourText(this.start) + ' - ' + TimetableUtil.getHourText(this.end);
38+
timeElement.innerHTML = '&#x1f550; ' + TimetableUtil.getHourText(this.start) + ' - ' + TimetableUtil.getHourText(this.end);
3939
timeElement.style.position = 'absolute';
4040
timeElement.style.bottom = '0px';
4141
timeElement.style.paddingBottom = '3px';

0 commit comments

Comments
 (0)