From d4f3ac8776bbcfdb0ac76bcf6325d868fe13bc6b Mon Sep 17 00:00:00 2001 From: Frozd <59323943+frozdbyte@users.noreply.github.com> Date: Fri, 28 Nov 2025 12:22:56 +0100 Subject: [PATCH] fix: search --- CarManagerV2/MainForm.cs | 100 ++++++++++----------------------------- 1 file changed, 24 insertions(+), 76 deletions(-) diff --git a/CarManagerV2/MainForm.cs b/CarManagerV2/MainForm.cs index 77cd88f..9c4d061 100644 --- a/CarManagerV2/MainForm.cs +++ b/CarManagerV2/MainForm.cs @@ -13,7 +13,6 @@ namespace CarManagerV2 public partial class MainForm : Form { List cars = new List(); - List lastCars = new List(); public MainForm() { @@ -25,74 +24,17 @@ namespace CarManagerV2 } - private async void refreshCars(List _cars) + private async void refreshCars(List _cars, bool updateGlobal = true) { - //if cars havent changed, dont refresh - //bool changed = false; - //foreach (Car car in _cars) - //{ - // Car existing = cars.FirstOrDefault(c => c.Id == car.Id); - // if (existing == null) - // { - // Console.WriteLine($"Added: {car.Id}"); - // changed = true; - // break; - // } - // else if (existing.isChanged(car)) - // { - // Console.WriteLine($"Modified: {car.Id} / {existing.Id}"); - // changed = true; - // break; - // } + if (updateGlobal) + { + cars = _cars; + } - //} - //if(!changed && cars.Count == _cars.Count) - //{ - // Console.WriteLine("Cars are the same, not refreshing."); - // cars = _cars; - // return; - //} - - cars = _cars; - - - //if(cars.SequenceEqual(_cars)) - //{ - // Console.WriteLine("Cars are the same, not refreshing."); - // return; - //} - //else - //{ - // Console.WriteLine("Cars have changed, refreshing."); - // Console.WriteLine($"Old cars count: {cars.Count}, New cars count: {_cars.Count}"); - // //find differences - // Console.WriteLine("Saved:"); - // foreach (var car in cars) - // { - // Console.Write($"{car.Id}, {car.Make} {car.Model}, {car.Year} | "); - // } - // Console.WriteLine("-------------------"); - // Console.WriteLine("New:"); - // foreach (var car in _cars) - // { - // Console.Write($"{car.Id}, {car.Make} {car.Model}, {car.Year} | "); - // } - // Console.WriteLine(); - // var addedCars = _cars.Except(cars).ToList(); - // var removedCars = cars.Except(_cars).ToList(); - // var modifiedCars = _cars.Where(c => cars.Any(c2 => c2.Id == c.Id && !c2.Equals(c))).ToList(); - // Console.WriteLine($"Added cars: {addedCars.Count}, Removed cars: {removedCars.Count}, Modified cars: {modifiedCars.Count}"); - //} - - // Get the cars currently in the FlowLayoutPanel to compare with _cars - - - //flpCars.Controls.Clear(); foreach (Car car in _cars) { // not in list? add it bool isNew = flpCars.Controls.OfType().All(c => c.Car.Id != car.Id); - bool isUpdated = false; // existing but changed? update it CarCard card = new CarCard(); if (!isNew) @@ -108,8 +50,6 @@ namespace CarManagerV2 Console.WriteLine($"[L] Checking car: {car.Id} | Car Color: {car.Color} | Ex Color: {existingCar.Color}"); if (existingCar.IsChanged(car)) { - - isUpdated = true; Console.WriteLine($"[L] Updating car: {car.Id}"); // changes card = existing; @@ -139,7 +79,15 @@ namespace CarManagerV2 // refresh cars Console.WriteLine("Refreshing cars..."); List __cars = await Task.Run(() => SafeManager.ReadCars("cars.csv")); + if(tbxSearch.Text.Length > 0) + { + Console.WriteLine("Search box has text, applying search filter."); + cars = __cars; + searchList(tbxSearch.Text); + return; + } refreshCars(__cars); + }; detailsForm.ShowDialog(); }; @@ -156,12 +104,6 @@ namespace CarManagerV2 { flpCars.Controls.Remove(card); } - flpCars.Invalidate(); - - flpCars.Refresh(); - - lastCars = new List(cars); - } @@ -174,13 +116,13 @@ namespace CarManagerV2 { // refresh cars Console.WriteLine("Refreshing cars..."); - cars = SafeManager.ReadCars("cars.csv"); - refreshCars(cars); + List cars_ = SafeManager.ReadCars("cars.csv"); + refreshCars(cars_, false); }; detailsForm.ShowDialog(); } - void searchList(string query) + List filterCarsByQuery(string query) { List results = new List(); foreach (Car car in cars) @@ -190,7 +132,13 @@ namespace CarManagerV2 results.Add(car); } } - refreshCars(results); + return results; + } + + void searchList(string query) + { + List results = filterCarsByQuery(query); + refreshCars(results, false); } private void tbxSearch_TextChanged(object sender, EventArgs e) @@ -198,7 +146,7 @@ namespace CarManagerV2 string query = tbxSearch.Text; if(string.IsNullOrWhiteSpace(query)) { - refreshCars(cars); + refreshCars(cars, false); } else {