Drag Drop sorting by distance attempt

This commit is contained in:
2022-11-22 22:24:43 -07:00
parent 3b988ba152
commit ae1baaaf46
12 changed files with 385 additions and 165 deletions

View File

@ -797,15 +797,14 @@ public class MapLogic
return new(personKeyFormatted, personBirthday);
}
private List<(string, PersonContainer)> GetPersonContainers(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Dictionary<long, int> personKeyToCount)
private List<string> GetPersonKeyFormattedCollection(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Dictionary<long, int> personKeyToCount)
{
if (_Configuration is null)
throw new NullReferenceException(nameof(_Configuration));
if (_MapLogicSupport is null)
throw new NullReferenceException(nameof(_MapLogicSupport));
List<(string, PersonContainer)> results = new();
List<string> results = new();
string[] files;
const int zero = 0;
string[] directories;
string checkDirectory;
string[] checkDirectories;
@ -865,24 +864,18 @@ public class MapLogic
matches = (from l in personContainers where l.Key == personKey && l.ApproximateYears.HasValue select l).ToArray();
if (!matches.Any())
continue;
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personKey);
if (!displayDirectoryName.Contains(personKeyFormatted))
continue;
if (!Directory.Exists(displayDirectoryName))
_ = Directory.CreateDirectory(displayDirectoryName);
personKeyFormatted = IPersonBirthday.GetFormatted(_Configuration.PersonBirthdayFormat, personKey);
results.Add(new(personKeyFormatted, matches[zero]));
results.Add(personKeyFormatted);
}
}
}
return results;
}
private string[] GetPersonKeyFormattedCollection(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Dictionary<long, int> personKeyToCount)
{
string[] results;
List<(string PersonKeyFormatted, PersonContainer PersonContainer)> collection = GetPersonContainers(jLinks, a2PeopleSingletonDirectory, personContainers, personKeyToCount);
results = (from l in collection orderby l.PersonKeyFormatted select l.PersonKeyFormatted).ToArray();
return results;
}
private (int, FileHolder, int, string, string, string, string)[] GetCollectionForSaveResizedImagesByPersonKeyFormatted(string[] jLinks, string a2PeopleSingletonDirectory, PersonContainer[] personContainers, Mapping[] mappingCollection, Dictionary<long, int> personKeyToCount)
{
if (_Configuration is null)
@ -893,7 +886,8 @@ public class MapLogic
string? directoryName;
string personDirectory;
string personKeyFormatted;
string[] personKeyFormattedCollection = GetPersonKeyFormattedCollection(jLinks, a2PeopleSingletonDirectory, personContainers, personKeyToCount);
bool usePersonKeyAndDeterministicHashCodeKey = false;
List<string> personKeyFormattedCollection = GetPersonKeyFormattedCollection(jLinks, a2PeopleSingletonDirectory, personContainers, personKeyToCount);
List<(int Id, FileHolder ResizedFileHolder, int ApproximateYears, string PersonKeyFormatted, string CheckFile, string Directory, string PersonDirectory)> collection = new();
foreach (Mapping mapping in mappingCollection)
{
@ -913,9 +907,18 @@ public class MapLogic
continue;
if (!personKeyFormattedCollection.Contains(personKeyFormatted))
continue;
directory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted);
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
if (!usePersonKeyAndDeterministicHashCodeKey)
{
directory = Path.Combine(_EDistanceContentTicksDirectory, "Images");
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
checkFile = Path.Combine(directory, $"{mapping.MappingFromItem.Id}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
}
else
{
directory = Path.Combine(_EDistanceContentTicksDirectory, "Images", personKeyFormatted);
personDirectory = Path.Combine(directory, mapping.MappingFromPerson.DisplayDirectoryName);
checkFile = Path.Combine(directory, $"{mapping.MappingFromLocation.DeterministicHashCodeKey}{mapping.MappingFromItem.ImageFileHolder.ExtensionLowered}");
}
collection.Add(new(mapping.MappingFromItem.Id, mapping.MappingFromItem.ResizedFileHolder, mapping.MappingFromPerson.ApproximateYears.Value, personKeyFormatted, directory, personDirectory, checkFile));
}
results = (from l in collection orderby l.ApproximateYears descending, l.PersonKeyFormatted descending select l).ToArray();
@ -954,7 +957,7 @@ public class MapLogic
string personDirectory;
string personKeyFormatted;
List<(string, string, string, string)> collection = new();
string[] personKeyFormattedCollection = GetPersonKeyFormattedCollection(jLinks, a2PeopleSingletonDirectory, personContainers, personKeyToCount);
List<string> personKeyFormattedCollection = GetPersonKeyFormattedCollection(jLinks, a2PeopleSingletonDirectory, personContainers, personKeyToCount);
foreach (Item item in filteredItems)
{
directoryName = Path.GetDirectoryName(item.RelativePath);