mirror of
https://github.com/Stefan-5422/-T5-Elektrifikatsiya.git
synced 2026-09-04 00:45:58 +02:00
75 lines
1.6 KiB
C#
75 lines
1.6 KiB
C#
using Blazorise;
|
|
|
|
using Elektrifikatsiya.Components.TodoApp;
|
|
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Elektrifikatsiya.Components.TodoApp;
|
|
public abstract class BaseTodoItems : ComponentBase
|
|
{
|
|
protected Validations validations;
|
|
|
|
protected string description;
|
|
|
|
protected Filter filter = Filter.All;
|
|
|
|
protected List<Todo> todos = new()
|
|
{
|
|
new() { Description = "Buy milk" },
|
|
new() { Description = "Call John regarding the meeting" },
|
|
new() { Description = "Walk a dog" },
|
|
};
|
|
|
|
protected IEnumerable<Todo> Todos
|
|
{
|
|
get
|
|
{
|
|
var query = from t in todos select t;
|
|
|
|
if (filter == Filter.Active)
|
|
query = from q in query where !q.Completed select q;
|
|
|
|
if (filter == Filter.Completed)
|
|
query = from q in query where q.Completed select q;
|
|
|
|
return query;
|
|
}
|
|
}
|
|
|
|
protected void SetFilter(Filter filter)
|
|
{
|
|
this.filter = filter;
|
|
}
|
|
|
|
protected void OnCheckAll(bool isChecked)
|
|
{
|
|
todos.ForEach(x => x.Completed = isChecked);
|
|
}
|
|
|
|
protected async Task OnAddTodo()
|
|
{
|
|
if (await validations.ValidateAll())
|
|
{
|
|
todos.Add(new() { Description = description });
|
|
description = null;
|
|
|
|
await validations.ClearAll();
|
|
}
|
|
}
|
|
|
|
protected void OnClearCompleted()
|
|
{
|
|
todos.RemoveAll(x => x.Completed);
|
|
filter = Filter.All;
|
|
}
|
|
|
|
protected Task OnTodoStatusChanged(bool isChecked)
|
|
{
|
|
return InvokeAsync(StateHasChanged);
|
|
}
|
|
}
|