feat: Add Lawn Care Tips section and improve Dashboard layout

This commit is contained in:
Blake Ridgway 2025-06-17 18:09:59 -05:00
parent 1f50fedb80
commit 985c944e16
17 changed files with 689 additions and 18 deletions

View file

@ -90,16 +90,17 @@
</div>
<!-- Add New Event Card -->
<div class="col-md-3">
<div class="card h-100 bg-light">
<div class="card-body d-flex flex-column justify-content-center">
<h5 class="card-title">Log a New Activity</h5>
<p class="card-text">Keep your dashboard up to date.</p>
<a asp-controller="LawnCareEvents" asp-action="Create" class="btn btn-primary mt-auto">
Add New Event
</a>
<div class="row mt-4 text-center">
<div class="col-md-3">
<div class="card h-100 bg-light">
<div class="card-body d-flex flex-column justify-content-center">
<h5 class="card-title">Log a New Activity</h5>
<p class="card-text">Keep your dashboard up to date.</p>
<a asp-controller="LawnCareEvents" asp-action="Create" class="btn btn-primary mt-auto">
Add New Event
</a>
</div>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,40 @@
@model turf_tasker.Models.LawnCareTip
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>LawnCareTip</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Category" class="control-label"></label>
<select asp-for="Category" class="form-control"></select>
<span asp-validation-for="Category" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Content" class="control-label"></label>
<textarea asp-for="Content" class="form-control"></textarea>
<span asp-validation-for="Content" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>

View file

@ -0,0 +1,39 @@
@model turf_tasker.Models.LawnCareTip
@{
ViewData["Title"] = "Delete";
}
<h1>Delete</h1>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>LawnCareTip</h4>
<hr />
<dl class="row">
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Title)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Title)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Category)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Category)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Content)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Content)
</dd>
</dl>
<form asp-action="Delete">
<input type="hidden" asp-for="Id" />
<input type="submit" value="Delete" class="btn btn-danger" /> |
<a asp-action="Index">Back to List</a>
</form>
</div>

View file

@ -0,0 +1,36 @@
@model turf_tasker.Models.LawnCareTip
@{
ViewData["Title"] = "Details";
}
<h1>Details</h1>
<div>
<h4>LawnCareTip</h4>
<hr />
<dl class="row">
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Title)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Title)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Category)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Category)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Content)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Content)
</dd>
</dl>
</div>
<div>
<a asp-action="Edit" asp-route-id="@Model?.Id">Edit</a> |
<a asp-action="Index">Back to List</a>
</div>

View file

@ -0,0 +1,41 @@
@model turf_tasker.Models.LawnCareTip
@{
ViewData["Title"] = "Edit";
}
<h1>Edit</h1>
<h4>LawnCareTip</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Category" class="control-label"></label>
<select asp-for="Category" class="form-control"></select>
<span asp-validation-for="Category" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Content" class="control-label"></label>
<textarea asp-for="Content" class="form-control"></textarea>
<span asp-validation-for="Content" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>

View file

@ -0,0 +1,47 @@
@model IEnumerable<turf_tasker.Models.LawnCareTip>
@{
ViewData["Title"] = "Index";
}
<h1>Index</h1>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.Title)
</th>
<th>
@Html.DisplayNameFor(model => model.Category)
</th>
<th>
@Html.DisplayNameFor(model => model.Content)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
<td>
@Html.DisplayFor(modelItem => item.Category)
</td>
<td>
@Html.DisplayFor(modelItem => item.Content)
</td>
<td>
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>

View file

@ -12,7 +12,6 @@
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm border-bottom box-shadow mb-3 navbar-custom">
<div class="container-fluid">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">MowLog</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
@ -20,11 +19,14 @@
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Index">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="LawnCareEvents" asp-action="Index">Mow Log</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-controller="LawnCareTip" asp-action="Index">Lawn Tips</a>
</li>
</ul>
</div>
</div>