From 745b262dfcf9501452ea341ac5a117f88fd871f3 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Thu, 31 Oct 2024 22:39:20 -0600 Subject: [PATCH 1/3] Added kiosk view. --- Controllers/APIController.cs | 50 +------------- Controllers/HomeController.cs | 19 ++++-- Helper/StaticHelper.cs | 14 ++++ Logic/VehicleLogic.cs | 58 +++++++++++++++++ Views/Home/Kiosk.cshtml | 50 ++++++++++++++ Views/Home/Privacy.cshtml | 6 -- Views/Home/_Kiosk.cshtml | 118 ++++++++++++++++++++++++++++++++++ wwwroot/defaults/en_US.json | 2 +- 8 files changed, 257 insertions(+), 60 deletions(-) create mode 100644 Views/Home/Kiosk.cshtml delete mode 100644 Views/Home/Privacy.cshtml create mode 100644 Views/Home/_Kiosk.cshtml diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs index 4149961..0131b68 100644 --- a/Controllers/APIController.cs +++ b/Controllers/APIController.cs @@ -125,55 +125,7 @@ namespace CarCareTracker.Controllers vehicles.AddRange(result); } - List apiResult = new List(); - - foreach(Vehicle vehicle in vehicles) - { - var currentMileage = _vehicleLogic.GetMaxMileage(vehicle.Id); - var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicle.Id); - var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); - - var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicle.Id); - var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicle.Id); - var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicle.Id); - var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicle.Id); - var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicle.Id); - var planRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicle.Id); - - var resultToAdd = new VehicleInfo() - { - VehicleData = vehicle, - LastReportedOdometer = currentMileage, - ServiceRecordCount = serviceRecords.Count(), - ServiceRecordCost = serviceRecords.Sum(x=>x.Cost), - RepairRecordCount = repairRecords.Count(), - RepairRecordCost = repairRecords.Sum(x=>x.Cost), - UpgradeRecordCount = upgradeRecords.Count(), - UpgradeRecordCost = upgradeRecords.Sum(x=>x.Cost), - GasRecordCount = gasRecords.Count(), - GasRecordCost = gasRecords.Sum(x=>x.Cost), - TaxRecordCount = taxRecords.Count(), - TaxRecordCost = taxRecords.Sum(x=> x.Cost), - VeryUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.VeryUrgent), - PastDueReminderCount = results.Count(x => x.Urgency == ReminderUrgency.PastDue), - UrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.Urgent), - NotUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.NotUrgent), - PlanRecordBackLogCount = planRecords.Count(x=>x.Progress == PlanProgress.Backlog), - PlanRecordInProgressCount = planRecords.Count(x=>x.Progress == PlanProgress.InProgress), - PlanRecordTestingCount = planRecords.Count(x=>x.Progress == PlanProgress.Testing), - PlanRecordDoneCount = planRecords.Count(x=>x.Progress == PlanProgress.Done) - }; - //set next reminder - if (results.Any(x => (x.Metric == ReminderMetric.Date || x.Metric == ReminderMetric.Both) && x.Date >= DateTime.Now.Date)) - { - resultToAdd.NextReminder = results.Where(x => x.Date >= DateTime.Now.Date).OrderBy(x => x.Date).Select(x => new ReminderExportModel { Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString() }).First(); - } - else if (results.Any(x => (x.Metric == ReminderMetric.Odometer || x.Metric == ReminderMetric.Both) && x.Mileage >= currentMileage)) - { - resultToAdd.NextReminder = results.Where(x => x.Mileage >= currentMileage).OrderBy(x => x.Mileage).Select(x => new ReminderExportModel { Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString() }).First(); - } - apiResult.Add(resultToAdd); - } + var apiResult = _vehicleLogic.GetVehicleInfo(vehicles); return Json(apiResult); } [TypeFilter(typeof(CollaboratorFilter))] diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index e43159b..f1e1e4c 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -55,6 +55,21 @@ namespace CarCareTracker.Controllers { return View(model: tab); } + public IActionResult Kiosk() + { + return View(); + } + public IActionResult KioskContent(List exceptionList) + { + var vehiclesStored = _dataAccess.GetVehicles(); + if (!User.IsInRole(nameof(UserData.IsRootUser))) + { + vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID()); + } + vehiclesStored.RemoveAll(x => exceptionList.Contains(x.Id)); + var result = _vehicleLogic.GetVehicleInfo(vehiclesStored); + return PartialView("_Kiosk", result); + } public IActionResult Garage() { var vehiclesStored = _dataAccess.GetVehicles(); @@ -184,10 +199,6 @@ namespace CarCareTracker.Controllers var result = _config.SaveUserConfig(User, existingConfig); return Json(result); } - public IActionResult Privacy() - { - return View(); - } [Authorize(Roles = nameof(UserData.IsRootUser))] public IActionResult GetExtraFieldsModal(int importMode = 0) { diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index cdb4828..aaa1236 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -32,6 +32,20 @@ namespace CarCareTracker.Helper return input.ToString(); } } + public static string GetTitleCaseReminderUrgency(string input) + { + switch (input) + { + case "NotUrgent": + return "Not Urgent"; + case "VeryUrgent": + return "Very Urgent"; + case "PastDue": + return "Past Due"; + default: + return input.ToString(); + } + } public static string TruncateStrings(string input, int maxLength = 25) { diff --git a/Logic/VehicleLogic.cs b/Logic/VehicleLogic.cs index 421814c..3df2425 100644 --- a/Logic/VehicleLogic.cs +++ b/Logic/VehicleLogic.cs @@ -14,6 +14,7 @@ namespace CarCareTracker.Logic int GetMinMileage(VehicleRecords vehicleRecords); int GetOwnershipDays(string purchaseDate, string soldDate, List serviceRecords, List repairRecords, List gasRecords, List upgradeRecords, List odometerRecords, List taxRecords); bool GetVehicleHasUrgentOrPastDueReminders(int vehicleId, int currentMileage); + List GetVehicleInfo(List vehicles); } public class VehicleLogic: IVehicleLogic { @@ -24,6 +25,7 @@ namespace CarCareTracker.Logic private readonly ITaxRecordDataAccess _taxRecordDataAccess; private readonly IOdometerRecordDataAccess _odometerRecordDataAccess; private readonly IReminderRecordDataAccess _reminderRecordDataAccess; + private readonly IPlanRecordDataAccess _planRecordDataAccess; private readonly IReminderHelper _reminderHelper; public VehicleLogic( IServiceRecordDataAccess serviceRecordDataAccess, @@ -33,6 +35,7 @@ namespace CarCareTracker.Logic ITaxRecordDataAccess taxRecordDataAccess, IOdometerRecordDataAccess odometerRecordDataAccess, IReminderRecordDataAccess reminderRecordDataAccess, + IPlanRecordDataAccess planRecordDataAccess, IReminderHelper reminderHelper ) { _serviceRecordDataAccess = serviceRecordDataAccess; @@ -41,6 +44,7 @@ namespace CarCareTracker.Logic _upgradeRecordDataAccess = upgradeRecordDataAccess; _taxRecordDataAccess = taxRecordDataAccess; _odometerRecordDataAccess = odometerRecordDataAccess; + _planRecordDataAccess = planRecordDataAccess; _reminderRecordDataAccess = reminderRecordDataAccess; _reminderHelper = reminderHelper; } @@ -218,5 +222,59 @@ namespace CarCareTracker.Logic var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); return results.Any(x => x.Urgency == ReminderUrgency.VeryUrgent || x.Urgency == ReminderUrgency.PastDue); } + + public List GetVehicleInfo(List vehicles) + { + List apiResult = new List(); + + foreach (Vehicle vehicle in vehicles) + { + var currentMileage = GetMaxMileage(vehicle.Id); + var reminders = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicle.Id); + var results = _reminderHelper.GetReminderRecordViewModels(reminders, currentMileage, DateTime.Now); + + var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicle.Id); + var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicle.Id); + var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicle.Id); + var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicle.Id); + var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicle.Id); + var planRecords = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicle.Id); + + var resultToAdd = new VehicleInfo() + { + VehicleData = vehicle, + LastReportedOdometer = currentMileage, + ServiceRecordCount = serviceRecords.Count(), + ServiceRecordCost = serviceRecords.Sum(x => x.Cost), + RepairRecordCount = repairRecords.Count(), + RepairRecordCost = repairRecords.Sum(x => x.Cost), + UpgradeRecordCount = upgradeRecords.Count(), + UpgradeRecordCost = upgradeRecords.Sum(x => x.Cost), + GasRecordCount = gasRecords.Count(), + GasRecordCost = gasRecords.Sum(x => x.Cost), + TaxRecordCount = taxRecords.Count(), + TaxRecordCost = taxRecords.Sum(x => x.Cost), + VeryUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.VeryUrgent), + PastDueReminderCount = results.Count(x => x.Urgency == ReminderUrgency.PastDue), + UrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.Urgent), + NotUrgentReminderCount = results.Count(x => x.Urgency == ReminderUrgency.NotUrgent), + PlanRecordBackLogCount = planRecords.Count(x => x.Progress == PlanProgress.Backlog), + PlanRecordInProgressCount = planRecords.Count(x => x.Progress == PlanProgress.InProgress), + PlanRecordTestingCount = planRecords.Count(x => x.Progress == PlanProgress.Testing), + PlanRecordDoneCount = planRecords.Count(x => x.Progress == PlanProgress.Done) + }; + //set next reminder + if (results.Any(x => (x.Metric == ReminderMetric.Date || x.Metric == ReminderMetric.Both) && x.Date >= DateTime.Now.Date)) + { + resultToAdd.NextReminder = results.Where(x => x.Date >= DateTime.Now.Date).OrderBy(x => x.Date).Select(x => new ReminderExportModel { Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString() }).First(); + } + else if (results.Any(x => (x.Metric == ReminderMetric.Odometer || x.Metric == ReminderMetric.Both) && x.Mileage >= currentMileage)) + { + resultToAdd.NextReminder = results.Where(x => x.Mileage >= currentMileage).OrderBy(x => x.Mileage).Select(x => new ReminderExportModel { Description = x.Description, Urgency = x.Urgency.ToString(), Metric = x.Metric.ToString(), Notes = x.Notes, DueDate = x.Date.ToShortDateString(), DueOdometer = x.Mileage.ToString() }).First(); + } + apiResult.Add(resultToAdd); + } + return apiResult; + } } } diff --git a/Views/Home/Kiosk.cshtml b/Views/Home/Kiosk.cshtml new file mode 100644 index 0000000..46a524e --- /dev/null +++ b/Views/Home/Kiosk.cshtml @@ -0,0 +1,50 @@ +@{ + ViewData["Title"] = "Kiosk"; +} +
+
+
+
+
+ \ No newline at end of file diff --git a/Views/Home/Privacy.cshtml b/Views/Home/Privacy.cshtml deleted file mode 100644 index af4fb19..0000000 --- a/Views/Home/Privacy.cshtml +++ /dev/null @@ -1,6 +0,0 @@ -@{ - ViewData["Title"] = "Privacy Policy"; -} -

@ViewData["Title"]

- -

Use this page to detail your site's privacy policy.

diff --git a/Views/Home/_Kiosk.cshtml b/Views/Home/_Kiosk.cshtml new file mode 100644 index 0000000..0a6972c --- /dev/null +++ b/Views/Home/_Kiosk.cshtml @@ -0,0 +1,118 @@ +@using CarCareTracker.Helper +@model List +@inject IConfigHelper config +@inject ITranslationHelper translator +@{ + var userConfig = config.GetUserConfig(User); + var userLanguage = userConfig.UserLanguage; +} +
+ @foreach(VehicleInfo vehicle in Model) + { + @if (!(userConfig.HideSoldVehicles && !string.IsNullOrWhiteSpace(vehicle.VehicleData.SoldDate))) + { +
+
+
+
@($"{vehicle.VehicleData.Year} {vehicle.VehicleData.Make} {vehicle.VehicleData.Model} ({StaticHelper.GetVehicleIdentifier(vehicle.VehicleData)})")
+
+
+

@vehicle.ServiceRecordCount

+

@translator.Translate(userLanguage, "Service")

+

@vehicle.ServiceRecordCost.ToString("C0")

+
+
+

@vehicle.RepairRecordCount

+

@translator.Translate(userLanguage, "Repairs")

+

@vehicle.RepairRecordCost.ToString("C0")

+
+
+

@vehicle.UpgradeRecordCount

+

@translator.Translate(userLanguage, "Upgrades")

+

@vehicle.UpgradeRecordCost.ToString("C0")

+
+
+

@vehicle.GasRecordCount

+

@translator.Translate(userLanguage, "Fuel")

+

@vehicle.GasRecordCost.ToString("C0")

+
+
+
+ @if (vehicle.PastDueReminderCount + vehicle.VeryUrgentReminderCount + vehicle.UrgentReminderCount + vehicle.NotUrgentReminderCount > 0) + { +
+
+
@translator.Translate(userLanguage, "Reminders")
+
+
+

@vehicle.PastDueReminderCount

+

@translator.Translate(userLanguage, "Past Due")

+
+
+

@vehicle.VeryUrgentReminderCount

+

@translator.Translate(userLanguage, "Very Urgent")

+
+
+

@vehicle.UrgentReminderCount

+

@translator.Translate(userLanguage, "Urgent")

+
+
+

@vehicle.NotUrgentReminderCount

+

@translator.Translate(userLanguage, "Not Urgent")

+
+
+
+ } + @if (vehicle.NextReminder != null) + { +
+
+
@translator.Translate(userLanguage, "Upcoming Reminder")
+
+
+

@vehicle.NextReminder.Description

+

@translator.Translate(userLanguage, StaticHelper.GetTitleCaseReminderUrgency(vehicle.NextReminder.Urgency))

+
+ @if (vehicle.NextReminder.Metric == "Date" || vehicle.NextReminder.Metric == "Both") + { +
@vehicle.NextReminder.DueDate
+ } + @if (vehicle.NextReminder.Metric == "Odometer" || vehicle.NextReminder.Metric == "Both") + { +
@vehicle.NextReminder.DueOdometer
+ } +
+
+
+
+ } + @if (vehicle.PlanRecordBackLogCount + vehicle.PlanRecordInProgressCount + vehicle.PlanRecordTestingCount + vehicle.PlanRecordBackLogCount > 0) + { +
+
+
@translator.Translate(userLanguage, "Plans")
+
+
+

@vehicle.PlanRecordBackLogCount

+

@translator.Translate(userLanguage, "Planned")

+
+
+

@vehicle.PlanRecordInProgressCount

+

@translator.Translate(userLanguage, "Doing")

+
+
+

@vehicle.PlanRecordTestingCount

+

@translator.Translate(userLanguage, "Testing")

+
+
+

@vehicle.PlanRecordDoneCount

+

@translator.Translate(userLanguage, "Done")

+
+
+
+ } +
+
+ } + } +
\ No newline at end of file diff --git a/wwwroot/defaults/en_US.json b/wwwroot/defaults/en_US.json index 92dbd0b..58472db 100644 --- a/wwwroot/defaults/en_US.json +++ b/wwwroot/defaults/en_US.json @@ -1 +1 @@ -{"Garage":"Garage","Settings":"Settings","Admin_Panel":"Admin Panel","Logout":"Logout","Dark_Mode":"Dark Mode","Enable_CSV_Imports":"Enable CSV Imports","Use_Imperial_Calculation_for_Fuel_Economy_Calculations(MPG)":"Use Imperial Calculation for Fuel Economy Calculations(MPG)","This_Will_Also_Change_Units_to_Miles_and_Gallons":"This Will Also Change Units to Miles and Gallons","Use_UK_MPG_Calculation":"Use UK MPG Calculation","Input_Gas_Consumption_in_Liters,_it_will_be_converted_to_UK_Gals_for_MPG_Calculation":"Input Gas Consumption in Liters, it will be converted to UK Gals for MPG Calculation","Sort_lists_in_Descending_Order(Newest_to_Oldest)":"Sort lists in Descending Order(Newest to Oldest)","Replace_$0.00_Costs_with_---":"Replace $0.00 Costs with ---","Use_Three_Decimals_For_Fuel_Cost":"Use Three Decimals For Fuel Cost","Display_Saved_Notes_in_Markdown":"Display Saved Notes in Markdown","Auto_Refresh_Lapsed_Recurring_Reminders":"Auto Refresh Lapsed Recurring Reminders","Auto_Insert_Odometer_Records":"Auto Insert Odometer Records","Only_when_Adding_Service/Repair/Upgrade/Fuel_Record_or_Completing_a_Plan":"Only when Adding Service/Repair/Upgrade/Fuel Record or Completing a Plan","Enable_Authentication":"Enable Authentication","Visible_Tabs":"Visible Tabs","Service_Records":"Service Records","Dashboard":"Dashboard","Repairs":"Repairs","Upgrades":"Upgrades","Fuel":"Fuel","Odometer":"Odometer","Taxes":"Taxes","Notes":"Notes","Reminder":"Reminder","Supplies":"Supplies","Planner":"Planner","Default_Tab":"Default Tab","Service_Record":"Service Record","Tax":"Tax","Reminders":"Reminders","Backups":"Backups","Make":"Make","Restore":"Restore","About":"About","Add_New_Vehicle":"Add New Vehicle","Year":"Year","Year(must_be_after_1900)":"Year(must be after 1900)","Model":"Model","License_Plate":"License Plate","Electric_Vehicle":"Electric Vehicle","Use_Engine_Hours":"Use Engine Hours","Tags(optional)":"Tags(optional)","Upload_a_picture(optional)":"Upload a picture(optional)","Cancel":"Cancel","Edit_Vehicle":"Edit Vehicle","Delete_Vehicle":"Delete Vehicle","Manage_Vehicle":"Manage Vehicle","Expenses_by_Type":"Expenses by Type","Service":"Service","Expenses_by_Month":"Expenses by Month","As_of_Today":"As of Today","\u002B30_Days":"\u002B30 Days","\u002B60_Days":"\u002B60 Days","\u002B90_Days":"\u002B90 Days","Not_Urgent":"Not Urgent","Urgent":"Urgent","Very_Urgent":"Very Urgent","Past_Due":"Past Due","Reminders_by_Category":"Reminders by Category","Reminders_by_Urgency":"Reminders by Urgency","Collaborators":"Collaborators","Username":"Username","Delete":"Delete","Fuel_Mileage_by_Month":"Fuel Mileage by Month","Vehicle_Maintenance_Report":"Vehicle Maintenance Report","Export_Attachments":"Export Attachments","Gasoline":"Gasoline","Last_Reported_Odometer_Reading":"Last Reported Odometer Reading","Average_Fuel_Economy":"Average Fuel Economy","Total_Spent(excl._fuel)":"Total Spent(excl. fuel)","Total_Spent_on_Fuel":"Total Spent on Fuel","Type":"Type","Date":"Date","Description":"Description","Cost":"Cost","Repair":"Repair","Upgrade":"Upgrade","#_of_Odometer_Records":"# of Odometer Records","Add_Odometer_Record":"Add Odometer Record","Import_via_CSV":"Import via CSV","Export_to_CSV":"Export to CSV","Print":"Print","Add_New_Odometer_Record":"Add New Odometer Record","Date_recorded":"Date recorded","Odometer_reading":"Odometer reading","Notes(optional)":"Notes(optional)","Upload_documents(optional)":"Upload documents(optional)","Max_File_Size:_28.6MB":"Max File Size: 28.6MB","#_of_Service_Records":"# of Service Records","Total":"Total","Add_Service_Record":"Add Service Record","No_data_found,_create_reminders_to_see_visualizations_here.":"No data found, create reminders to see visualizations here.","No_data_found,_insert/select_some_data_to_see_visualizations_here.":"No data found, insert/select some data to see visualizations here.","Edit_Odometer_Record":"Edit Odometer Record","Import_Data_from_CSV":"Import Data from CSV","In_order_for_this_utility_to_function_properly,_your_CSV_file_MUST_be_formatted_exactly_like_the_provided_sample._Dates_must_be_supplied_in_a_string._Numbers_must_be_supplied_as_numbers_without_currency_formatting.":"In order for this utility to function properly, your CSV file MUST be formatted exactly like the provided sample. Dates must be supplied in a string. Numbers must be supplied as numbers without currency formatting.","Failure_to_format_the_data_correctly_can_cause_data_corruption._Please_make_sure_you_make_a_copy_of_the_local_database_before_proceeding.":"Failure to format the data correctly can cause data corruption. Please make sure you make a copy of the local database before proceeding.","Download_Sample":"Download Sample","Upload_CSV_File":"Upload CSV File","Import":"Import","Edit_Service_Record":"Edit Service Record","Date_service_was_performed":"Date service was performed","Odometer_reading_when_serviced":"Odometer reading when serviced","Description_of_item(s)_serviced(i.e._Oil_Change)":"Description of item(s) serviced(i.e. Oil Change)","Cost_of_the_service":"Cost of the service","Move_To":"Move To","#_of_Repair_Records":"# of Repair Records","Add_Repair_Record":"Add Repair Record","Add_New_Repair_Record":"Add New Repair Record","Date_repair_was_performed":"Date repair was performed","Odometer_reading_when_repaired":"Odometer reading when repaired","Description_of_item(s)_repaired(i.e._Alternator)":"Description of item(s) repaired(i.e. Alternator)","Cost_of_the_repair":"Cost of the repair","Choose_Supplies":"Choose Supplies","Add_Reminder":"Add Reminder","Select_Supplies":"Select Supplies","No_supplies_with_quantities_greater_than_0_is_found.":"No supplies with quantities greater than 0 is found.","Select":"Select","#_of_Upgrade_Records":"# of Upgrade Records","Add_Upgrade_Record":"Add Upgrade Record","Add_New_Upgrade_Record":"Add New Upgrade Record","Date_upgrade/mods_was_installed":"Date upgrade/mods was installed","Odometer_reading_when_upgraded/modded":"Odometer reading when upgraded/modded","Description_of_item(s)_upgraded/modded":"Description of item(s) upgraded/modded","Cost_of_the_upgrade/mods":"Cost of the upgrade/mods","#_of_Gas_Records":"# of Gas Records","Total_Fuel_Consumed":"Total Fuel Consumed","Total_Cost":"Total Cost","Add_Gas_Record":"Add Gas Record","Date_Refueled":"Date Refueled","Consumption":"Consumption","Fuel_Economy":"Fuel Economy","Unit_Cost":"Unit Cost","#_of_Supply_Records":"# of Supply Records","Add_Supply_Record":"Add Supply Record","Part_#":"Part #","Supplier":"Supplier","Quantity":"Quantity","Add_New_Supply_Record":"Add New Supply Record","Date_purchased":"Date purchased","Part_Number":"Part Number","Part_#/Model_#/SKU_#":"Part #/Model #/SKU #","Description_of_the_Part/Supplies":"Description of the Part/Supplies","Supplier/Vendor":"Supplier/Vendor","Part_Supplier":"Part Supplier","Edit_Supply_Record":"Edit Supply Record","Add_New_Service_Record":"Add New Service Record","Supplies_are_requisitioned_immediately_after_the_record_is_created_and_cannot_be_modified._If_you_have_incorrectly_entered_the_amount_you_needed_you_will_need_to_correct_it_in_the_Supplies_tab.":"Supplies are requisitioned immediately after the record is created and cannot be modified. If you have incorrectly entered the amount you needed you will need to correct it in the Supplies tab.","In_Stock":"In Stock","Edit_Repair_Record":"Edit Repair Record","Edit_Upgrade_Record":"Edit Upgrade Record","Save_Vehicle":"Save Vehicle","Add_New_Gas_Record":"Add New Gas Record","Date_refueled":"Date refueled","Odometer_Reading":"Odometer Reading","Odometer_reading_when_refueled":"Odometer reading when refueled","Fuel_Consumption":"Fuel Consumption","Amount_of_gas_refueled":"Amount of gas refueled","Is_Filled_To_Full":"Is Filled To Full","Missed_Fuel_Up(Skip_MPG_Calculation)":"Missed Fuel Up(Skip MPG Calculation)","Cost_of_gas_refueled":"Cost of gas refueled","Unit":"Unit","#_of_Tax_Records":"# of Tax Records","Add_Tax_Record":"Add Tax Record","Add_New_Tax_Record":"Add New Tax Record","Date_tax_was_paid":"Date tax was paid","Description_of_tax_paid(i.e._Registration)":"Description of tax paid(i.e. Registration)","Cost_of_tax_paid":"Cost of tax paid","Is_Recurring":"Is Recurring","Month":"Month","1_Month":"1 Month","3_Months":"3 Months","6_Months":"6 Months","1_Year":"1 Year","2_Years":"2 Years","3_Years":"3 Years","5_Years":"5 Years","Edit_Tax_Record":"Edit Tax Record","#_of_Notes":"# of Notes","Add_Note":"Add Note","Note":"Note","Add_New_Note":"Add New Note","Pinned":"Pinned","Description_of_the_note":"Description of the note","Min_Fuel_Economy":"Min Fuel Economy","Max_Fuel_Economy":"Max Fuel Economy","Edit_Gas_Record":"Edit Gas Record","#_of_Plan_Records":"# of Plan Records","Add_Plan_Record":"Add Plan Record","Planned":"Planned","Doing":"Doing","Testing":"Testing","Done":"Done","Add_New_Plan_Record":"Add New Plan Record","Describe_the_Plan":"Describe the Plan","Cost_of_the_Plan":"Cost of the Plan","Priority":"Priority","Critical":"Critical","Normal":"Normal","Low":"Low","Current_Stage":"Current Stage","#_of_Reminders":"# of Reminders","Urgency":"Urgency","Metric":"Metric","Add_New_Reminder":"Add New Reminder","Reminder_Description":"Reminder Description","Remind_me_on":"Remind me on","Future_Date":"Future Date","Future_Odometer_Reading":"Future Odometer Reading","Whichever_comes_first":"Whichever comes first","Other":"Other","Edit_Reminder":"Edit Reminder","Replace_picture(optional)":"Replace picture(optional)","Language":"Language","Manage_Languages":"Manage Languages","Upload":"Upload","Tokens":"Tokens","Generate_User_Token":"Generate User Token","Auto_Notify(via_Email)":"Auto Notify(via Email)","Token":"Token","Issued_To":"Issued To","Users":"Users","Email":"Email","Is_Admin":"Is Admin","An_error_has_occurred,_please_try_again_later":"An error has occurred, please try again later","Edit_Note":"Edit Note","Password":"Password","Remember_Me":"Remember Me","Login":"Login","Forgot_Password":"Forgot Password","Register":"Register","Request":"Request","I_Have_a_Token":"I Have a Token","Back_to_Login":"Back to Login","Email_Address":"Email Address","New_Password":"New Password","Reset_Password":"Reset Password","No_data_found_or_all_records_have_zero_sums,_insert_records_with_non-zero_sums_to_see_visualizations_here.":"No data found or all records have zero sums, insert records with non-zero sums to see visualizations here.","Save_as_Template":"Save as Template","View_Templates":"View Templates","Select_Template":"Select Template","No_templates_are_found.":"No templates are found.","Use":"Use","Edit_Plan_Record":"Edit Plan Record","Date_Created":"Date Created","Last_Modified":"Last Modified","Shop_Supplies":"Shop Supplies","Uploaded_Documents":"Uploaded Documents","Upload_more_documents":"Upload more documents","Database_Migration":"Database Migration","Instructions":"Instructions","To_Postgres":"To Postgres","From_Postgres":"From Postgres","Import_To_Postgres":"Import To Postgres","Export_From_Postgres":"Export From Postgres","Create":"Create","Manage_Extra_Fields":"Manage Extra Fields","Add/Remove_Extra_Fields":"Add/Remove Extra Fields","Name":"Name","Required":"Required","Add_New_Field":"Add New Field","Close":"Close","Calendar":"Calendar","View_Reminder":"View Reminder","Mark_as_Done":"Mark as Done","Login_via":"Login via","Distance_Traveled_by_Month":"Distance Traveled by Month","Expenses_and_Distance_Traveled_by_Month":"Expenses and Distance Traveled by Month","Select_All":"Select All","Supply_Requisition_History":"Supply Requisition History","No_supply_requisitions_in_history":"No supply requisitions in history","Plan":"Plan","Deselect_All":"Deselect All","Duplicate":"Duplicate","Toggle_Pin":"Toggle Pin","Pin":"Pin","Unpin":"Unpin","Profile":"Profile","Update_Profile":"Update Profile","Account_Username":"Account Username","Send_Token":"Send Token","Update":"Update","Show_Extra_Field_Columns":"Show Extra Field Columns","Enabling_this_may_cause_performance_issues":"Enabling this may cause performance issues","Visible_Columns":"Visible Columns","Edit_Multiple":"Edit Multiple","Edit_Multiple_Records":"Edit Multiple Records","(multiple)":"(multiple)","Tags(use_---_to_clear_all_existing_tags)":"Tags(use --- to clear all existing tags)","Notes(use_---_to_clear_all_existing_notes)":"Notes(use --- to clear all existing notes)","Edit":"Edit","Search":"Search","Delta":"Delta","Vehicle":"Vehicle","Select_Reminder":"Select Reminder","Purchased_Date(optional)":"Purchased Date(optional)","Purchased_Date":"Purchased Date","Sold_Date(optional)":"Sold Date(optional)","Sold_Date":"Sold Date","SOLD":"SOLD","Days":"Days","Statistics":"Statistics","Hide_Sold_Vehicles":"Hide Sold Vehicles","Server-wide_Settings":"Server-wide Settings","Extra_Fields":"Extra Fields","Version":"Version","Configure_Reminder_Urgency_Thresholds":"Configure Reminder Urgency Thresholds","Urgent(Days)":"Urgent(Days)","Very_Urgent(Days)":"Very Urgent(Days)","Urgent(Distance)":"Urgent(Distance)","Very_Urgent(Distance)":"Very Urgent(Distance)","Save":"Save","Initial_Odometer":"Initial Odometer","Distance":"Distance","Initial_Odometer_reading":"Initial Odometer reading","Total_Distance":"Total Distance","Recalculate_Distance":"Recalculate Distance","Edit_Multiple_Odometer_Records":"Edit Multiple Odometer Records","Odometer_Adjustments":"Odometer Adjustments","Odometer_Multiplier":"Odometer Multiplier","Odometer_Difference":"Odometer Difference","Adjust_Odometer":"Adjust Odometer","Edit_Multiple_Gas_Records":"Edit Multiple Gas Records","Multiple":"Multiple","Copy_Attachments":"Copy Attachments","Purchased_Price(optional)":"Purchased Price(optional)","Purchased_Price":"Purchased Price","Sold_Price(optional)":"Sold Price(optional)","Sold_Price":"Sold Price","Purchase/Sold_Information(optional)":"Purchase/Sold Information(optional)","Electric":"Electric","Depreciation":"Depreciation","day":"day","Appreciation":"Appreciation","Search_by_Keyword(Case_Sensitive)":"Search by Keyword(Case Sensitive)","Incremental_Search":"Incremental Search","Unsaved_Changes":"Unsaved Changes","Edit_Plan_Record_Template":"Edit Plan Record Template","No_Data_Found":"No Data Found","Sponsors":"Sponsors","All_Time":"All Time","Metrics":"Metrics","gallons":"gallons","miles":"miles","liters":"liters","kilometers":"kilometers","Fuel_Type":"Fuel Type","Diesel":"Diesel","Documents_Pending_Upload":"Documents Pending Upload","Vehicle_Cost_Breakdown":"Vehicle Cost Breakdown","Cost_Per_Day":"Cost Per Day","Cost_Per_Mile":"Cost Per Mile","Cost_Per_Kilometer":"Cost Per Kilometer","Cost_Per_Hour":"Cost Per Hour","Dashboard_Metrics":"Dashboard Metrics","Last_Odometer":"Last Odometer","Total_Cost_/_Total_Distance_Driven":"Total Cost / Total Distance Driven","Use_Custom_Thresholds":"Use Custom Thresholds","Disable_Registration":"Disable Registration","Default_Reminder_Email":"Default Reminder Email","Default_Email_for_Reminder":"Default Email for Reminder","Enable_OIDC_for_Root_User":"Enable OIDC for Root User","Adaptive_Color_Mode":"Adaptive Color Mode","Uses_the_Default_Reminder_Email_for_OIDC_Auth":"Uses the Default Reminder Email for OIDC Auth","Odometer_Optional":"Odometer Optional","Manage_Tokens":"Manage Tokens","Generate":"Generate","Notify":"Notify","Start_Recording":"Start Recording","Stop_Recording":"Stop Recording","Current_Odometer":"Current Odometer","Experimental_Feature_-_Do_not_exit_or_minimize_this_app_when_recording._Verify_all_starting_and_ending_odometers._Accuracy_subject_to_hardware_limitations.":"Experimental Feature - Do not exit or minimize this app when recording. Verify all starting and ending odometers. Accuracy subject to hardware limitations.","Identifier":"Identifier","Translation_Editor":"Translation Editor","Save_Translation":"Save Translation","Export_Translation":"Export Translation","Get_Translations":"Get Translations","Available_Translations":"Available Translations","Download_All_Translations":"Download All Translations","Reorder_Tabs":"Reorder Tabs","Reset_Tab_Order":"Reset Tab Order","Save_Tab_Order":"Save Tab Order"} \ No newline at end of file +{"Garage":"Garage","Settings":"Settings","Admin_Panel":"Admin Panel","Logout":"Logout","Dark_Mode":"Dark Mode","Enable_CSV_Imports":"Enable CSV Imports","Use_Imperial_Calculation_for_Fuel_Economy_Calculations(MPG)":"Use Imperial Calculation for Fuel Economy Calculations(MPG)","This_Will_Also_Change_Units_to_Miles_and_Gallons":"This Will Also Change Units to Miles and Gallons","Use_UK_MPG_Calculation":"Use UK MPG Calculation","Input_Gas_Consumption_in_Liters,_it_will_be_converted_to_UK_Gals_for_MPG_Calculation":"Input Gas Consumption in Liters, it will be converted to UK Gals for MPG Calculation","Sort_lists_in_Descending_Order(Newest_to_Oldest)":"Sort lists in Descending Order(Newest to Oldest)","Replace_$0.00_Costs_with_---":"Replace $0.00 Costs with ---","Use_Three_Decimals_For_Fuel_Cost":"Use Three Decimals For Fuel Cost","Display_Saved_Notes_in_Markdown":"Display Saved Notes in Markdown","Auto_Refresh_Lapsed_Recurring_Reminders":"Auto Refresh Lapsed Recurring Reminders","Auto_Insert_Odometer_Records":"Auto Insert Odometer Records","Only_when_Adding_Service/Repair/Upgrade/Fuel_Record_or_Completing_a_Plan":"Only when Adding Service/Repair/Upgrade/Fuel Record or Completing a Plan","Enable_Authentication":"Enable Authentication","Visible_Tabs":"Visible Tabs","Service_Records":"Service Records","Dashboard":"Dashboard","Repairs":"Repairs","Upgrades":"Upgrades","Fuel":"Fuel","Odometer":"Odometer","Taxes":"Taxes","Notes":"Notes","Reminder":"Reminder","Supplies":"Supplies","Planner":"Planner","Default_Tab":"Default Tab","Service_Record":"Service Record","Tax":"Tax","Reminders":"Reminders","Backups":"Backups","Make":"Make","Restore":"Restore","About":"About","Add_New_Vehicle":"Add New Vehicle","Year":"Year","Year(must_be_after_1900)":"Year(must be after 1900)","Model":"Model","License_Plate":"License Plate","Electric_Vehicle":"Electric Vehicle","Use_Engine_Hours":"Use Engine Hours","Tags(optional)":"Tags(optional)","Upload_a_picture(optional)":"Upload a picture(optional)","Cancel":"Cancel","Edit_Vehicle":"Edit Vehicle","Delete_Vehicle":"Delete Vehicle","Manage_Vehicle":"Manage Vehicle","Expenses_by_Type":"Expenses by Type","Service":"Service","Expenses_by_Month":"Expenses by Month","As_of_Today":"As of Today","\u002B30_Days":"\u002B30 Days","\u002B60_Days":"\u002B60 Days","\u002B90_Days":"\u002B90 Days","Not_Urgent":"Not Urgent","Urgent":"Urgent","Very_Urgent":"Very Urgent","Past_Due":"Past Due","Reminders_by_Category":"Reminders by Category","Reminders_by_Urgency":"Reminders by Urgency","Collaborators":"Collaborators","Username":"Username","Delete":"Delete","Fuel_Mileage_by_Month":"Fuel Mileage by Month","Vehicle_Maintenance_Report":"Vehicle Maintenance Report","Export_Attachments":"Export Attachments","Gasoline":"Gasoline","Last_Reported_Odometer_Reading":"Last Reported Odometer Reading","Average_Fuel_Economy":"Average Fuel Economy","Total_Spent(excl._fuel)":"Total Spent(excl. fuel)","Total_Spent_on_Fuel":"Total Spent on Fuel","Type":"Type","Date":"Date","Description":"Description","Cost":"Cost","Repair":"Repair","Upgrade":"Upgrade","#_of_Odometer_Records":"# of Odometer Records","Add_Odometer_Record":"Add Odometer Record","Import_via_CSV":"Import via CSV","Export_to_CSV":"Export to CSV","Print":"Print","Add_New_Odometer_Record":"Add New Odometer Record","Date_recorded":"Date recorded","Odometer_reading":"Odometer reading","Notes(optional)":"Notes(optional)","Upload_documents(optional)":"Upload documents(optional)","Max_File_Size:_28.6MB":"Max File Size: 28.6MB","#_of_Service_Records":"# of Service Records","Total":"Total","Add_Service_Record":"Add Service Record","No_data_found,_create_reminders_to_see_visualizations_here.":"No data found, create reminders to see visualizations here.","No_data_found,_insert/select_some_data_to_see_visualizations_here.":"No data found, insert/select some data to see visualizations here.","Edit_Odometer_Record":"Edit Odometer Record","Import_Data_from_CSV":"Import Data from CSV","In_order_for_this_utility_to_function_properly,_your_CSV_file_MUST_be_formatted_exactly_like_the_provided_sample._Dates_must_be_supplied_in_a_string._Numbers_must_be_supplied_as_numbers_without_currency_formatting.":"In order for this utility to function properly, your CSV file MUST be formatted exactly like the provided sample. Dates must be supplied in a string. Numbers must be supplied as numbers without currency formatting.","Failure_to_format_the_data_correctly_can_cause_data_corruption._Please_make_sure_you_make_a_copy_of_the_local_database_before_proceeding.":"Failure to format the data correctly can cause data corruption. Please make sure you make a copy of the local database before proceeding.","Download_Sample":"Download Sample","Upload_CSV_File":"Upload CSV File","Import":"Import","Edit_Service_Record":"Edit Service Record","Date_service_was_performed":"Date service was performed","Odometer_reading_when_serviced":"Odometer reading when serviced","Description_of_item(s)_serviced(i.e._Oil_Change)":"Description of item(s) serviced(i.e. Oil Change)","Cost_of_the_service":"Cost of the service","Move_To":"Move To","#_of_Repair_Records":"# of Repair Records","Add_Repair_Record":"Add Repair Record","Add_New_Repair_Record":"Add New Repair Record","Date_repair_was_performed":"Date repair was performed","Odometer_reading_when_repaired":"Odometer reading when repaired","Description_of_item(s)_repaired(i.e._Alternator)":"Description of item(s) repaired(i.e. Alternator)","Cost_of_the_repair":"Cost of the repair","Choose_Supplies":"Choose Supplies","Add_Reminder":"Add Reminder","Select_Supplies":"Select Supplies","No_supplies_with_quantities_greater_than_0_is_found.":"No supplies with quantities greater than 0 is found.","Select":"Select","#_of_Upgrade_Records":"# of Upgrade Records","Add_Upgrade_Record":"Add Upgrade Record","Add_New_Upgrade_Record":"Add New Upgrade Record","Date_upgrade/mods_was_installed":"Date upgrade/mods was installed","Odometer_reading_when_upgraded/modded":"Odometer reading when upgraded/modded","Description_of_item(s)_upgraded/modded":"Description of item(s) upgraded/modded","Cost_of_the_upgrade/mods":"Cost of the upgrade/mods","#_of_Gas_Records":"# of Gas Records","Total_Fuel_Consumed":"Total Fuel Consumed","Total_Cost":"Total Cost","Add_Gas_Record":"Add Gas Record","Date_Refueled":"Date Refueled","Consumption":"Consumption","Fuel_Economy":"Fuel Economy","Unit_Cost":"Unit Cost","#_of_Supply_Records":"# of Supply Records","Add_Supply_Record":"Add Supply Record","Part_#":"Part #","Supplier":"Supplier","Quantity":"Quantity","Add_New_Supply_Record":"Add New Supply Record","Date_purchased":"Date purchased","Part_Number":"Part Number","Part_#/Model_#/SKU_#":"Part #/Model #/SKU #","Description_of_the_Part/Supplies":"Description of the Part/Supplies","Supplier/Vendor":"Supplier/Vendor","Part_Supplier":"Part Supplier","Edit_Supply_Record":"Edit Supply Record","Add_New_Service_Record":"Add New Service Record","Supplies_are_requisitioned_immediately_after_the_record_is_created_and_cannot_be_modified._If_you_have_incorrectly_entered_the_amount_you_needed_you_will_need_to_correct_it_in_the_Supplies_tab.":"Supplies are requisitioned immediately after the record is created and cannot be modified. If you have incorrectly entered the amount you needed you will need to correct it in the Supplies tab.","In_Stock":"In Stock","Edit_Repair_Record":"Edit Repair Record","Edit_Upgrade_Record":"Edit Upgrade Record","Save_Vehicle":"Save Vehicle","Add_New_Gas_Record":"Add New Gas Record","Date_refueled":"Date refueled","Odometer_Reading":"Odometer Reading","Odometer_reading_when_refueled":"Odometer reading when refueled","Fuel_Consumption":"Fuel Consumption","Amount_of_gas_refueled":"Amount of gas refueled","Is_Filled_To_Full":"Is Filled To Full","Missed_Fuel_Up(Skip_MPG_Calculation)":"Missed Fuel Up(Skip MPG Calculation)","Cost_of_gas_refueled":"Cost of gas refueled","Unit":"Unit","#_of_Tax_Records":"# of Tax Records","Add_Tax_Record":"Add Tax Record","Add_New_Tax_Record":"Add New Tax Record","Date_tax_was_paid":"Date tax was paid","Description_of_tax_paid(i.e._Registration)":"Description of tax paid(i.e. Registration)","Cost_of_tax_paid":"Cost of tax paid","Is_Recurring":"Is Recurring","Month":"Month","1_Month":"1 Month","3_Months":"3 Months","6_Months":"6 Months","1_Year":"1 Year","2_Years":"2 Years","3_Years":"3 Years","5_Years":"5 Years","Edit_Tax_Record":"Edit Tax Record","#_of_Notes":"# of Notes","Add_Note":"Add Note","Note":"Note","Add_New_Note":"Add New Note","Pinned":"Pinned","Description_of_the_note":"Description of the note","Min_Fuel_Economy":"Min Fuel Economy","Max_Fuel_Economy":"Max Fuel Economy","Edit_Gas_Record":"Edit Gas Record","#_of_Plan_Records":"# of Plan Records","Add_Plan_Record":"Add Plan Record","Planned":"Planned","Doing":"Doing","Testing":"Testing","Done":"Done","Add_New_Plan_Record":"Add New Plan Record","Describe_the_Plan":"Describe the Plan","Cost_of_the_Plan":"Cost of the Plan","Priority":"Priority","Critical":"Critical","Normal":"Normal","Low":"Low","Current_Stage":"Current Stage","#_of_Reminders":"# of Reminders","Urgency":"Urgency","Metric":"Metric","Add_New_Reminder":"Add New Reminder","Reminder_Description":"Reminder Description","Remind_me_on":"Remind me on","Future_Date":"Future Date","Future_Odometer_Reading":"Future Odometer Reading","Whichever_comes_first":"Whichever comes first","Other":"Other","Edit_Reminder":"Edit Reminder","Replace_picture(optional)":"Replace picture(optional)","Language":"Language","Manage_Languages":"Manage Languages","Upload":"Upload","Tokens":"Tokens","Generate_User_Token":"Generate User Token","Auto_Notify(via_Email)":"Auto Notify(via Email)","Token":"Token","Issued_To":"Issued To","Users":"Users","Email":"Email","Is_Admin":"Is Admin","An_error_has_occurred,_please_try_again_later":"An error has occurred, please try again later","Edit_Note":"Edit Note","Password":"Password","Remember_Me":"Remember Me","Login":"Login","Forgot_Password":"Forgot Password","Register":"Register","Request":"Request","I_Have_a_Token":"I Have a Token","Back_to_Login":"Back to Login","Email_Address":"Email Address","New_Password":"New Password","Reset_Password":"Reset Password","No_data_found_or_all_records_have_zero_sums,_insert_records_with_non-zero_sums_to_see_visualizations_here.":"No data found or all records have zero sums, insert records with non-zero sums to see visualizations here.","Save_as_Template":"Save as Template","View_Templates":"View Templates","Select_Template":"Select Template","No_templates_are_found.":"No templates are found.","Use":"Use","Edit_Plan_Record":"Edit Plan Record","Date_Created":"Date Created","Last_Modified":"Last Modified","Shop_Supplies":"Shop Supplies","Uploaded_Documents":"Uploaded Documents","Upload_more_documents":"Upload more documents","Database_Migration":"Database Migration","Instructions":"Instructions","To_Postgres":"To Postgres","From_Postgres":"From Postgres","Import_To_Postgres":"Import To Postgres","Export_From_Postgres":"Export From Postgres","Create":"Create","Manage_Extra_Fields":"Manage Extra Fields","Add/Remove_Extra_Fields":"Add/Remove Extra Fields","Name":"Name","Required":"Required","Add_New_Field":"Add New Field","Close":"Close","Calendar":"Calendar","View_Reminder":"View Reminder","Mark_as_Done":"Mark as Done","Login_via":"Login via","Distance_Traveled_by_Month":"Distance Traveled by Month","Expenses_and_Distance_Traveled_by_Month":"Expenses and Distance Traveled by Month","Select_All":"Select All","Supply_Requisition_History":"Supply Requisition History","No_supply_requisitions_in_history":"No supply requisitions in history","Plan":"Plan","Deselect_All":"Deselect All","Duplicate":"Duplicate","Toggle_Pin":"Toggle Pin","Pin":"Pin","Unpin":"Unpin","Profile":"Profile","Update_Profile":"Update Profile","Account_Username":"Account Username","Send_Token":"Send Token","Update":"Update","Show_Extra_Field_Columns":"Show Extra Field Columns","Enabling_this_may_cause_performance_issues":"Enabling this may cause performance issues","Visible_Columns":"Visible Columns","Edit_Multiple":"Edit Multiple","Edit_Multiple_Records":"Edit Multiple Records","(multiple)":"(multiple)","Tags(use_---_to_clear_all_existing_tags)":"Tags(use --- to clear all existing tags)","Notes(use_---_to_clear_all_existing_notes)":"Notes(use --- to clear all existing notes)","Edit":"Edit","Search":"Search","Delta":"Delta","Vehicle":"Vehicle","Select_Reminder":"Select Reminder","Purchased_Date(optional)":"Purchased Date(optional)","Purchased_Date":"Purchased Date","Sold_Date(optional)":"Sold Date(optional)","Sold_Date":"Sold Date","SOLD":"SOLD","Days":"Days","Statistics":"Statistics","Hide_Sold_Vehicles":"Hide Sold Vehicles","Server-wide_Settings":"Server-wide Settings","Extra_Fields":"Extra Fields","Version":"Version","Configure_Reminder_Urgency_Thresholds":"Configure Reminder Urgency Thresholds","Urgent(Days)":"Urgent(Days)","Very_Urgent(Days)":"Very Urgent(Days)","Urgent(Distance)":"Urgent(Distance)","Very_Urgent(Distance)":"Very Urgent(Distance)","Save":"Save","Initial_Odometer":"Initial Odometer","Distance":"Distance","Initial_Odometer_reading":"Initial Odometer reading","Total_Distance":"Total Distance","Recalculate_Distance":"Recalculate Distance","Edit_Multiple_Odometer_Records":"Edit Multiple Odometer Records","Odometer_Adjustments":"Odometer Adjustments","Odometer_Multiplier":"Odometer Multiplier","Odometer_Difference":"Odometer Difference","Adjust_Odometer":"Adjust Odometer","Edit_Multiple_Gas_Records":"Edit Multiple Gas Records","Multiple":"Multiple","Copy_Attachments":"Copy Attachments","Purchased_Price(optional)":"Purchased Price(optional)","Purchased_Price":"Purchased Price","Sold_Price(optional)":"Sold Price(optional)","Sold_Price":"Sold Price","Purchase/Sold_Information(optional)":"Purchase/Sold Information(optional)","Electric":"Electric","Depreciation":"Depreciation","day":"day","Appreciation":"Appreciation","Search_by_Keyword(Case_Sensitive)":"Search by Keyword(Case Sensitive)","Incremental_Search":"Incremental Search","Unsaved_Changes":"Unsaved Changes","Edit_Plan_Record_Template":"Edit Plan Record Template","No_Data_Found":"No Data Found","Sponsors":"Sponsors","All_Time":"All Time","Metrics":"Metrics","gallons":"gallons","miles":"miles","liters":"liters","kilometers":"kilometers","Fuel_Type":"Fuel Type","Diesel":"Diesel","Documents_Pending_Upload":"Documents Pending Upload","Vehicle_Cost_Breakdown":"Vehicle Cost Breakdown","Cost_Per_Day":"Cost Per Day","Cost_Per_Mile":"Cost Per Mile","Cost_Per_Kilometer":"Cost Per Kilometer","Cost_Per_Hour":"Cost Per Hour","Dashboard_Metrics":"Dashboard Metrics","Last_Odometer":"Last Odometer","Total_Cost_/_Total_Distance_Driven":"Total Cost / Total Distance Driven","Use_Custom_Thresholds":"Use Custom Thresholds","Disable_Registration":"Disable Registration","Default_Reminder_Email":"Default Reminder Email","Default_Email_for_Reminder":"Default Email for Reminder","Enable_OIDC_for_Root_User":"Enable OIDC for Root User","Adaptive_Color_Mode":"Adaptive Color Mode","Uses_the_Default_Reminder_Email_for_OIDC_Auth":"Uses the Default Reminder Email for OIDC Auth","Odometer_Optional":"Odometer Optional","Manage_Tokens":"Manage Tokens","Generate":"Generate","Notify":"Notify","Start_Recording":"Start Recording","Stop_Recording":"Stop Recording","Current_Odometer":"Current Odometer","Experimental_Feature_-_Do_not_exit_or_minimize_this_app_when_recording._Verify_all_starting_and_ending_odometers._Accuracy_subject_to_hardware_limitations.":"Experimental Feature - Do not exit or minimize this app when recording. Verify all starting and ending odometers. Accuracy subject to hardware limitations.","Identifier":"Identifier","Translation_Editor":"Translation Editor","Save_Translation":"Save Translation","Export_Translation":"Export Translation","Get_Translations":"Get Translations","Available_Translations":"Available Translations","Download_All_Translations":"Download All Translations","Reorder_Tabs":"Reorder Tabs","Reset_Tab_Order":"Reset Tab Order","Save_Tab_Order":"Save Tab Order","Upcoming_Reminder":"Upcoming Reminder","Plans":"Plans"} \ No newline at end of file From f6e0873d83741e3af44c0506e0c1d15ae3d5f075 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Thu, 31 Oct 2024 23:41:23 -0600 Subject: [PATCH 2/3] fix small screen spacing. --- Controllers/HomeController.cs | 13 ++++++++++--- Helper/StaticHelper.cs | 2 +- Views/Home/Kiosk.cshtml | 14 +++++++++++++- Views/Home/_Kiosk.cshtml | 26 +++++++++++++------------- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/Controllers/HomeController.cs b/Controllers/HomeController.cs index f1e1e4c..d5bf7c5 100644 --- a/Controllers/HomeController.cs +++ b/Controllers/HomeController.cs @@ -55,9 +55,16 @@ namespace CarCareTracker.Controllers { return View(model: tab); } - public IActionResult Kiosk() - { - return View(); + public IActionResult Kiosk(string exceptions) + { + try { + var exceptionList = string.IsNullOrWhiteSpace(exceptions) ? new List() : exceptions.Split(',').Select(x => int.Parse(x)).ToList(); + return View(exceptionList); + } + catch (Exception ex) + { + return View(new List()); + } } public IActionResult KioskContent(List exceptionList) { diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index aaa1236..e49e99a 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -43,7 +43,7 @@ namespace CarCareTracker.Helper case "PastDue": return "Past Due"; default: - return input.ToString(); + return input; } } diff --git a/Views/Home/Kiosk.cshtml b/Views/Home/Kiosk.cshtml index 46a524e..57acb0b 100644 --- a/Views/Home/Kiosk.cshtml +++ b/Views/Home/Kiosk.cshtml @@ -1,6 +1,7 @@ @{ ViewData["Title"] = "Kiosk"; } +@model List
@@ -9,9 +10,20 @@