fix(portale): la legenda spiega "Cancellata" solo a chi ne ha una
Due sostituzioni del commit precedente non avevano agganciato — il testo cercato aveva un a capo diverso — e la frase che spiega lo stato non è mai finita nel file. Rifatte con verifica. Nel rimetterla, condizionata: la voce «Cancellata» e la sua riga di spiegazione compaiono solo se quel progetto ha davvero un task cancellato. Nella maggior parte dei casi non ce n'è nessuno, e raccontare a tutti uno stato che non vedranno mai è rumore in un riquadro che serve a togliere dubbi. La condizione guarda i task veri, mai una preferenza: se una cancellata c'è, la legenda la spiega. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -172,11 +172,16 @@ export function TaskStatusPill({ status }: { status: TaskStatus }) {
|
||||
* disciplina introdotta insieme allo stato "in revisione", dopo che due liste
|
||||
* fisse avevano già fatto sparire task dal portale senza un errore.
|
||||
*/
|
||||
export function TaskStatusLegend() {
|
||||
export function TaskStatusLegend({ showCancelled = false }: { showCancelled?: boolean }) {
|
||||
// "Cancellata" è l'unica voce condizionata: nella maggior parte dei progetti non
|
||||
// ce n'è nessuna, e spiegare a tutti uno stato che non vedranno mai è rumore.
|
||||
// La condizione guarda i task veri: se una cancellata c'è, la legenda la spiega.
|
||||
const statuses = TASK_STATUSES.filter((s) => s !== "cancelled" || showCancelled);
|
||||
|
||||
return (
|
||||
<div className="mb-6 rounded-lg bg-muted/50 px-4 py-3">
|
||||
<ul className="flex flex-wrap items-center gap-x-5 gap-y-2">
|
||||
{TASK_STATUSES.map((status) => (
|
||||
{statuses.map((status) => (
|
||||
<li key={status} className="flex items-center gap-1.5">
|
||||
<span
|
||||
aria-hidden="true"
|
||||
@@ -193,6 +198,13 @@ export function TaskStatusLegend() {
|
||||
aspetta il tuo riscontro: scrivicelo dalla chat della fase. Ogni pagina include un giro di
|
||||
revisione.
|
||||
</p>
|
||||
{showCancelled && (
|
||||
<p className="mt-1 text-[11px] leading-snug text-muted-foreground">
|
||||
<span className="font-semibold text-foreground">Cancellata</span> — l'attività è
|
||||
stata tolta dal lavoro, d'accordo con te: resta scritta ma non verrà realizzata, e
|
||||
non pesa sull'avanzamento.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ export function PhaseViewToggle({
|
||||
token: string;
|
||||
}) {
|
||||
const [view, setView] = useState<"timeline" | "kanban">("timeline");
|
||||
const hasCancelled = phases.some((p) => p.tasks.some((t) => t.status === "cancelled"));
|
||||
|
||||
return (
|
||||
<div>
|
||||
@@ -41,7 +42,7 @@ export function PhaseViewToggle({
|
||||
</div>
|
||||
|
||||
{/* Fuori dallo switch: gli stati sono gli stessi in entrambe le viste */}
|
||||
<TaskStatusLegend />
|
||||
<TaskStatusLegend showCancelled={hasCancelled} />
|
||||
|
||||
{view === "timeline" ? timelineView : <ClientKanban phases={phases} token={token} />}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user