Can-remap

This commit is contained in:
2023-09-06 23:51:28 -07:00
parent b2e2a66101
commit 8d759ccefd
21 changed files with 563 additions and 447 deletions

View File

@ -37,6 +37,7 @@ taskTemplate: '^+^_${overdue ? ''^R'' : ''''}${name}^: ${relations ? (''\n^-^/^g
- [merge-kristy-files](tasks/merge-kristy-files.md)
- [review-location-container-distance-tolerance](tasks/review-location-container-distance-tolerance.md)
- [can-re-map](tasks/can-re-map.md)
## Done

View File

@ -0,0 +1,41 @@
---
created: 2023-09-06T01:48:53.593Z
updated: 2023-09-06T01:48:53.588Z
assigned: ""
progress: 0
tags: []
started: 2023-09-06T01:48:53.593Z
---
# CanReMap
```csharp
DlibDotNet.GetMappingAndUpdateMappingFromPerson;
private (Mapping, int) GetMappingAndUpdateMappingFromPerson(MapLogic mapLogic, Item item, bool? isFocusRelativePath, MappingFromItem mappingFromItem)
// ... Done
E_Distance.PreFilterSetFaceDistances;
public static void PreFilterSetFaceDistances(int maxDegreeOfParallelism, long ticks, ReadOnlyCollection<Face> distinctFilteredFaces)
// ... Done
E_Distance.FilteredPostLoadFaceDistanceContainers;
public static FaceDistanceContainer[] FilteredPostLoadFaceDistanceContainers(Map.Models.MapLogic mapLogic, ReadOnlyCollection<FaceDistanceContainer> faceDistanceContainers, long? skipOlderThan, DistanceLimits distanceLimits)
// ... Done
E_Distance.SetFaceMappingSortingCollectionThenGetSortedSortingContainers
=> MapLogic.GetSortingCollection;
public List<Sorting> GetSortingCollection(int i, Face face, FaceDistance faceDistanceEncoding, List<FaceDistance> faceDistanceLengths)
// ...
MapLogic.GetFilterSortingContainers;
public ReadOnlyCollection<SortingContainer> GetFilterSortingContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, Shared.Models.Methods.IDistanceLimits distanceLimits, ReadOnlyCollection<SortingContainer> sortingContainers)
// ...
E_Distance.SaveFaceDistances;
public static void SaveFaceDistances(Property.Models.Configuration configuration, ReadOnlyCollection<SortingContainer> sortingContainers)
// ...
MapLogic.UpdateFromSortingContainers;
public int UpdateFromSortingContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, ReadOnlyCollection<SortingContainer> sortingContainers)
// ...
MapLogic.GetSaveContainers;
public List<SaveContainer> GetSaveContainers(string dFacesContentDirectory, string d2FacePartsContentDirectory, string d2FacePartsContentCollectionDirectory, ReadOnlyDictionary<int, ReadOnlyDictionary<int, Mapping>> idToWholePercentagesToMapping, Shared.Models.Methods.IDistanceLimits distanceLimits, int? useFiltersCounter, ReadOnlyCollection<SortingContainer> sortingContainers)
// ...
MapLogic.SaveContainers;
public void SaveContainers(int? updated, List<SaveContainer> saveContainers)
// ...
```

View File

@ -1,4 +1,3 @@
using System.Collections.ObjectModel;
using System.Text.Json;
using System.Text.Json.Serialization;
@ -15,7 +14,6 @@ public class Mapping : Properties.IMapping
public MappingFromFilterPost MappingFromFilterPost { init; get; }
public MappingFromFilterPre MappingFromFilterPre { init; get; }
public MappingFromItem MappingFromItem { init; get; }
public MappingFromFilter MappingFromFilter { init; get; }
public MappingFromLocation? MappingFromLocation { init; get; }
public MappingFromPerson? MappingFromPerson => _MappingFromPerson;
public List<MappingFromPhotoPrism>? MappingFromPhotoPrismCollection { init; get; }
@ -23,11 +21,10 @@ public class Mapping : Properties.IMapping
public SortingContainer? SortingContainer => _SortingContainer;
[JsonConstructor]
public Mapping(int? by, MappingFromFilter mappingFromFilter, MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, MappingFromPerson? mappingFromPerson, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection, string? segmentC, SortingContainer? sortingContainer)
public Mapping(int? by, MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, MappingFromPerson? mappingFromPerson, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection, string? segmentC, SortingContainer? sortingContainer)
{
_By = by;
_SegmentC = segmentC;
MappingFromFilter = mappingFromFilter;
MappingFromFilterPost = mappingFromFilterPost;
MappingFromFilterPre = mappingFromFilterPre;
MappingFromItem = mappingFromItem;
@ -37,8 +34,8 @@ public class Mapping : Properties.IMapping
_SortingContainer = sortingContainer;
}
public Mapping(MappingFromFilter mappingFromFilter, MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection) :
this(null, mappingFromFilter, mappingFromFilterPost, mappingFromFilterPre, mappingFromItem, mappingFromLocation, null, mappingFromPhotoPrismCollection, null, null)
public Mapping(MappingFromFilterPost mappingFromFilterPost, MappingFromFilterPre mappingFromFilterPre, MappingFromItem mappingFromItem, MappingFromLocation? mappingFromLocation, List<MappingFromPhotoPrism>? mappingFromPhotoPrismCollection) :
this(null, mappingFromFilterPost, mappingFromFilterPre, mappingFromItem, mappingFromLocation, null, mappingFromPhotoPrismCollection, null, null)
{ }
public override string ToString()
@ -54,19 +51,19 @@ public class Mapping : Properties.IMapping
_SegmentC = !saveIndividually ? null : sortingContainer.Sorting.DistancePermyriad.ToString();
}
public void UpdateMappingFromPerson(ReadOnlyCollection<string> locationContainersFiles, int? approximateYears, string displayDirectoryName, PersonBirthday personBirthday, string segmentB)
public void UpdateMappingFromPerson(int? approximateYears, string displayDirectoryName, long personKey, string segmentB)
{
_SortingContainer = null;
_By = Stateless.IMapLogic.Mapping;
_MappingFromPerson = new(approximateYears, displayDirectoryName, locationContainersFiles, personBirthday, segmentB);
_MappingFromPerson = new(approximateYears, displayDirectoryName, personKey, segmentB);
}
public void UpdateMappingFromPerson(int? approximateYears, string displayDirectoryName, PersonBirthday personBirthday, string segmentB, string segmentC, SortingContainer sortingContainer, ReadOnlyCollection<string> locationContainersFiles)
public void UpdateMappingFromPerson(int? approximateYears, string displayDirectoryName, long personKey, string segmentB, string? segmentC, SortingContainer sortingContainer)
{
_SegmentC = segmentC;
_By = Stateless.IMapLogic.Sorting;
_SortingContainer = sortingContainer;
_MappingFromPerson = new(approximateYears, displayDirectoryName, locationContainersFiles, personBirthday, segmentB);
_MappingFromPerson = new(approximateYears, displayDirectoryName, personKey, segmentB);
}
}

View File

@ -1,4 +1,3 @@
using System.Collections.ObjectModel;
using System.Text.Json;
using System.Text.Json.Serialization;
@ -6,8 +5,7 @@ namespace View_by_Distance.Shared.Models;
public record MappingFromPerson(int? ApproximateYears,
string DisplayDirectoryName,
ReadOnlyCollection<string> LocationContainersFiles,
PersonBirthday PersonBirthday,
long PersonKey,
string SegmentB)
{

View File

@ -6,7 +6,6 @@ public interface IMapping
public int? By { get; }
public MappingFromFilterPost MappingFromFilterPost { init; get; }
public MappingFromFilterPre MappingFromFilterPre { init; get; }
public MappingFromItem MappingFromItem { init; get; }
public MappingFromLocation? MappingFromLocation { init; get; }
public MappingFromPerson? MappingFromPerson { get; }
public List<MappingFromPhotoPrism>? MappingFromPhotoPrismCollection { init; get; }

View File

@ -3,7 +3,7 @@ namespace View_by_Distance.Shared.Models.Properties;
public interface ISorting
{
public bool CanReMap { init; get; }
public bool? CanReMap { init; get; }
public int DaysDelta { init; get; }
public int DistancePermyriad { init; get; }
public int Id { init; get; }

View File

@ -3,7 +3,8 @@ namespace View_by_Distance.Shared.Models.Properties;
public interface ISortingContainer
{
public Mapping Mapping { init; get; }
public Mapping? Question { init; get; }
public Sorting Sorting { init; get; }
public Mapping Source { init; get; }
}

View File

@ -6,7 +6,7 @@ namespace View_by_Distance.Shared.Models;
public record class Sorting : Properties.ISorting
{
public bool CanReMap { init; get; }
public bool? CanReMap { init; get; }
public int DaysDelta { init; get; }
public int DistancePermyriad { init; get; }
public int Id { init; get; }
@ -14,7 +14,7 @@ public record class Sorting : Properties.ISorting
public int WholePercentages { init; get; }
[JsonConstructor]
public Sorting(bool canReMap, int daysDelta, int distancePermyriad, int id, bool older, int wholePercentages)
public Sorting(bool? canReMap, int daysDelta, int distancePermyriad, int id, bool older, int wholePercentages)
{
CanReMap = canReMap;
DaysDelta = daysDelta;
@ -25,7 +25,7 @@ public record class Sorting : Properties.ISorting
}
public Sorting(Mapping mapping, MappingFromLocation mappingFromLocation) :
this(false, 0, 0, mapping.MappingFromItem.Id, false, mappingFromLocation.WholePercentages)
this(null, 0, 0, mapping.MappingFromItem.Id, false, mappingFromLocation.WholePercentages)
{ }
public override string ToString()

View File

@ -5,19 +5,25 @@ namespace View_by_Distance.Shared.Models;
public record class SortingContainer : Properties.ISortingContainer
{
public Mapping Mapping { init; get; }
public Mapping? Question { init; get; }
public Sorting Sorting { init; get; }
public Mapping Source { init; get; }
[JsonConstructor]
public SortingContainer(Mapping mapping, Sorting sorting)
public SortingContainer(Mapping? question, Sorting sorting, Mapping source)
{
Mapping = mapping;
Question = question;
Sorting = sorting;
Source = source;
}
public SortingContainer(Sorting sorting, Mapping source) :
this(null, sorting, source)
{ }
public override string ToString()
{
string result = string.Concat(Mapping.MappingFromItem.Id, '\t', Mapping.MappingFromLocation?.WholePercentages, '\t', Sorting.Id, '\t', Sorting.WholePercentages, '\t', Sorting.Older, '\t', '\t', Sorting.DistancePermyriad, '\t', Sorting.DaysDelta);
string result = string.Concat(Source.MappingFromItem.Id, '\t', Source.MappingFromLocation?.WholePercentages, '\t', Sorting.Id, '\t', Sorting.WholePercentages, '\t', Sorting.Older, '\t', '\t', Sorting.DistancePermyriad, '\t', Sorting.DaysDelta);
return result;
}

View File

@ -16,6 +16,9 @@ public interface IPersonBirthday
static bool IsCounterPersonBirthday(Models.PersonBirthday personBirthday) =>
personBirthday.Value.Year < 1809;
static bool IsCounterPersonYear(long personKey) =>
new DateTime(personKey).Year < 1809;
static bool IsCounterPersonYear(int year) =>
year < 1809;

View File

@ -3,11 +3,11 @@ namespace View_by_Distance.Shared.Models.Stateless.Methods;
public interface ISortingContainer
{ // ...
Models.SortingContainer[] TestStatic_Sort(List<Models.SortingContainer> collection) =>
List<Models.SortingContainer> TestStatic_Sort(List<Models.SortingContainer> collection) =>
Sort(collection);
static Models.SortingContainer[] Sort(List<Models.SortingContainer> collection) =>
(from l in collection orderby l.Sorting.DistancePermyriad select l).ToArray();
static Models.SortingContainer[] SortUsingDaysDelta(List<Models.SortingContainer> collection) =>
(from l in collection orderby l.Sorting.DistancePermyriad, l.Sorting.DaysDelta select l).ToArray();
static List<Models.SortingContainer> Sort(List<Models.SortingContainer> collection) =>
(from l in collection orderby l.Sorting.DistancePermyriad select l).ToList();
static List<Models.SortingContainer> SortUsingDaysDelta(List<Models.SortingContainer> collection) =>
(from l in collection orderby l.Sorting.DistancePermyriad, l.Sorting.DaysDelta select l).ToList();
}

View File

@ -15,8 +15,8 @@ internal abstract class Sorting
TimeSpan timeSpan = new(faceDistanceLength.DateTimeOriginalThenMinimumDateTime.Ticks - faceDistanceEncoding.DateTimeOriginalThenMinimumDateTime.Ticks);
bool older = timeSpan.TotalMilliseconds < 0;
int daysDelta = (int)Math.Round(Math.Abs(timeSpan.TotalDays), 0);
bool? canReMap = faceDistanceLength.MappingFromFilterPost?.CanReMap;
int distancePermyriad = (int)(faceDistanceLength.Length.Value * faceDistancePermyriad);
bool canReMap = faceDistanceLength.MappingFromFilterPost?.CanReMap is not null && faceDistanceLength.MappingFromFilterPost.CanReMap.Value;
result = new(canReMap, daysDelta, distancePermyriad, faceDistanceLength.Id.Value, older, faceDistanceLength.WholePercentages.Value);
return result;
}