fix: search
This commit is contained in:
@@ -13,7 +13,6 @@ namespace CarManagerV2
|
|||||||
public partial class MainForm : Form
|
public partial class MainForm : Form
|
||||||
{
|
{
|
||||||
List<Car> cars = new List<Car>();
|
List<Car> cars = new List<Car>();
|
||||||
List<Car> lastCars = new List<Car>();
|
|
||||||
|
|
||||||
public MainForm()
|
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;
|
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)
|
foreach (Car car in _cars)
|
||||||
{
|
{
|
||||||
// not in list? add it
|
// not in list? add it
|
||||||
bool isNew = flpCars.Controls.OfType<CarCard>().All(c => c.Car.Id != car.Id);
|
bool isNew = flpCars.Controls.OfType<CarCard>().All(c => c.Car.Id != car.Id);
|
||||||
bool isUpdated = false;
|
|
||||||
// existing but changed? update it
|
// existing but changed? update it
|
||||||
CarCard card = new CarCard();
|
CarCard card = new CarCard();
|
||||||
if (!isNew)
|
if (!isNew)
|
||||||
@@ -108,8 +50,6 @@ namespace CarManagerV2
|
|||||||
Console.WriteLine($"[L] Checking car: {car.Id} | Car Color: {car.Color} | Ex Color: {existingCar.Color}");
|
Console.WriteLine($"[L] Checking car: {car.Id} | Car Color: {car.Color} | Ex Color: {existingCar.Color}");
|
||||||
if (existingCar.IsChanged(car))
|
if (existingCar.IsChanged(car))
|
||||||
{
|
{
|
||||||
|
|
||||||
isUpdated = true;
|
|
||||||
Console.WriteLine($"[L] Updating car: {car.Id}");
|
Console.WriteLine($"[L] Updating car: {car.Id}");
|
||||||
// changes
|
// changes
|
||||||
card = existing;
|
card = existing;
|
||||||
@@ -139,7 +79,15 @@ namespace CarManagerV2
|
|||||||
// refresh cars
|
// refresh cars
|
||||||
Console.WriteLine("Refreshing cars...");
|
Console.WriteLine("Refreshing cars...");
|
||||||
List<Car> __cars = await Task.Run(() => SafeManager.ReadCars("cars.csv"));
|
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);
|
refreshCars(__cars);
|
||||||
|
|
||||||
};
|
};
|
||||||
detailsForm.ShowDialog();
|
detailsForm.ShowDialog();
|
||||||
};
|
};
|
||||||
@@ -156,12 +104,6 @@ namespace CarManagerV2
|
|||||||
{
|
{
|
||||||
flpCars.Controls.Remove(card);
|
flpCars.Controls.Remove(card);
|
||||||
}
|
}
|
||||||
flpCars.Invalidate();
|
|
||||||
|
|
||||||
flpCars.Refresh();
|
|
||||||
|
|
||||||
lastCars = new List<Car>(cars);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,13 +116,13 @@ namespace CarManagerV2
|
|||||||
{
|
{
|
||||||
// refresh cars
|
// refresh cars
|
||||||
Console.WriteLine("Refreshing cars...");
|
Console.WriteLine("Refreshing cars...");
|
||||||
cars = SafeManager.ReadCars("cars.csv");
|
List<Car> cars_ = SafeManager.ReadCars("cars.csv");
|
||||||
refreshCars(cars);
|
refreshCars(cars_, false);
|
||||||
};
|
};
|
||||||
detailsForm.ShowDialog();
|
detailsForm.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
void searchList(string query)
|
List<Car> filterCarsByQuery(string query)
|
||||||
{
|
{
|
||||||
List<Car> results = new List<Car>();
|
List<Car> results = new List<Car>();
|
||||||
foreach (Car car in cars)
|
foreach (Car car in cars)
|
||||||
@@ -190,7 +132,13 @@ namespace CarManagerV2
|
|||||||
results.Add(car);
|
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)
|
private void tbxSearch_TextChanged(object sender, EventArgs e)
|
||||||
@@ -198,7 +146,7 @@ namespace CarManagerV2
|
|||||||
string query = tbxSearch.Text;
|
string query = tbxSearch.Text;
|
||||||
if(string.IsNullOrWhiteSpace(query))
|
if(string.IsNullOrWhiteSpace(query))
|
||||||
{
|
{
|
||||||
refreshCars(cars);
|
refreshCars(cars, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user