Add task archive and restore

This commit is contained in:
Gordon
2021-05-27 12:49:13 +01:00
parent 79b43b204b
commit 720202e194
10 changed files with 1614 additions and 776 deletions

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react';
import React, { useState, useRef } from 'react';
import { ResponsiveContainer, LineChart, Line, CartesianGrid, XAxis, YAxis, Tooltip } from 'recharts';
import VSCodeApi from "./VSCodeApi";
import formatDate from 'dateformat';
@ -40,44 +40,96 @@ const Burndown = ({ name, sprints, burndownData, dateFormat, vscode }: {
: formatDate(burndownData.series[0].to, 'yyyy-mm-dd')
);
const refreshBurndownData = debounce(500, settings => {
const refreshBurndownData = useRef(debounce(500, settings => {
vscode.postMessage({
command: 'kanbn.refreshBurndownData',
...Object.assign(
...settings
});
})).current;
const handleChangeSprint = ({ target: { value }}) => {
setSprint(value);
refreshBurndownData(
Object.assign(
{
sprintMode,
sprint,
startDate,
endDate
},
settings
{
sprint: value
}
)
});
});
const handleChangeSprint = ({ target: { value }}) => {
setSprint(value);
refreshBurndownData({ sprint: value });
);
};
const handleChangeStartDate = ({ target: { value }}) => {
setStartDate(value);
refreshBurndownData({ startDate: value });
refreshBurndownData(
Object.assign(
{
sprintMode,
sprint,
startDate,
endDate
},
{
startDate: value
}
)
);
};
const handleChangeEndDate = ({ target: { value }}) => {
setEndDate(value);
refreshBurndownData({ endDate: value });
refreshBurndownData(
Object.assign(
{
sprintMode,
sprint,
startDate,
endDate
},
{
endDate: value
}
)
);
};
const handleClickSprintMode = () => {
setSprintMode(true);
refreshBurndownData({ sprintMode: true });
refreshBurndownData(
Object.assign(
{
sprintMode,
sprint,
startDate,
endDate
},
{
sprintMode: true
}
)
);
};
const handleClickDateMode = () => {
setSprintMode(false);
refreshBurndownData({ sprintMode: false });
refreshBurndownData(
Object.assign(
{
sprintMode,
sprint,
startDate,
endDate
},
{
sprintMode: false
}
)
);
};
const chartData = burndownData.series.length > 0

View File

@ -107,6 +107,16 @@ const TaskEditor = ({ task, tasks, columnName, columnNames, dateFormat, panelUui
});
};
// Called when the archive task button is clicked
const handleArchiveTask = values => {
vscode.postMessage({
command: 'kanbn.archive',
taskId: task!.id,
taskData: values,
panelUuid
});
}
// Check if a task's due date is in the past
const checkOverdue = (values: { metadata: { due?: string } }) => {
if ('due' in values.metadata && values.metadata.due !== undefined) {
@ -487,6 +497,16 @@ const TaskEditor = ({ task, tasks, columnName, columnNames, dateFormat, panelUui
>
<i className="codicon codicon-trash"></i>Delete
</button>}
{editing && <button
type="button"
className="kanbn-task-editor-button kanbn-task-editor-button-archive"
title="Archive task"
onClick={() => {
handleArchiveTask(values);
}}
>
<i className="codicon codicon-archive"></i>Archive
</button>}
<button
type="submit"
className="kanbn-task-editor-button kanbn-task-editor-button-submit"