fix(kanban): make sure the task position is calculated correctly
The very first task in a bucket always has the position 0. Now, if we move another task in front of that, it too gets the position 0 assigned. That means the two first tasks now both have the position 0 and are not sorted correctly. This commit fixes that: When moving a task to the very first position it checks if the task now on the second position also has position 0 assigned to it. If that's the case, we'll now update that task's position as well to make sure it has another position than 0.
This commit is contained in:
parent
302728526a
commit
99cd68ad43
1 changed files with 19 additions and 3 deletions
|
@ -408,7 +408,6 @@ export default defineComponent({
|
||||||
// of the drop target works all the time.
|
// of the drop target works all the time.
|
||||||
const bucketIndex = parseInt(e.to.dataset.bucketIndex)
|
const bucketIndex = parseInt(e.to.dataset.bucketIndex)
|
||||||
|
|
||||||
|
|
||||||
const newBucket = this.buckets[bucketIndex]
|
const newBucket = this.buckets[bucketIndex]
|
||||||
|
|
||||||
// HACK:
|
// HACK:
|
||||||
|
@ -429,11 +428,28 @@ export default defineComponent({
|
||||||
const taskAfter = newBucket.tasks[newTaskIndex + 1] ?? null
|
const taskAfter = newBucket.tasks[newTaskIndex + 1] ?? null
|
||||||
|
|
||||||
const newTask = cloneDeep(task) // cloning the task to avoid vuex store mutations
|
const newTask = cloneDeep(task) // cloning the task to avoid vuex store mutations
|
||||||
newTask.bucketId = newBucket.id,
|
newTask.bucketId = newBucket.id
|
||||||
newTask.kanbanPosition = calculateItemPosition(taskBefore !== null ? taskBefore.kanbanPosition : null, taskAfter !== null ? taskAfter.kanbanPosition : null)
|
newTask.kanbanPosition = calculateItemPosition(
|
||||||
|
taskBefore !== null ? taskBefore.kanbanPosition : null,
|
||||||
|
taskAfter !== null ? taskAfter.kanbanPosition : null,
|
||||||
|
)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.$store.dispatch('tasks/update', newTask)
|
await this.$store.dispatch('tasks/update', newTask)
|
||||||
|
|
||||||
|
// Make sure the first and second task don't both get position 0 assigned
|
||||||
|
if(newTaskIndex === 0 && taskAfter.kanbanPosition === 0) {
|
||||||
|
console.log('first', taskAfter.id, taskAfter.kanbanPosition)
|
||||||
|
const taskAfterAfter = newBucket.tasks[newTaskIndex + 2] ?? null
|
||||||
|
const newTaskAfter = cloneDeep(taskAfter) // cloning the task to avoid vuex store mutations
|
||||||
|
newTaskAfter.bucketId = newBucket.id
|
||||||
|
newTaskAfter.kanbanPosition = calculateItemPosition(
|
||||||
|
0,
|
||||||
|
taskAfterAfter !== null ? taskAfterAfter.kanbanPosition : null,
|
||||||
|
)
|
||||||
|
|
||||||
|
await this.$store.dispatch('tasks/update', newTaskAfter)
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
this.taskUpdating[task.id] = false
|
this.taskUpdating[task.id] = false
|
||||||
this.oneTaskUpdating = false
|
this.oneTaskUpdating = false
|
||||||
|
|
Loading…
Reference in a new issue