feat: replace our home-grown gantt implementation with ganttastic #2180

Merged
konrad merged 78 commits from feature/ganttastic into main 2022-10-27 16:03:27 +00:00
1 changed files with 17 additions and 9 deletions
Showing only changes of commit ebd824bddf - Show all commits

View File

@ -105,13 +105,9 @@ const ganttBars = ref([])
const defaultStartDate = format(new Date(), dateFormat)
const defaultEndDate = format(new Date((new Date()).setDate((new Date()).getDate() + 7)), dateFormat)
dpschen marked this conversation as resolved Outdated

User TaskModel['id']

User `TaskModel['id']`

Done (I think you did that one?)

Done (I think you did that one?)
// We need a "real" ref object for the gantt bars to instantly update the tasks when they are dragged on the chart.
// A computed won't work directly.
function mapGanttBars() {
ganttBars.value = []
function transformTaskToGanttBar(t: TaskModel) {
const black = 'var(--grey-800)'
tasks.value.forEach(t => ganttBars.value.push([{
return [{
konrad marked this conversation as resolved Outdated

define types

define types

Done.

Done.
startDate: t.startDate ? format(t.startDate, dateFormat) : defaultStartDate,
endDate: t.endDate ? format(t.endDate, dateFormat) : defaultEndDate,
ganttBarConfig: {
@ -124,7 +120,15 @@ function mapGanttBars() {
border: t.startDate ? '' : '2px dashed var(--grey-300)',
},
},
}]))
}]
}
// We need a "real" ref object for the gantt bars to instantly update the tasks when they are dragged on the chart.
// A computed won't work directly.
function mapGanttBars() {
ganttBars.value = []
tasks.value.forEach(t => ganttBars.value.push(transformTaskToGanttBar(t)))
}
async function loadTasks() {
@ -168,11 +172,15 @@ async function updateTask(e) {
task.startDate = e.bar.startDate
task.endDate = e.bar.endDate
const taskService = new TaskService()
await taskService.update(task)
const r = await taskService.update(task)
// TODO: Loading animation
konrad marked this conversation as resolved Outdated

This and the three lines below should be combined to one watcher that trigger immediately.

loadTasks should accept these three as params, so that it's clear that these are needed to reload.

Something like:

watchEffect(() => loadTasks({
	dateTo: props.dateTo,
    dateFrom: props.dateFrom,
    showTasksWithoutDates: props.showTasksWithoutDates,
})
This and the three lines below should be combined to one watcher that trigger immediately. `loadTasks` should accept these three as params, so that it's clear that these are needed to reload. Something like: ``` watchEffect(() => loadTasks({ dateTo: props.dateTo, dateFrom: props.dateFrom, showTasksWithoutDates: props.showTasksWithoutDates, }) ```

Done.

Done.
for (const i in ganttBars.value) {
if(ganttBars.value[i][0].ganttBarConfig.id === task.id) {
ganttBars.value[i] = transformTaskToGanttBar(r)
}
}
}
const newTaskFieldActive = ref(false)
const newTaskTitleField = ref()
const newTaskTitle = ref('')