Files
lubelog/wwwroot/js/vehicle.js
DESKTOP-GENO133\IvanPlex 3a76cce00b performance enhancement on tabs.
2024-01-01 18:53:42 -07:00

197 lines
6.7 KiB
JavaScript

function returnToGarage() {
window.location.href = '/Home';
}
function saveVehicleNote(vehicleId) {
var noteText = $("#noteTextArea").val();
$.post('/Vehicle/SaveNoteToVehicle', { vehicleId: vehicleId, noteText: noteText }, function (data) {
if (data) {
successToast("Note saved successfully.");
} else {
errorToast("An error has occurred, please try again later.");
}
})
}
$(document).ready(function () {
var vehicleId = GetVehicleId().vehicleId;
//bind tabs
$('button[data-bs-toggle="tab"]').on('show.bs.tab', function (e) {
switch (e.target.id) {
case "servicerecord-tab":
getVehicleServiceRecords(vehicleId);
break;
case "notes-tab":
getVehicleNote(vehicleId);
break;
}
switch (e.relatedTarget.id) { //clear out previous tabs with grids in them to help with performance
case "servicerecord-tab":
$("#servicerecord-tab-pane").html("");
break;
}
});
getVehicleServiceRecords(vehicleId);
});
function getVehicleNote(vehicleId) {
$.get(`/Vehicle/GetNoteByVehicleId?vehicleId=${vehicleId}`, function (data) {
if (data) {
$("#noteTextArea").val(data);
}
});
}
function getVehicleServiceRecords(vehicleId) {
$.get(`/Vehicle/GetServiceRecordsByVehicleId?vehicleId=${vehicleId}`, function (data) {
if (data) {
$("#servicerecord-tab-pane").html(data);
//initiate datepicker
$('#serviceRecordDate').datepicker({
endDate: "+0d"
});
}
})
}
function DeleteVehicle(vehicleId) {
$.post('/Vehicle/DeleteVehicle', { vehicleId: vehicleId }, function (data) {
if (data) {
window.location.href = '/Home';
}
})
}
var serviceRecordEditId = 0;
function showEditServiceRecordModal(serviceRecordId) {
//retrieve service record object.
$.get(`/Vehicle/GetServiceRecordById?serviceRecordId=${serviceRecordId}`, function (data) {
if (data) {
//UI elements.
$("#addServiceRecordButton").hide();
$("#editServiceRecordButton").show();
//pre-populate fields.
$("#serviceRecordDate").val(data.date);
$("#serviceRecordMileage").val(data.mileage);
$("#serviceRecordDescription").val(data.description);
$("#serviceRecordCost").val(data.cost);
$("#serviceRecordNotes").val(data.notes);
serviceRecordEditId = serviceRecordId; //set global var.
$('#addServiceRecordModal').modal('show');
}
});
}
function showAddServiceRecordModal() {
serviceRecordEditId = 0;
$("#addServiceRecordButton").show();
$("#editServiceRecordButton").hide();
$('#addServiceRecordModal').modal('show');
}
function hideAddServiceRecordModal() {
serviceRecordEditId = 0;
$('#addServiceRecordModal').modal('hide');
}
function editServiceRecordToVehicle() {
var formValues = getAndValidateServiceRecordValues();
//validate
if (formValues.hasError) {
errorToast("Please check the form data");
return;
}
//save to db.
$.post('/Vehicle/SaveServiceRecordToVehicleId', { serviceRecord: formValues }, function (data) {
if (data) {
successToast("Service Record updated.");
hideAddServiceRecordModal();
getVehicleServiceRecords(formValues.vehicleId);
serviceRecordEditId = 0; //reset global var.
} else {
errorToast("An error has occurred, please try again later.");
}
})
}
function deleteServiceRecord(serviceRecordId) {
Swal.fire({
title: "Confirm Deletion?",
text: "Deleted Service Records cannot be restored.",
showCancelButton: true,
confirmButtonText: "Delete",
confirmButtonColor: "#dc3545"
}).then((result) => {
if (result.isConfirmed) {
$.post(`/Vehicle/DeleteServiceRecordById?serviceRecordId=${serviceRecordId}`, function (data) {
if (data) {
successToast("Service Record deleted");
var vehicleId = GetVehicleId().vehicleId;
getVehicleServiceRecords(vehicleId);
} else {
errorToast("An error has occurred, please try again later.");
}
});
}
});
}
function addServiceRecordToVehicle() {
//get values
var formValues = getAndValidateServiceRecordValues();
//validate
if (formValues.hasError) {
errorToast("Please check the form data");
return;
}
//save to db.
$.post('/Vehicle/SaveServiceRecordToVehicleId', { serviceRecord: formValues }, function (data) {
if (data) {
successToast("Service Record added.");
hideAddServiceRecordModal();
getVehicleServiceRecords(formValues.vehicleId);
} else {
errorToast("An error has occurred, please try again later.");
}
})
}
function getAndValidateServiceRecordValues() {
var serviceDate = $("#serviceRecordDate").val();
var serviceMileage = $("#serviceRecordMileage").val();
var serviceDescription = $("#serviceRecordDescription").val();
var serviceCost = $("#serviceRecordCost").val();
var serviceNotes = $("#serviceRecordNotes").val();
var vehicleId = GetVehicleId().vehicleId;
//validation
var hasError = false;
if (serviceDate.trim() == '') { //eliminates whitespace.
hasError = true;
$("#serviceRecordDate").addClass("is-invalid");
} else {
$("#serviceRecordDate").removeClass("is-invalid");
}
if (serviceMileage.trim() == '' || parseInt(serviceMileage) < 0) {
hasError = true;
$("#serviceRecordMileage").addClass("is-invalid");
} else {
$("#serviceRecordMileage").removeClass("is-invalid");
}
if (serviceDescription.trim() == '') {
hasError = true;
$("#serviceRecordDescription").addClass("is-invalid");
} else {
$("#serviceRecordDescription").removeClass("is-invalid");
}
if (serviceCost.trim() == '') {
hasError = true;
$("#serviceRecordCost").addClass("is-invalid");
} else {
$("#serviceRecordCost").removeClass("is-invalid");
}
return {
id: serviceRecordEditId,
hasError: hasError,
vehicleId: vehicleId,
date: serviceDate,
mileage: serviceMileage,
description: serviceDescription,
cost: serviceCost,
notes: serviceNotes
}
}
function showServiceRecordNotes(note) {
if (note.trim() == '') {
return;
}
genericSwal("Note", note);
}