Skip to content

Commit a1d31c4

Browse files
authored
v0.18.1 Release (namespace-ee#387)
1 parent 22bf70b commit a1d31c4

File tree

5 files changed

+100
-2
lines changed

5 files changed

+100
-2
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ and this project adheres (more or less) to [Semantic Versioning](http://semver.o
77

88
## Unreleased
99

10+
### 0.18.1
11+
12+
### Fixed
13+
14+
* Date passed to CursorMarker child is wrong - #379
15+
* groupRenderer doesnt work for right sidebar - #377
16+
1017
### 0.18.0
1118

1219
### Fixed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import moment from 'moment'
2+
import { calculateTimeForXPosition } from 'lib/utility/calendar'
3+
4+
describe('calculate time for x position', () => {
5+
it('calculates point in middle of timeline', () => {
6+
const canvasStart = moment('2018-01-01').valueOf()
7+
const canvasEnd = moment('2018-01-03').valueOf()
8+
const canvasWidthInPixels = 3000
9+
10+
const currentXPositionInPixels = canvasWidthInPixels / 2
11+
12+
const actual = calculateTimeForXPosition(
13+
canvasStart,
14+
canvasEnd,
15+
canvasWidthInPixels,
16+
currentXPositionInPixels
17+
)
18+
19+
const expected = moment('2018-01-02').valueOf()
20+
21+
expect(actual).toBe(expected)
22+
})
23+
24+
it('calculates point in first quarter of timeline', () => {
25+
const canvasStart = moment('2018-01-01').valueOf()
26+
const canvasEnd = moment('2018-01-02').valueOf()
27+
const canvasWidthInPixels = 3000
28+
29+
const currentXPositionInPixels = canvasWidthInPixels / 4
30+
31+
const actual = calculateTimeForXPosition(
32+
canvasStart,
33+
canvasEnd,
34+
canvasWidthInPixels,
35+
currentXPositionInPixels
36+
)
37+
38+
const expected = moment('2018-01-01')
39+
.add(6, 'hour')
40+
.valueOf()
41+
42+
expect(actual).toBe(expected)
43+
})
44+
45+
it('calculates point in latter quarter of timeline', () => {
46+
const canvasStart = moment('2018-01-01').valueOf()
47+
const canvasEnd = moment('2018-01-02').valueOf()
48+
const canvasWidthInPixels = 3000
49+
50+
const currentXPositionInPixels = canvasWidthInPixels * 0.75
51+
52+
const actual = calculateTimeForXPosition(
53+
canvasStart,
54+
canvasEnd,
55+
canvasWidthInPixels,
56+
currentXPositionInPixels
57+
)
58+
59+
const expected = moment('2018-01-01')
60+
.add(18, 'hour')
61+
.valueOf()
62+
63+
expect(actual).toBe(expected)
64+
})
65+
})

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-calendar-timeline",
3-
"version": "0.18.0",
3+
"version": "0.18.1",
44
"description": "react calendar timeline",
55
"main": "lib/index.js",
66
"scripts": {

src/lib/Timeline.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -917,6 +917,7 @@ export default class ReactCalendarTimeline extends Component {
917917
<Sidebar
918918
groups={this.props.groups}
919919
keys={this.props.keys}
920+
groupRenderer={this.props.groupRenderer}
920921
isRightSidebar
921922
width={this.props.rightSidebarWidth}
922923
groupHeights={groupHeights}

src/lib/utility/calendar.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import moment from 'moment'
22
import { _get } from './generic'
33

4+
/**
5+
* Calculate the ms / pixel ratio of the timeline state
6+
* @param {number} canvasTimeStart
7+
* @param {number} canvasTimeEnd
8+
* @param {number} canvasWidth
9+
* @returns {number}
10+
*/
411
export function coordinateToTimeRatio(
512
canvasTimeStart,
613
canvasTimeEnd,
@@ -9,6 +16,15 @@ export function coordinateToTimeRatio(
916
return (canvasTimeEnd - canvasTimeStart) / canvasWidth
1017
}
1118

19+
/**
20+
* For a given time, calculate the pixel position given timeline state
21+
* (timeline width in px, canvas time range)
22+
* @param {number} canvasTimeStart
23+
* @param {number} canvasTimeEnd
24+
* @param {number} canvasWidth
25+
* @param {number} time
26+
* @returns {number}
27+
*/
1228
export function calculateXPositionForTime(
1329
canvasTimeStart,
1430
canvasTimeEnd,
@@ -21,6 +37,15 @@ export function calculateXPositionForTime(
2137
return timeOffset * widthToZoomRatio
2238
}
2339

40+
/**
41+
* For a given x position (leftOffset) in pixels, calculate time based on
42+
* timeline state (timeline width in px, canvas time range)
43+
* @param {number} canvasTimeStart
44+
* @param {number} canvasTimeEnd
45+
* @param {number} canvasWidth
46+
* @param {number} leftOffset
47+
* @returns {number}
48+
*/
2449
export function calculateTimeForXPosition(
2550
canvasTimeStart,
2651
canvasTimeEnd,
@@ -31,7 +56,7 @@ export function calculateTimeForXPosition(
3156

3257
const timeFromCanvasTimeStart = timeToPxRatio * leftOffset
3358

34-
return timeFromCanvasTimeStart + canvasTimeEnd
59+
return timeFromCanvasTimeStart + canvasTimeStart
3560
}
3661

3762
export function iterateTimes(start, end, unit, timeSteps, callback) {

0 commit comments

Comments
 (0)