Temp

Author: 0c93aeca55

June 18, 2025

Views: 12

Edit 1 of 2


                

import { Component } from '@angular/core';

interface Task {
title: string;
stage: number; // 0 = Backlog, 1 = To Do, 2 = Ongoing, 3 = Done
}

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
stages: string[] = ['Backlog', 'To Do', 'Ongoing', 'Done'];
tasks: Task[] = [];
newTaskTitle: string = '';
selectedTask: Task | null = null;

addTask() {
if (this.newTaskTitle.trim()) {
this.tasks.push({ title: this.newTaskTitle.trim(), stage: 0 });
this.newTaskTitle = '';
}
}

selectTask(task: Task) {
this.selectedTask = task;
}

moveForward() {
if (this.selectedTask && this.selectedTask.stage < 3) {
this.selectedTask.stage++;
}
}

moveBack() {
if (this.selectedTask && this.selectedTask.stage > 0) {
this.selectedTask.stage--;
}
}

deleteTask() {
if (this.selectedTask) {
this.tasks = this.tasks.filter(t => t !== this.selectedTask);
this.selectedTask = null;
}
}

getTasksByStage(stage: number): Task[] {
return this.tasks.filter(task => task.stage === stage);
}
}

<div class="controls">
<input [(ngModel)]="newTaskTitle" placeholder="New Task" />
<button (click)="addTask()">Add Task</button>
<p>Selected Task: {{ selectedTask?.title || 'None' }}</p>
<button (click)="moveBack()" [disabled]="!selectedTask || selectedTask.stage === 0">Move Back</button>
<button (click)="moveForward()" [disabled]="!selectedTask || selectedTask.stage === 3">Move Forward</button>
<button (click)="deleteTask()" [disabled]="!selectedTask">Delete</button>
</div>

<div class="board">
<div class="column" *ngFor="let stage of stages; let i = index">
<h2>{{ stage }}</h2>
<div
class="task"
*ngFor="let task of getTasksByStage(i)"
[class.selected]="task === selectedTask"
(click)="selectTask(task)">
{{ task.title }}
</div>
</div>
</div>

.controls {
margin-bottom: 20px;
}

.board {
display: flex;
justify-content: space-between;
}

.column {
width: 23%;
padding: 10px;
border: 1px solid #ccc;
background-color: #f7f7f7;
border-radius: 4px;
}

.task {
background-color: #fff;
margin: 5px 0;
padding: 10px;
border: 1px solid #ddd;
cursor: pointer;
border-radius: 4px;
}

.task.selected {
background-color: #d3e5ff;
border-color: #2a7ae2;
}