Skip to content

Commit 43cfa68

Browse files
committed
fix: wrong behavior of move card to other matrix
1 parent 210703d commit 43cfa68

1 file changed

Lines changed: 35 additions & 31 deletions

File tree

src/components/quadrant/quadrant.ts

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -390,14 +390,21 @@ export class QuadrantComponent extends Component {
390390
// Get source quadrant information
391391
const sourceQuadrantId =
392392
sourceColumnContent.getAttribute("data-quadrant-id");
393+
const actualSourceQuadrant = QUADRANT_DEFINITIONS.find(
394+
(q) => q.id === sourceQuadrantId
395+
);
393396

394-
if (targetQuadrant && sourceQuadrantId) {
397+
if (targetQuadrant && actualSourceQuadrant) {
395398
// Handle cross-quadrant moves
396399
if (targetQuadrantId !== sourceQuadrantId) {
397400
console.log(
398401
`Moving task ${taskId} from ${sourceQuadrantId} to ${targetQuadrantId}`
399402
);
400-
await this.updateTaskQuadrant(taskId, targetQuadrant);
403+
await this.updateTaskQuadrant(
404+
taskId,
405+
targetQuadrant,
406+
actualSourceQuadrant
407+
);
401408
} else if (event.oldIndex !== event.newIndex) {
402409
// Handle reordering within the same quadrant
403410
console.log(
@@ -409,22 +416,10 @@ export class QuadrantComponent extends Component {
409416
}
410417
}
411418

412-
private handleTaskMove(evt: any, targetQuadrant: QuadrantDefinition) {
413-
const taskEl = evt.item;
414-
const taskId = taskEl.getAttribute("data-task-id");
415-
416-
if (!taskId) return;
417-
418-
const task = this.tasks.find((t) => t.id === taskId);
419-
if (!task) return;
420-
421-
// Update task priority and tags based on quadrant
422-
this.updateTaskQuadrant(taskId, targetQuadrant);
423-
}
424-
425419
private async updateTaskQuadrant(
426420
taskId: string,
427-
quadrant: QuadrantDefinition
421+
quadrant: QuadrantDefinition,
422+
sourceQuadrant?: QuadrantDefinition
428423
) {
429424
const task = this.tasks.find((t) => t.id === taskId);
430425
if (!task) return;
@@ -444,31 +439,40 @@ export class QuadrantComponent extends Component {
444439
// Update tags in metadata
445440
const updatedTags = [...(updatedTask.metadata.tags || [])];
446441

447-
// Remove existing urgent/important tags
448-
const urgentTag = this.quadrantConfig.urgentTag || "#urgent";
449-
const importantTag =
450-
this.quadrantConfig.importantTag || "#important";
442+
// Get tag names to remove (from source quadrant if provided, otherwise from config)
443+
const tagsToRemove: string[] = [];
451444

452-
// Remove # prefix for comparison
453-
const urgentTagName = urgentTag.replace("#", "");
454-
const importantTagName = importantTag.replace("#", "");
445+
if (sourceQuadrant) {
446+
// Remove tags from source quadrant (keep # prefix since metadata.tags includes #)
447+
if (sourceQuadrant.urgentTag) {
448+
tagsToRemove.push(sourceQuadrant.urgentTag);
449+
}
450+
if (sourceQuadrant.importantTag) {
451+
tagsToRemove.push(sourceQuadrant.importantTag);
452+
}
453+
} else {
454+
// Fallback: remove all urgent/important tags from config
455+
const urgentTag = this.quadrantConfig.urgentTag || "#urgent";
456+
const importantTag =
457+
this.quadrantConfig.importantTag || "#important";
458+
tagsToRemove.push(urgentTag);
459+
tagsToRemove.push(importantTag);
460+
}
455461

456462
// Remove existing urgent/important tags
457463
const filteredTags = updatedTags.filter(
458-
(tag) => tag !== urgentTagName && tag !== importantTagName
464+
(tag) => !tagsToRemove.includes(tag)
459465
);
460466

461-
// Add new tags based on quadrant
467+
// Add new tags based on target quadrant (keep # prefix since metadata.tags includes #)
462468
if (quadrant.urgentTag) {
463-
const urgentTagName = quadrant.urgentTag.replace("#", "");
464-
if (!filteredTags.includes(urgentTagName)) {
465-
filteredTags.push(urgentTagName);
469+
if (!filteredTags.includes(quadrant.urgentTag)) {
470+
filteredTags.push(quadrant.urgentTag);
466471
}
467472
}
468473
if (quadrant.importantTag) {
469-
const importantTagName = quadrant.importantTag.replace("#", "");
470-
if (!filteredTags.includes(importantTagName)) {
471-
filteredTags.push(importantTagName);
474+
if (!filteredTags.includes(quadrant.importantTag)) {
475+
filteredTags.push(quadrant.importantTag);
472476
}
473477
}
474478

0 commit comments

Comments
 (0)