Try something to sort locations along tracked trips
This commit is contained in:
@@ -15,6 +15,8 @@ export function addJourneyToDraftingBoard(journey) {
|
||||
});
|
||||
}
|
||||
|
||||
trackedTripsLocationsSorted();
|
||||
|
||||
let station_offset = 0;
|
||||
let trip_offset = 1;
|
||||
|
||||
@@ -129,3 +131,53 @@ export function addJourneyToDraftingBoard(journey) {
|
||||
trip_offset += 1;
|
||||
}
|
||||
}
|
||||
|
||||
export function getLocationWithLeastInboundTrips(locations, trips) {
|
||||
function numberOfInboundTrips(location) {
|
||||
return trips.filter(trip => trip.destination == location).length;
|
||||
}
|
||||
|
||||
let locations_sorted_by_number_of_inbound_trips = locations.toSorted((location_a, location_b) => {
|
||||
let n_a = numberOfInboundTrips(location_a);
|
||||
let n_b = numberOfInboundTrips(location_b);
|
||||
|
||||
if (n_a == n_b) {
|
||||
return 0;
|
||||
} else if (n_a > n_b) {
|
||||
return 1;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
});
|
||||
|
||||
return locations_sorted_by_number_of_inbound_trips[0];
|
||||
}
|
||||
|
||||
export function sortLocations(sorted_locations, unsorted_locations, trips) {
|
||||
if (unsorted_locations.length == 0) {
|
||||
return sorted_locations;
|
||||
}
|
||||
|
||||
let selected_location = getLocationWithLeastInboundTrips(unsorted_locations, trips);
|
||||
|
||||
unsorted_locations = unsorted_locations.filter(location => location != selected_location);
|
||||
trips = trips.filter(trip => trip.destination != selected_location && trip.origin != selected_location);
|
||||
|
||||
return sortLocations(sorted_locations.concat([ selected_location ]), unsorted_locations, trips);
|
||||
}
|
||||
|
||||
export function trackedTripsLocationsSorted() {
|
||||
let tracked_trips = DataStore.tracked_trips.get();
|
||||
let tracked_locations = Array.from(new Set(tracked_trips.map(trip => trip.origin).concat(tracked_trips.map(trip => trip.destination))));
|
||||
|
||||
console.log(tracked_trips);
|
||||
console.log(tracked_locations);
|
||||
|
||||
let sorted_locations = sortLocations([], tracked_locations, tracked_trips);
|
||||
|
||||
console.log(sorted_locations);
|
||||
|
||||
console.log(sorted_locations.map(item => DataStore.locations.get()[item]?.name));
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user