Created
January 1, 2026 12:31
-
-
Save sunmeat/192c0bd55a964c60ad67607151ab814b to your computer and use it in GitHub Desktop.
вью для Sieve
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| @model Soccer.Models.IndexViewModel | |
| @{ | |
| ViewData["Title"] = "Гравці"; | |
| Layout = "~/Views/Shared/_Layout.cshtml"; | |
| string filters = Context.Request.Query["filters"].FirstOrDefault() ?? ""; | |
| string sorts = Context.Request.Query["sorts"].FirstOrDefault() ?? ""; | |
| string pageSize = Context.Request.Query["pageSize"].FirstOrDefault() ?? Model.PageSize.ToString(); | |
| int currentTeamId = ViewBag.CurrentTeamId as int? ?? 0; | |
| string baseQuery = $"?filters={System.Web.HttpUtility.UrlEncode(filters)}&sorts={System.Web.HttpUtility.UrlEncode(sorts)}&pageSize={pageSize}"; | |
| } | |
| <h1 class="mb-4">Список гравців</h1> | |
| <form method="get" class="card shadow-sm mb-4 border-0"> | |
| <div class="card-body"> | |
| <div class="row g-3 align-items-end"> | |
| <div class="col-md-6"> | |
| <label class="form-label fw-medium">Фільтри (через кому)</label> | |
| <input name="filters" class="form-control" value="@filters" | |
| placeholder="Name@@=Мба, Position@@=вінгер, Age>25" /> | |
| </div> | |
| <div class="col-md-2"> | |
| <label class="form-label fw-medium">Сортування</label> | |
| <input name="sorts" class="form-control" value="@sorts" | |
| placeholder="-Age, Name" /> | |
| </div> | |
| <div class="col-md-2"> | |
| <label class="form-label fw-medium">На стор.</label> | |
| <input name="pageSize" type="number" class="form-control" value="@pageSize" min="5" max="50" /> | |
| </div> | |
| <div class="col-md-2"> | |
| <button type="submit" class="btn btn-primary w-100">Застосувати</button> | |
| </div> | |
| </div> | |
| <small class="text-muted d-block mt-2"> | |
| Приклади: Name@@=Кіліан (містить), Age>=25 (від 25), Position==Форвард, TeamId==1 | |
| </small> | |
| </div> | |
| </form> | |
| <div class="card shadow-sm mb-4 border-0"> | |
| <div class="card-body"> | |
| <h5 class="card-title mb-3">Швидкий фільтр по командах</h5> | |
| <div class="d-flex flex-wrap gap-2"> | |
| <a href="?pageSize=@pageSize&sorts=@sorts" class="btn btn-sm @(currentTeamId == 0 ? "btn-primary" : "btn-outline-primary")"> | |
| Всі команди | |
| </a> | |
| @foreach (var team in ViewBag.Teams as List<Soccer.Models.Team>) | |
| { | |
| <a href="[email protected]&pageSize=@pageSize&sorts=@sorts" | |
| class="btn btn-sm @(team.Id == currentTeamId ? "btn-primary" : "btn-outline-primary")"> | |
| @team.Name | |
| </a> | |
| } | |
| </div> | |
| </div> | |
| </div> | |
| <p class="mb-3"> | |
| <a asp-action="Create" class="btn btn-success">Додати нового гравця</a> | |
| <span class="ms-3 text-muted">Знайдено: @Model.TotalCount гравців</span> | |
| </p> | |
| <table class="table table-striped table-hover align-middle"> | |
| <thead class="table-light"> | |
| <tr> | |
| <th>Ім'я</th> | |
| <th>Вік</th> | |
| <th>Позиція</th> | |
| <th>Команда</th> | |
| <th class="text-end">Дії</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| @if (!Model.Players.Any()) | |
| { | |
| <tr> | |
| <td colspan="5" class="text-center text-muted py-5">Гравців не знайдено, ой вей...</td> | |
| </tr> | |
| } | |
| else | |
| { | |
| @foreach (var item in Model.Players) | |
| { | |
| <tr> | |
| <td><strong>@item.Name</strong></td> | |
| <td>@item.Age</td> | |
| <td>@item.Position</td> | |
| <td>@(item.Team?.Name ?? "-")</td> | |
| <td class="text-end"> | |
| <a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-sm btn-outline-primary">Редагувати</a> | |
| <a asp-action="Details" asp-route-id="@item.Id" class="btn btn-sm btn-outline-info">Деталі</a> | |
| <a asp-action="Delete" asp-route-id="@item.Id" class="btn btn-sm btn-outline-danger">Видалити</a> | |
| </td> | |
| </tr> | |
| } | |
| } | |
| </tbody> | |
| </table> | |
| @if (Model.TotalPages > 1) | |
| { | |
| <nav aria-label="Пагінація"> | |
| <ul class="pagination justify-content-center"> | |
| @if (Model.HasPrevious) | |
| { | |
| <li class="page-item"> | |
| <a class="page-link" href="@baseQuery&page=@(Model.Page - 1)">Попередня</a> | |
| </li> | |
| } | |
| else | |
| { | |
| <li class="page-item disabled"><span class="page-link">Попередня</span></li> | |
| } | |
| @for (int i = 1; i <= Model.TotalPages; i++) | |
| { | |
| if (i == Model.Page) | |
| { | |
| <li class="page-item active"><span class="page-link">@i</span></li> | |
| } | |
| else | |
| { | |
| <li class="page-item"> | |
| <a class="page-link" href="@baseQuery&page=@i">@i</a> | |
| </li> | |
| } | |
| } | |
| @if (Model.HasNext) | |
| { | |
| <li class="page-item"> | |
| <a class="page-link" href="@baseQuery&page=@(Model.Page + 1)">Наступна</a> | |
| </li> | |
| } | |
| else | |
| { | |
| <li class="page-item disabled"><span class="page-link">Наступна</span></li> | |
| } | |
| </ul> | |
| </nav> | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment