fix: moved complexity report handling to list tasks rather than list tasks direct
This commit is contained in:
@@ -51,6 +51,7 @@ export async function listTasksDirect(args, log) {
|
|||||||
const resultData = listTasks(
|
const resultData = listTasks(
|
||||||
tasksJsonPath,
|
tasksJsonPath,
|
||||||
statusFilter,
|
statusFilter,
|
||||||
|
reportPath,
|
||||||
withSubtasksFilter,
|
withSubtasksFilter,
|
||||||
'json'
|
'json'
|
||||||
);
|
);
|
||||||
@@ -66,20 +67,6 @@ export async function listTasksDirect(args, log) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add complexity scores to tasks if report exists
|
|
||||||
const complexityReport = readComplexityReport(reportPath);
|
|
||||||
if (complexityReport && complexityReport.complexityAnalysis) {
|
|
||||||
resultData.tasks = resultData.tasks.map((task) => {
|
|
||||||
const analysis = complexityReport.complexityAnalysis.find(
|
|
||||||
(a) => a.taskId === task.id
|
|
||||||
);
|
|
||||||
if (analysis) {
|
|
||||||
return { ...task, complexityScore: analysis.complexityScore };
|
|
||||||
}
|
|
||||||
return task;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
log.info(
|
log.info(
|
||||||
`Core listTasks function retrieved ${resultData.tasks.length} tasks`
|
`Core listTasks function retrieved ${resultData.tasks.length} tasks`
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1756,6 +1756,7 @@ async function updateSingleTaskStatus(
|
|||||||
function listTasks(
|
function listTasks(
|
||||||
tasksPath,
|
tasksPath,
|
||||||
statusFilter,
|
statusFilter,
|
||||||
|
reportPath = null,
|
||||||
withSubtasks = false,
|
withSubtasks = false,
|
||||||
outputFormat = 'text'
|
outputFormat = 'text'
|
||||||
) {
|
) {
|
||||||
@@ -1770,6 +1771,19 @@ function listTasks(
|
|||||||
throw new Error(`No valid tasks found in ${tasksPath}`);
|
throw new Error(`No valid tasks found in ${tasksPath}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add complexity scores to tasks if report exists
|
||||||
|
const complexityReport = readComplexityReport(reportPath);
|
||||||
|
if (complexityReport && complexityReport.complexityAnalysis) {
|
||||||
|
data.tasks = data.tasks.map((task) => {
|
||||||
|
const analysis = complexityReport.complexityAnalysis.find(
|
||||||
|
(a) => a.taskId === task.id
|
||||||
|
);
|
||||||
|
if (analysis) {
|
||||||
|
return { ...task, complexityScore: analysis.complexityScore };
|
||||||
|
}
|
||||||
|
return task;
|
||||||
|
});
|
||||||
|
}
|
||||||
// Filter tasks by status if specified
|
// Filter tasks by status if specified
|
||||||
const filteredTasks =
|
const filteredTasks =
|
||||||
statusFilter && statusFilter.toLowerCase() !== 'all' // <-- Added check for 'all'
|
statusFilter && statusFilter.toLowerCase() !== 'all' // <-- Added check for 'all'
|
||||||
@@ -2151,9 +2165,16 @@ function listTasks(
|
|||||||
// Make dependencies column smaller as requested (-20%)
|
// Make dependencies column smaller as requested (-20%)
|
||||||
const depsWidthPct = 20;
|
const depsWidthPct = 20;
|
||||||
|
|
||||||
|
const complexityWidthPct = 10;
|
||||||
|
|
||||||
// Calculate title/description width as remaining space (+20% from dependencies reduction)
|
// Calculate title/description width as remaining space (+20% from dependencies reduction)
|
||||||
const titleWidthPct =
|
const titleWidthPct =
|
||||||
100 - idWidthPct - statusWidthPct - priorityWidthPct - depsWidthPct;
|
100 -
|
||||||
|
idWidthPct -
|
||||||
|
statusWidthPct -
|
||||||
|
priorityWidthPct -
|
||||||
|
depsWidthPct -
|
||||||
|
complexityWidthPct;
|
||||||
|
|
||||||
// Allow 10 characters for borders and padding
|
// Allow 10 characters for borders and padding
|
||||||
const availableWidth = terminalWidth - 10;
|
const availableWidth = terminalWidth - 10;
|
||||||
@@ -2164,6 +2185,9 @@ function listTasks(
|
|||||||
const priorityWidth = Math.floor(availableWidth * (priorityWidthPct / 100));
|
const priorityWidth = Math.floor(availableWidth * (priorityWidthPct / 100));
|
||||||
const depsWidth = Math.floor(availableWidth * (depsWidthPct / 100));
|
const depsWidth = Math.floor(availableWidth * (depsWidthPct / 100));
|
||||||
const titleWidth = Math.floor(availableWidth * (titleWidthPct / 100));
|
const titleWidth = Math.floor(availableWidth * (titleWidthPct / 100));
|
||||||
|
const complexityWidth = Math.floor(
|
||||||
|
availableWidth * (complexityWidthPct / 100)
|
||||||
|
);
|
||||||
|
|
||||||
// Create a table with correct borders and spacing
|
// Create a table with correct borders and spacing
|
||||||
const table = new Table({
|
const table = new Table({
|
||||||
@@ -2172,9 +2196,17 @@ function listTasks(
|
|||||||
chalk.cyan.bold('Title'),
|
chalk.cyan.bold('Title'),
|
||||||
chalk.cyan.bold('Status'),
|
chalk.cyan.bold('Status'),
|
||||||
chalk.cyan.bold('Priority'),
|
chalk.cyan.bold('Priority'),
|
||||||
chalk.cyan.bold('Dependencies')
|
chalk.cyan.bold('Dependencies'),
|
||||||
|
chalk.cyan.bold('Complexity')
|
||||||
|
],
|
||||||
|
colWidths: [
|
||||||
|
idWidth,
|
||||||
|
titleWidth,
|
||||||
|
statusWidth,
|
||||||
|
priorityWidth,
|
||||||
|
depsWidth,
|
||||||
|
complexityWidth
|
||||||
],
|
],
|
||||||
colWidths: [idWidth, titleWidth, statusWidth, priorityWidth, depsWidth],
|
|
||||||
style: {
|
style: {
|
||||||
head: [], // No special styling for header
|
head: [], // No special styling for header
|
||||||
border: [], // No special styling for border
|
border: [], // No special styling for border
|
||||||
@@ -2219,7 +2251,10 @@ function listTasks(
|
|||||||
truncate(cleanTitle, titleWidth - 3),
|
truncate(cleanTitle, titleWidth - 3),
|
||||||
status,
|
status,
|
||||||
priorityColor(truncate(task.priority || 'medium', priorityWidth - 2)),
|
priorityColor(truncate(task.priority || 'medium', priorityWidth - 2)),
|
||||||
depText // No truncation for dependencies
|
depText, // No truncation for dependencies
|
||||||
|
task.complexityScore
|
||||||
|
? getComplexityWithColor(task.complexityScore)
|
||||||
|
: chalk.gray('N/A')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Add subtasks if requested
|
// Add subtasks if requested
|
||||||
@@ -2280,7 +2315,10 @@ function listTasks(
|
|||||||
chalk.dim(`└─ ${truncate(subtask.title, titleWidth - 5)}`),
|
chalk.dim(`└─ ${truncate(subtask.title, titleWidth - 5)}`),
|
||||||
getStatusWithColor(subtask.status, true),
|
getStatusWithColor(subtask.status, true),
|
||||||
chalk.dim('-'),
|
chalk.dim('-'),
|
||||||
subtaskDepText // No truncation for dependencies
|
subtaskDepText, // No truncation for dependencies
|
||||||
|
subtask.complexityScore
|
||||||
|
? chalk.gray(`${subtask.complexityScore}`)
|
||||||
|
: chalk.gray('N/A')
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user