Show proposals and votes from TaskStream on a project's page
The most voted bug reports and ideas, the link to send one while the board takes them, and how many want each epic on the roadmap. The mock API serves a showcase for the catalogue so every section can be seen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -169,6 +169,38 @@ for (const listed of data['/public/v1/projects']) {
|
||||
};
|
||||
}
|
||||
|
||||
// The catalogue has a board in TaskStream: its showcase is served here too,
|
||||
// so the roadmap, releases, proposals and first issues show without one.
|
||||
const showcase = {
|
||||
project: { id: 'ts-1', key: 'CAT', name: 'Catálogo abierto', description: null },
|
||||
activeSprint: { name: 'Sprint 4', goal: 'Buscar por etiqueta', startDate: '2026-10-05', endDate: '2026-10-19', percent: 40 },
|
||||
roadmap: [
|
||||
{ key: 'CAT-1', title: 'Fichas accesibles', startDate: '2026-07-01', dueDate: '2026-09-15', percent: 100, done: true, votes: 2, path: '/p/CAT/issues/CAT-1' },
|
||||
{ key: 'CAT-7', title: 'Búsqueda por etiquetas', startDate: '2026-09-20', dueDate: '2026-11-30', percent: 45, done: false, votes: 9, path: '/p/CAT/issues/CAT-7' },
|
||||
{ key: 'CAT-12', title: 'Exportar a PDF', startDate: null, dueDate: '2027-02-01', percent: 0, done: false, votes: 1, path: '/p/CAT/issues/CAT-12' },
|
||||
],
|
||||
releases: [
|
||||
{ name: '1.2', status: 'PLANNED', targetDate: '2026-11-30', releasedAt: null, percent: 60, notes: null },
|
||||
{ name: '1.1', status: 'RELEASED', targetDate: null, releasedAt: '2026-09-16', percent: 100, notes: '- Fichas accesibles\n- Arreglos en móvil' },
|
||||
],
|
||||
goodFirst: [{ key: 'CAT-21', title: 'Traducir los avisos al catalán', type: 't-task', path: '/p/CAT/issues/CAT-21' }],
|
||||
proposals: {
|
||||
open: true,
|
||||
path: '/p/CAT/proponer',
|
||||
top: [
|
||||
{ key: 'CAT-30', title: 'Modo oscuro', type: 't-feature', path: '/p/CAT/issues/CAT-30', votes: 14 },
|
||||
{ key: 'CAT-28', title: 'El buscador no encuentra palabras con tilde', type: 't-bug', path: '/p/CAT/issues/CAT-28', votes: 6 },
|
||||
{ key: 'CAT-33', title: 'Compartir una ficha por enlace corto', type: 't-feature', path: '/p/CAT/issues/CAT-33', votes: 1 },
|
||||
],
|
||||
},
|
||||
};
|
||||
data['/public/v1/projects/catalogo'].taskstream = {
|
||||
key: 'CAT',
|
||||
url: 'https://taskstream.pireon.dev/p/CAT',
|
||||
web_url: 'https://taskstream.pireon.dev',
|
||||
showcase_url: 'http://localhost:4599/taskstream/CAT/showcase',
|
||||
};
|
||||
|
||||
// Calls link to their own page, and one of them is closed so the page can
|
||||
// show what a visitor sees when a link to a filled call is still out there.
|
||||
for (const call of data['/public/v1/calls']) {
|
||||
@@ -237,6 +269,12 @@ createServer((req, res) => {
|
||||
|
||||
res.setHeader('content-type', 'application/json');
|
||||
|
||||
// TaskStream answers its showcase bare, not inside `data`.
|
||||
if (path === '/taskstream/CAT/showcase') {
|
||||
res.end(JSON.stringify(showcase));
|
||||
return;
|
||||
}
|
||||
|
||||
// The two write endpoints: accept whatever arrives, as the real API does
|
||||
// for a valid submission.
|
||||
if (req.method === 'POST') {
|
||||
|
||||
Reference in New Issue
Block a user