bump version and kiosk enhancement.

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD
2024-11-01 16:59:10 -06:00
parent f3914bc3b7
commit b06ad0cdaa
14 changed files with 397 additions and 35 deletions

View File

@@ -1,7 +1,10 @@
@{
ViewData["Title"] = "Kiosk";
}
@model List<int>
@model KioskViewModel
@section Scripts {
<script src="~/lib/masonry/masonry.min.js"></script>
}
<div class="progress" role="progressbar" aria-label="Refresh Progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 1px">
<div class="progress-bar" style="width: 0%"></div>
</div>
@@ -11,8 +14,11 @@
let refreshTimer;
let exceptionList = [];
let subtractAmount = 0;
let kioskMode = '@Model.KioskMode';
let currentKioskMode = 'Plan';
let kioskWakeLock;
@foreach(int exception in Model)
@foreach(int exception in Model.Exclusions)
{
@:exceptionList.push(@exception);
}
@@ -25,14 +31,56 @@
subtractAmount = 2;
}
retrieveKioskContent();
//acquire wakeLock;
try {
navigator.wakeLock.request('screen').then((wl) => {
kioskWakeLock = wl;
});
} catch (err) {
errorToast('Location Services not Enabled');
}
}
function retrieveKioskContent(){
clearInterval(refreshTimer);
$.post('/Home/KioskContent', {exceptionList: exceptionList}, function (data) {
$("#kioskContainer").html(data);
$(".progress-bar").width($("#kioskContainer").width());
setTimeout(function () { startTimer() }, 500);
});
if (kioskMode != 'Cycle'){
$.post('/Home/KioskContent', { exclusions: exceptionList, kioskMode: kioskMode }, function (data) {
$("#kioskContainer").html(data);
$(".kiosk-content").masonry();
if ($(".no-data-message").length == 0) {
$(".progress-bar").width($("#kioskContainer").width());
setTimeout(function () { startTimer() }, 500);
}
});
} else {
//cycle mode
switch (currentKioskMode) {
case "Vehicle":
currentKioskMode = "Reminder";
break;
case "Reminder":
currentKioskMode = "Plan";
break;
case "Plan":
currentKioskMode = "Vehicle";
break;
}
$.post('/Home/KioskContent', { exclusions: exceptionList, kioskMode: currentKioskMode }, function (data) {
$("#kioskContainer").html(data);
$(".kiosk-content").masonry();
if ($(".no-data-message").length > 0) {
//if no data on vehicle page
if (currentKioskMode == "Vehicle") {
return; //exit
} else {
retrieveKioskContent(); //skip until we hit a page with content.
}
} else {
$(".progress-bar").width($("#kioskContainer").width());
setTimeout(function () { startTimer() }, 500);
}
});
}
}
function startTimer() {
refreshTimer = setInterval(function () {
@@ -45,6 +93,9 @@
}, 100);
}
function addVehicleToExceptionList(vehicleId) {
if (kioskMode == 'Cycle') {
return;
}
Swal.fire({
title: "Remove Vehicle from Dashboard?",
text: "Removed vehicles can be restored by refreshing the page",
@@ -58,5 +109,28 @@
}
});
}
function toggleReminderNote(sender){
var reminderNote = $(sender).find('.reminder-note');
if (reminderNote.text().trim() != ''){
if (reminderNote.hasClass('d-none')) {
reminderNote.removeClass('d-none');
} else {
reminderNote.addClass('d-none');
}
$(".kiosk-content").masonry();
}
}
function togglePlanDetails(sender) {
toggleReminderNote(sender);
var planSupplies = $(sender).find('.plan-supplies');
if (planSupplies.find('.plan-supply').length > 0) {
if (planSupplies.hasClass('d-none')) {
planSupplies.removeClass('d-none');
} else {
planSupplies.addClass('d-none');
}
$(".kiosk-content").masonry();
}
}
initKiosk();
</script>

View File

@@ -6,10 +6,10 @@
var userConfig = config.GetUserConfig(User);
var userLanguage = userConfig.UserLanguage;
}
<div class="row row-cols-1 row-cols-md-3 g-4 mt-1">
@foreach(VehicleInfo vehicle in Model)
{
@if (!(userConfig.HideSoldVehicles && !string.IsNullOrWhiteSpace(vehicle.VehicleData.SoldDate)))
@if (Model.Any())
{
<div class="row row-cols-1 row-cols-md-3 g-4 mt-1 kiosk-content" data-masonry='{"percentPosition": true }'>
@foreach (VehicleInfo vehicle in Model)
{
<div class="col">
<div class="card" onclick="addVehicleToExceptionList(@vehicle.VehicleData.Id)">
@@ -65,7 +65,7 @@
}
@if (vehicle.NextReminder != null)
{
<hr style="margin:0px;"/>
<hr style="margin:0px;" />
<div class="card-body" style="padding-top:0.25rem; padding-bottom:0.25rem;">
<h5 class="card-title">@translator.Translate(userLanguage, "Upcoming Reminder")</h5>
<div class="row">
@@ -112,7 +112,15 @@
</div>
}
</div>
</div>
</div>
}
}
</div>
</div>
}
else
{
<div class="row no-data-message">
<div class="col">
<span class="display-3">@translator.Translate(userLanguage, "No records available to display")</span>
</div>
</div>
}

View File

@@ -0,0 +1,86 @@
@using CarCareTracker.Helper
@model List<PlanRecord>
@inject IConfigHelper config
@inject ITranslationHelper translator
@{
var userConfig = config.GetUserConfig(User);
var userLanguage = userConfig.UserLanguage;
}
@if (Model.Any())
{
<div class="row row-cols-1 row-cols-md-3 g-4 mt-1 kiosk-content" data-masonry='{"percentPosition": true }'>
@foreach (PlanRecord plan in Model)
{
<div class="col" onclick="togglePlanDetails(this)">
<div class="card @StaticHelper.GetPlanRecordColor(plan.Priority)">
<div class="card-body" style="padding-top:0.25rem; padding-bottom:0.25rem;">
<h5 class="card-title">@plan.Description</h5>
<div class="row">
<div class="col-12">
<p class="display-7 d-none reminder-note" style="white-space: pre-wrap">@plan.Notes</p>
<p class="lead text-wrap">@translator.Translate(userLanguage, StaticHelper.GetPlanRecordProgress(plan.Progress))</p>
<div class="row">
<div class="col-6">
@if (plan.ImportMode == ImportMode.ServiceRecord)
{
<span class="lead">@translator.Translate(userLanguage, "Service")</span>
}
else if (plan.ImportMode == ImportMode.UpgradeRecord)
{
<span class="lead">@translator.Translate(userLanguage, "Repairs")</span>
}
else if (plan.ImportMode == ImportMode.RepairRecord)
{
<span class="lead">@translator.Translate(userLanguage, "Upgrades")</span>
}
</div>
</div>
</div>
</div>
</div>
@if (plan.RequisitionHistory.Any())
{
<ul class="list-group list-group-flush plan-supplies d-none">
<li class="list-group-item">
<div class="row">
<div class="col-4">
@translator.Translate(userLanguage, "Part Number")
</div>
<div class="col-4">
@translator.Translate(userLanguage, "Description")
</div>
<div class="col-4">
@translator.Translate(userLanguage, "Quantity")
</div>
</div>
</li>
@foreach (SupplyUsageHistory supply in plan.RequisitionHistory)
{
<li class="list-group-item plan-supply">
<div class="row">
<div class="col-4">
@supply.PartNumber
</div>
<div class="col-4">
@supply.Description
</div>
<div class="col-4">
@supply.Quantity
</div>
</div>
</li>
}
</ul>
}
</div>
</div>
}
</div>
} else
{
<div class="row no-data-message">
<div class="col">
<span class="display-3">@translator.Translate(userLanguage, "No records available to display")</span>
</div>
</div>
}

View File

@@ -0,0 +1,47 @@
@using CarCareTracker.Helper
@model List<ReminderRecordViewModel>
@inject IConfigHelper config
@inject ITranslationHelper translator
@{
var userConfig = config.GetUserConfig(User);
var userLanguage = userConfig.UserLanguage;
}
@if (Model.Any())
{
<div class="row row-cols-1 row-cols-md-3 g-4 mt-1 kiosk-content" data-masonry='{"percentPosition": true }'>
@foreach (ReminderRecordViewModel reminder in Model)
{
<div class="col" onclick="toggleReminderNote(this)">
<div class="card @StaticHelper.GetReminderUrgencyColor(reminder.Urgency)">
<div class="card-body" style="padding-top:0.25rem; padding-bottom:0.25rem;">
<h5 class="card-title">@reminder.Description</h5>
<div class="row">
<div class="col-12">
<p class="display-7 d-none reminder-note" style="white-space: pre-wrap">@reminder.Notes</p>
<p class="lead text-wrap">@translator.Translate(userLanguage, StaticHelper.GetTitleCaseReminderUrgency(reminder.Urgency))</p>
<div class="row">
@if (reminder.Metric == ReminderMetric.Date || reminder.Metric == ReminderMetric.Both)
{
<div class="col-6"><i class='bi bi-calendar-event me-2'></i>@reminder.Date.ToShortDateString()</div>
}
@if (reminder.Metric == ReminderMetric.Odometer || reminder.Metric == ReminderMetric.Both)
{
<div class="col-6"><i class='bi bi-speedometer me-2'></i>@reminder.Mileage</div>
}
</div>
</div>
</div>
</div>
</div>
</div>
}
</div>
}
else
{
<div class="row no-data-message">
<div class="col">
<span class="display-3">@translator.Translate(userLanguage, "No records available to display")</span>
</div>
</div>
}

View File

@@ -308,6 +308,7 @@
<li class="list-group-item">Chart.js</li>
<li class="list-group-item">Drawdown</li>
<li class="list-group-item">MailKit</li>
<li class="list-group-item">Masonry</li>
</ul>
</div>
</div>