Defined a renderEndDate

This commit is contained in:
João Paulo Poffo
2019-02-12 17:29:38 -02:00
parent 58df72984f
commit 6e846ac3e5
3 changed files with 29 additions and 4 deletions

View File

@@ -78,8 +78,13 @@ const fixTaskDates = function (task, dateFormat, excludes) {
let startTime = moment(task.startTime) let startTime = moment(task.startTime)
startTime.add(1, 'd') startTime.add(1, 'd')
let endTime = moment(task.endTime) let endTime = moment(task.endTime)
let invalid = false
while (startTime.date() <= endTime.date()) { while (startTime.date() <= endTime.date()) {
if (isInvalidDate(startTime, dateFormat, excludes)) { if (!invalid) {
task.renderEndTime = endTime.toDate()
}
invalid = isInvalidDate(startTime, dateFormat, excludes)
if (invalid) {
endTime.add(1, 'd') endTime.add(1, 'd')
} }
startTime.add(1, 'd') startTime.add(1, 'd')
@@ -308,6 +313,7 @@ export const addTask = function (descr, data) {
type: currentSection, type: currentSection,
processed: false, processed: false,
manualEndTime: false, manualEndTime: false,
renderEndTime: null,
raw: { data: data }, raw: { data: data },
task: descr task: descr
} }

View File

@@ -175,38 +175,57 @@ describe('when using the ganttDb', function () {
it('should ignore weekends', function () { it('should ignore weekends', function () {
ganttDb.setDateFormat('YYYY-MM-DD') ganttDb.setDateFormat('YYYY-MM-DD')
ganttDb.setExcludes('weekends 2019-02-06,friday') ganttDb.setExcludes('weekends 2019-02-06,friday')
ganttDb.addSection('testa1') ganttDb.addSection('weekends skip test')
ganttDb.addTask('test1', 'id1,2019-02-01,1d') ganttDb.addTask('test1', 'id1,2019-02-01,1d')
ganttDb.addTask('test2', 'id2,after id1,2d') ganttDb.addTask('test2', 'id2,after id1,2d')
ganttDb.addTask('test3', 'id3,after id2,7d') ganttDb.addTask('test3', 'id3,after id2,7d')
ganttDb.addTask('test4', 'id4,2019-02-01,2019-02-20') // Fixed endTime ganttDb.addTask('test4', 'id4,2019-02-01,2019-02-20') // Fixed endTime
ganttDb.addTask('test5', 'id5,after id4,1d') ganttDb.addTask('test5', 'id5,after id4,1d')
ganttDb.addSection('full ending taks on last day')
ganttDb.addTask('test6', 'id6,2019-02-13,2d')
ganttDb.addTask('test7', 'id7,after id6,1d')
const tasks = ganttDb.getTasks() const tasks = ganttDb.getTasks()
expect(tasks[0].startTime).toEqual(moment('2019-02-01', 'YYYY-MM-DD').toDate()) expect(tasks[0].startTime).toEqual(moment('2019-02-01', 'YYYY-MM-DD').toDate())
expect(tasks[0].endTime).toEqual(moment('2019-02-04', 'YYYY-MM-DD').toDate()) expect(tasks[0].endTime).toEqual(moment('2019-02-04', 'YYYY-MM-DD').toDate())
expect(tasks[0].renderEndTime).toEqual(moment('2019-02-02', 'YYYY-MM-DD').toDate())
expect(tasks[0].id).toEqual('id1') expect(tasks[0].id).toEqual('id1')
expect(tasks[0].task).toEqual('test1') expect(tasks[0].task).toEqual('test1')
expect(tasks[1].startTime).toEqual(moment('2019-02-04', 'YYYY-MM-DD').toDate()) expect(tasks[1].startTime).toEqual(moment('2019-02-04', 'YYYY-MM-DD').toDate())
expect(tasks[1].endTime).toEqual(moment('2019-02-07', 'YYYY-MM-DD').toDate()) expect(tasks[1].endTime).toEqual(moment('2019-02-07', 'YYYY-MM-DD').toDate())
expect(tasks[1].renderEndTime).toEqual(moment('2019-02-06', 'YYYY-MM-DD').toDate())
expect(tasks[1].id).toEqual('id2') expect(tasks[1].id).toEqual('id2')
expect(tasks[1].task).toEqual('test2') expect(tasks[1].task).toEqual('test2')
expect(tasks[2].startTime).toEqual(moment('2019-02-07', 'YYYY-MM-DD').toDate()) expect(tasks[2].startTime).toEqual(moment('2019-02-07', 'YYYY-MM-DD').toDate())
expect(tasks[2].endTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate()) expect(tasks[2].endTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate())
expect(tasks[2].renderEndTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate())
expect(tasks[2].id).toEqual('id3') expect(tasks[2].id).toEqual('id3')
expect(tasks[2].task).toEqual('test3') expect(tasks[2].task).toEqual('test3')
expect(tasks[3].startTime).toEqual(moment('2019-02-01', 'YYYY-MM-DD').toDate()) expect(tasks[3].startTime).toEqual(moment('2019-02-01', 'YYYY-MM-DD').toDate())
expect(tasks[3].endTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate()) expect(tasks[3].endTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate())
expect(tasks[3].renderEndTime).toBeNull() // Fixed end
expect(tasks[3].id).toEqual('id4') expect(tasks[3].id).toEqual('id4')
expect(tasks[3].task).toEqual('test4') expect(tasks[3].task).toEqual('test4')
expect(tasks[4].startTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate()) expect(tasks[4].startTime).toEqual(moment('2019-02-20', 'YYYY-MM-DD').toDate())
expect(tasks[4].endTime).toEqual(moment('2019-02-21', 'YYYY-MM-DD').toDate()) expect(tasks[4].endTime).toEqual(moment('2019-02-21', 'YYYY-MM-DD').toDate())
expect(tasks[4].renderEndTime).toEqual(moment('2019-02-21', 'YYYY-MM-DD').toDate())
expect(tasks[4].id).toEqual('id5') expect(tasks[4].id).toEqual('id5')
expect(tasks[4].task).toEqual('test5') expect(tasks[4].task).toEqual('test5')
expect(tasks[5].startTime).toEqual(moment('2019-02-13', 'YYYY-MM-DD').toDate())
expect(tasks[5].endTime).toEqual(moment('2019-02-18', 'YYYY-MM-DD').toDate())
expect(tasks[5].renderEndTime).toEqual(moment('2019-02-15', 'YYYY-MM-DD').toDate())
expect(tasks[5].id).toEqual('id6')
expect(tasks[5].task).toEqual('test6')
expect(tasks[6].startTime).toEqual(moment('2019-02-18', 'YYYY-MM-DD').toDate())
expect(tasks[6].endTime).toEqual(moment('2019-02-19', 'YYYY-MM-DD').toDate())
expect(tasks[6].id).toEqual('id7')
expect(tasks[6].task).toEqual('test7')
}) })
}) })

View File

@@ -135,7 +135,7 @@ export const draw = function (text, id) {
return i * theGap + theTopPad return i * theGap + theTopPad
}) })
.attr('width', function (d) { .attr('width', function (d) {
return (timeScale(d.endTime) - timeScale(d.startTime)) return (timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime))
}) })
.attr('height', theBarHeight) .attr('height', theBarHeight)
.attr('class', function (d) { .attr('class', function (d) {
@@ -178,7 +178,7 @@ export const draw = function (text, id) {
.attr('font-size', conf.fontSize) .attr('font-size', conf.fontSize)
.attr('x', function (d) { .attr('x', function (d) {
const startX = timeScale(d.startTime) const startX = timeScale(d.startTime)
const endX = timeScale(d.endTime) const endX = timeScale(d.renderEndTime || d.endTime)
const textWidth = this.getBBox().width const textWidth = this.getBBox().width
// Check id text width > width of rectangle // Check id text width > width of rectangle