fix: search

This commit is contained in:
Frozd
2025-11-28 12:22:56 +01:00
parent 746f8c4039
commit d4f3ac8776

View File

@@ -13,7 +13,6 @@ namespace CarManagerV2
public partial class MainForm : Form
{
List<Car> cars = new List<Car>();
List<Car> lastCars = new List<Car>();
public MainForm()
{
@@ -25,74 +24,17 @@ namespace CarManagerV2
}
private async void refreshCars(List<Car> _cars)
private async void refreshCars(List<Car> _cars, bool updateGlobal = true)
{
if (updateGlobal)
{
//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(!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<CarCard>().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<Car> __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<Car>(cars);
}
@@ -174,13 +116,13 @@ namespace CarManagerV2
{
// refresh cars
Console.WriteLine("Refreshing cars...");
cars = SafeManager.ReadCars("cars.csv");
refreshCars(cars);
List<Car> cars_ = SafeManager.ReadCars("cars.csv");
refreshCars(cars_, false);
};
detailsForm.ShowDialog();
}
void searchList(string query)
List<Car> filterCarsByQuery(string query)
{
List<Car> results = new List<Car>();
foreach (Car car in cars)
@@ -190,7 +132,13 @@ namespace CarManagerV2
results.Add(car);
}
}
refreshCars(results);
return results;
}
void searchList(string query)
{
List<Car> 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
{