Init commit

This commit is contained in:
Blake Ridgway 2025-06-17 13:22:51 -05:00
parent 9ab798fd0f
commit 1f50fedb80
87 changed files with 75678 additions and 0 deletions

View file

@ -0,0 +1,71 @@
@model turf_tasker.Models.LawnCareEvent
@{
ViewData["Title"] = "Create";
}
<h1>Create</h1>
<h4>LawnCareEvent</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="EventType" class="control-label"></label>
<select asp-for="EventType" class="form-control" asp-items="Html.GetEnumSelectList<LawnCareEventType>()"></select>
<span asp-validation-for="EventType" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="EventDate" class="control-label"></label>
<input asp-for="EventDate" class="form-control" />
<span asp-validation-for="EventDate" class="text-danger"></span>
</div>
<div id="mowingPatternGroup">
<div class="form-group">
<label asp-for="MowingPattern" class="control-label"></label>
<select asp-for="MowingPattern" class="form-control" asp-items="Html.GetEnumSelectList<MowingPattern>()"></select>
<span asp-validation-for="MowingPattern" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Notes" class="control-label"></label>
<textarea asp-for="Notes" class="form-control"></textarea>
<span asp-validation-for="Notes" class="text-danger"></span>
</div>
<div class="form-group mt-3">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script type="text/javascript">
$(document).ready(function () {
function toggleMowingPattern() {
var selectedEventType = $("#EventType").val();
if (selectedEventType == '0') { // '0' corresponds to Mowing
$("#mowingPatternGroup").show();
} else {
$("#mowingPatternGroup").hide();
}
}
toggleMowingPattern();
$("#EventType").on("change", function () {
toggleMowingPattern();
});
});
</script>
}

View file

@ -0,0 +1,45 @@
@model turf_tasker.Models.LawnCareEvent
@{
ViewData["Title"] = "Delete";
}
<h1>Delete</h1>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>Lawn Care Event</h4>
<hr />
<dl class="row">
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.EventType)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.EventType)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.EventDate)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.EventDate)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.MowingPattern)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.MowingPattern)
</dd>
<dt class = "col-sm-2">
@Html.DisplayNameFor(model => model.Notes)
</dt>
<dd class = "col-sm-10">
@Html.DisplayFor(model => model.Notes)
</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,83 @@
@model turf_tasker.Models.LawnCareEvent
@{
ViewData["Title"] = "Edit";
}
<h1>Edit</h1>
<h4>Lawn Care Event</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<!-- This hidden field is essential for the update to work -->
<input type="hidden" asp-for="Id" />
<div class="form-group mb-3">
<label asp-for="EventType" class="control-label"></label>
<select asp-for="EventType" class="form-control" asp-items="Html.GetEnumSelectList<LawnCareEventType>()"></select>
<span asp-validation-for="EventType" class="text-danger"></span>
</div>
<div class="form-group mb-3">
<label asp-for="EventDate" class="control-label"></label>
<input asp-for="EventDate" class="form-control" />
<span asp-validation-for="EventDate" class="text-danger"></span>
</div>
<!-- Wrapper div for our conditional JavaScript logic -->
<div id="mowingPatternGroup">
<div class="form-group mb-3">
<label asp-for="MowingPattern" class="control-label"></label>
<select asp-for="MowingPattern" class="form-control" asp-items="Html.GetEnumSelectList<MowingPattern>()"></select>
<span asp-validation-for="MowingPattern" class="text-danger"></span>
</div>
</div>
<div class="form-group mb-3">
<label asp-for="Notes" class="control-label"></label>
<textarea asp-for="Notes" class="form-control"></textarea>
<span asp-validation-for="Notes" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div class="mt-3">
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script type="text/javascript">
// This script ensures the Mowing Pattern field only shows up
// when the "Mowing" activity type is selected.
$(document).ready(function () {
function toggleMowingPattern() {
// LawnCareEventType.Mowing has an integer value of 0
var selectedEventType = $("#EventType").val();
if (selectedEventType == '0') { // '0' corresponds to Mowing
$("#mowingPatternGroup").show();
} else {
$("#mowingPatternGroup").hide();
}
}
// Run the function once on page load to set the correct initial state
toggleMowingPattern();
// Re-run the function every time the dropdown value changes
$("#EventType").on("change", function () {
toggleMowingPattern();
});
});
</script>
}

View file

@ -0,0 +1,72 @@
@model turf_tasker.Models.LawnCareEvent
@{
ViewData["Title"] = "Edit";
}
<h1>Edit</h1>
<h4>LawnCareEvent</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="EventType" class="control-label"></label>
<select asp-for="EventType" class="form-control" asp-items="Html.GetEnumSelectList<LawnCareEventType>()"></select>
<span asp-validation-for="EventType" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="EventDate" class="control-label"></label>
<input asp-for="EventDate" class="form-control" />
<span asp-validation-for="EventDate" class="text-danger"></span>
</div>
<div id="mowingPatternGroup">
<div class="form-group">
<label asp-for="MowingPattern" class="control-label"></label>
<select asp-for="MowingPattern" class="form-control" asp-items="Html.GetEnumSelectList<MowingPattern>()"></select>
<span asp-validation-for="MowingPattern" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="Notes" class="control-label"></label>
<textarea asp-for="Notes" class="form-control"></textarea>
<span asp-validation-for="Notes" class="text-danger"></span>
</div>
<div class="form-group mt-3">
<input type="submit" value="Save" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
<script type="text/javascript">
$(document).ready(function () {
function toggleMowingPattern() {
var selectedEventType = $("#EventType").val();
if (selectedEventType == '0') { // '0' corresponds to Mowing
$("#mowingPatternGroup").show();
} else {
$("#mowingPatternGroup").hide();
}
}
toggleMowingPattern();
$("#EventType").on("change", function () {
toggleMowingPattern();
});
});
</script>
}

View file

@ -0,0 +1,73 @@
@model IEnumerable<turf_tasker.Models.LawnCareEvent>
@{
ViewData["Title"] = "Lawn Care Log";
}
<h1>@ViewData["Title"]</h1>
<p>
<a asp-action="Create" class="btn btn-primary">Create New Event</a>
</p>
<!-- Add the search form -->
<form asp-action="Index" method="get">
<div class="form-actions no-color">
<p>
Find by type or note:
<input type="text" name="searchString" value="@ViewData["CurrentFilter"]" />
<input type="submit" value="Search" class="btn btn-secondary" /> |
<a asp-action="Index">Back to Full List</a>
</p>
</div>
</form>
<table class="table">
<thead>
<tr>
<th>
<!-- Make the header a clickable link for sorting -->
<a asp-action="Index" asp-route-sortOrder="@ViewData["TypeSortParm"]" asp-route-searchString="@ViewData["CurrentFilter"]">
@Html.DisplayNameFor(model => model.EventType)
</a>
</th>
<th>
<!-- Make the header a clickable link for sorting -->
<a asp-action="Index" asp-route-sortOrder="@ViewData["DateSortParm"]" asp-route-searchString="@ViewData["CurrentFilter"]">
@Html.DisplayNameFor(model => model.EventDate)
</a>
</th>
<th>
@Html.DisplayNameFor(model => model.MowingPattern)
</th>
<th>
@Html.DisplayNameFor(model => model.Notes)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.EventType)
</td>
<td>
@Html.DisplayFor(modelItem => item.EventDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.MowingPattern)
</td>
<td>
@Html.DisplayFor(modelItem => item.Notes)
</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>