You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

83 lines
2.1 KiB

  1. @page "/plants/list"
  2. @page "/plants"
  3. @using Models.BaseData
  4. @inject IPlantsUtils PlantsUtils
  5. <h3>Plant List</h3>
  6. <a class="btn btn-primary mb-2" href="/plants/add">Create New Plant </a>
  7. @if (plants == null)
  8. {
  9. <p><em>Loading...</em></p>
  10. }
  11. else if (!plants.Any())
  12. {
  13. <p>No plants available.</p>
  14. }
  15. else
  16. {
  17. <table class="@Statics.TableClass">
  18. <thead>
  19. <tr>
  20. <th>Name</th>
  21. <th>Icon</th>
  22. <th>Knowledge Base</th>
  23. <th>Actions</th>
  24. </tr>
  25. </thead>
  26. <tbody>
  27. @foreach (var plant in plants)
  28. {
  29. <tr>
  30. <td>@plant.Name</td>
  31. <td><img src="@Statics.UploadFolder/@plant.ImageFileName" style="width:150px;" /></td>
  32. <td>@plant.KnowledgeBase</td>
  33. <td>
  34. <button class="btn btn-primary" @onclick="() => EditPlant(plant.Id)">Edit</button>
  35. <button class="btn btn-danger" @onclick="() => DeletePlant(plant.Id)">Delete</button>
  36. </td>
  37. </tr>
  38. }
  39. </tbody>
  40. </table>
  41. }
  42. @code {
  43. private List<PlantViewModel> plants;
  44. protected override async Task OnInitializedAsync()
  45. {
  46. await LoadPlants();
  47. }
  48. private async Task LoadPlants()
  49. {
  50. var response = await PlantsUtils.List();
  51. if (response.IsSuccessStatusCode)
  52. {
  53. plants = await response.Content.ReadFromJsonAsync<List<PlantViewModel>>();
  54. }
  55. else
  56. {
  57. plants = new List<PlantViewModel>();
  58. }
  59. }
  60. private void EditPlant(Guid? id)
  61. {
  62. NavigationManager.NavigateTo($"/plants/edit/{id}");
  63. }
  64. private async Task DeletePlant(Guid? id)
  65. {
  66. var confirm = await SwalUtils.ShowSwal("", "Are you sure you want to delete this plant?", SweetAlertIcon.Question);
  67. if (!confirm.IsConfirmed)
  68. return;
  69. var response = await PlantsUtils.Delete(id.Value);
  70. if (response.IsSuccessStatusCode)
  71. {
  72. await LoadPlants();
  73. }
  74. }
  75. }