Merge pull request #69 from hexagonatron/fix-incorrect-month-calculation
Changing taskXCoordinate calculation to not rely on dateDelta.
This commit is contained in:
commit
83e244ccec
@ -22,17 +22,11 @@ export const convertToBarTasks = (
|
|||||||
milestoneBackgroundColor: string,
|
milestoneBackgroundColor: string,
|
||||||
milestoneBackgroundSelectedColor: string
|
milestoneBackgroundSelectedColor: string
|
||||||
) => {
|
) => {
|
||||||
const dateDelta =
|
|
||||||
dates[1].getTime() -
|
|
||||||
dates[0].getTime() -
|
|
||||||
dates[1].getTimezoneOffset() * 60 * 1000 +
|
|
||||||
dates[0].getTimezoneOffset() * 60 * 1000;
|
|
||||||
let barTasks = tasks.map((t, i) => {
|
let barTasks = tasks.map((t, i) => {
|
||||||
return convertToBarTask(
|
return convertToBarTask(
|
||||||
t,
|
t,
|
||||||
i,
|
i,
|
||||||
dates,
|
dates,
|
||||||
dateDelta,
|
|
||||||
columnWidth,
|
columnWidth,
|
||||||
rowHeight,
|
rowHeight,
|
||||||
taskHeight,
|
taskHeight,
|
||||||
@ -71,7 +65,6 @@ const convertToBarTask = (
|
|||||||
task: Task,
|
task: Task,
|
||||||
index: number,
|
index: number,
|
||||||
dates: Date[],
|
dates: Date[],
|
||||||
dateDelta: number,
|
|
||||||
columnWidth: number,
|
columnWidth: number,
|
||||||
rowHeight: number,
|
rowHeight: number,
|
||||||
taskHeight: number,
|
taskHeight: number,
|
||||||
@ -96,7 +89,6 @@ const convertToBarTask = (
|
|||||||
task,
|
task,
|
||||||
index,
|
index,
|
||||||
dates,
|
dates,
|
||||||
dateDelta,
|
|
||||||
columnWidth,
|
columnWidth,
|
||||||
rowHeight,
|
rowHeight,
|
||||||
taskHeight,
|
taskHeight,
|
||||||
@ -111,7 +103,6 @@ const convertToBarTask = (
|
|||||||
task,
|
task,
|
||||||
index,
|
index,
|
||||||
dates,
|
dates,
|
||||||
dateDelta,
|
|
||||||
columnWidth,
|
columnWidth,
|
||||||
rowHeight,
|
rowHeight,
|
||||||
taskHeight,
|
taskHeight,
|
||||||
@ -129,7 +120,6 @@ const convertToBarTask = (
|
|||||||
task,
|
task,
|
||||||
index,
|
index,
|
||||||
dates,
|
dates,
|
||||||
dateDelta,
|
|
||||||
columnWidth,
|
columnWidth,
|
||||||
rowHeight,
|
rowHeight,
|
||||||
taskHeight,
|
taskHeight,
|
||||||
@ -150,7 +140,6 @@ const convertToBar = (
|
|||||||
task: Task,
|
task: Task,
|
||||||
index: number,
|
index: number,
|
||||||
dates: Date[],
|
dates: Date[],
|
||||||
dateDelta: number,
|
|
||||||
columnWidth: number,
|
columnWidth: number,
|
||||||
rowHeight: number,
|
rowHeight: number,
|
||||||
taskHeight: number,
|
taskHeight: number,
|
||||||
@ -165,11 +154,11 @@ const convertToBar = (
|
|||||||
let x1: number;
|
let x1: number;
|
||||||
let x2: number;
|
let x2: number;
|
||||||
if (rtl) {
|
if (rtl) {
|
||||||
x2 = taskXCoordinateRTL(task.start, dates, dateDelta, columnWidth);
|
x2 = taskXCoordinateRTL(task.start, dates, columnWidth);
|
||||||
x1 = taskXCoordinateRTL(task.end, dates, dateDelta, columnWidth);
|
x1 = taskXCoordinateRTL(task.end, dates, columnWidth);
|
||||||
} else {
|
} else {
|
||||||
x1 = taskXCoordinate(task.start, dates, dateDelta, columnWidth);
|
x1 = taskXCoordinate(task.start, dates, columnWidth);
|
||||||
x2 = taskXCoordinate(task.end, dates, dateDelta, columnWidth);
|
x2 = taskXCoordinate(task.end, dates, columnWidth);
|
||||||
}
|
}
|
||||||
let typeInternal: TaskTypeInternal = task.type;
|
let typeInternal: TaskTypeInternal = task.type;
|
||||||
if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
|
if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
|
||||||
@ -215,7 +204,6 @@ const convertToMilestone = (
|
|||||||
task: Task,
|
task: Task,
|
||||||
index: number,
|
index: number,
|
||||||
dates: Date[],
|
dates: Date[],
|
||||||
dateDelta: number,
|
|
||||||
columnWidth: number,
|
columnWidth: number,
|
||||||
rowHeight: number,
|
rowHeight: number,
|
||||||
taskHeight: number,
|
taskHeight: number,
|
||||||
@ -224,7 +212,7 @@ const convertToMilestone = (
|
|||||||
milestoneBackgroundColor: string,
|
milestoneBackgroundColor: string,
|
||||||
milestoneBackgroundSelectedColor: string
|
milestoneBackgroundSelectedColor: string
|
||||||
): BarTask => {
|
): BarTask => {
|
||||||
const x = taskXCoordinate(task.start, dates, dateDelta, columnWidth);
|
const x = taskXCoordinate(task.start, dates, columnWidth);
|
||||||
const y = taskYCoordinate(index, rowHeight, taskHeight);
|
const y = taskYCoordinate(index, rowHeight, taskHeight);
|
||||||
|
|
||||||
const x1 = x - taskHeight * 0.5;
|
const x1 = x - taskHeight * 0.5;
|
||||||
@ -261,34 +249,21 @@ const convertToMilestone = (
|
|||||||
const taskXCoordinate = (
|
const taskXCoordinate = (
|
||||||
xDate: Date,
|
xDate: Date,
|
||||||
dates: Date[],
|
dates: Date[],
|
||||||
dateDelta: number,
|
|
||||||
columnWidth: number
|
columnWidth: number
|
||||||
) => {
|
) => {
|
||||||
const index = ~~(
|
const index = dates.findIndex(d => d.getTime() >= xDate.getTime()) - 1;
|
||||||
(xDate.getTime() -
|
|
||||||
dates[0].getTime() +
|
const remainderMillis = xDate.getTime() - dates[index].getTime();
|
||||||
xDate.getTimezoneOffset() -
|
const percentOfInterval = remainderMillis / (dates[index + 1 ].getTime() - dates[index].getTime());
|
||||||
dates[0].getTimezoneOffset()) /
|
const x = index * columnWidth + (percentOfInterval * columnWidth);
|
||||||
dateDelta
|
|
||||||
);
|
|
||||||
const x = Math.round(
|
|
||||||
(index +
|
|
||||||
(xDate.getTime() -
|
|
||||||
dates[index].getTime() -
|
|
||||||
xDate.getTimezoneOffset() * 60 * 1000 +
|
|
||||||
dates[index].getTimezoneOffset() * 60 * 1000) /
|
|
||||||
dateDelta) *
|
|
||||||
columnWidth
|
|
||||||
);
|
|
||||||
return x;
|
return x;
|
||||||
};
|
};
|
||||||
const taskXCoordinateRTL = (
|
const taskXCoordinateRTL = (
|
||||||
xDate: Date,
|
xDate: Date,
|
||||||
dates: Date[],
|
dates: Date[],
|
||||||
dateDelta: number,
|
|
||||||
columnWidth: number
|
columnWidth: number
|
||||||
) => {
|
) => {
|
||||||
let x = taskXCoordinate(xDate, dates, dateDelta, columnWidth);
|
let x = taskXCoordinate(xDate, dates, columnWidth);
|
||||||
x += columnWidth;
|
x += columnWidth;
|
||||||
return x;
|
return x;
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user