This commit is contained in:
Loretta 2025-11-12 17:19:45 +01:00
parent bb3cc3c37c
commit 545b543abe
1 changed files with 11 additions and 6 deletions

View File

@ -16,7 +16,7 @@ namespace AyCode.Services.Server.SignalRs
//public class TrackingItemInt<TDataItem>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) : TrackingItem<TDataItem, int>(trackingState, currentValue, originalValue) //public class TrackingItemInt<TDataItem>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) : TrackingItem<TDataItem, int>(trackingState, currentValue, originalValue)
// where TDataItem : class, IId<int> {} // where TDataItem : class, IId<int> {}
public abstract class TrackingItem<TDataItem, TId>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId<TId> where TId : struct public class TrackingItem<TDataItem, TId>(TrackingState trackingState, TDataItem currentValue, TDataItem? originalValue = null) where TDataItem : class, IId<TId> where TId : struct
{ {
public TrackingState TrackingState { get; internal set; } = trackingState; public TrackingState TrackingState { get; internal set; } = trackingState;
public TDataItem CurrentValue { get; internal set; } = currentValue; public TDataItem CurrentValue { get; internal set; } = currentValue;
@ -68,7 +68,7 @@ namespace AyCode.Services.Server.SignalRs
//protected abstract int FindIndex(TDataItem newValue); //protected abstract int FindIndex(TDataItem newValue);
//public abstract bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem); //public abstract bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem);
private bool HasIdValue(TDataItem dataItem) => _equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty(); private bool HasIdValue(TDataItem dataItem) => !_equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
public int FindIndex(TDataItem newValue) => _trackingItems.FindIndex(x => _equalityComparer.Equals(x.CurrentValue.Id, newValue.Id)); public int FindIndex(TDataItem newValue) => _trackingItems.FindIndex(x => _equalityComparer.Equals(x.CurrentValue.Id, newValue.Id));
public bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem) public bool TryGetTrackingItem(TId id, [NotNullWhen(true)] out TrackingItem<TDataItem, TId>? trackingItem)
{ {
@ -100,7 +100,7 @@ namespace AyCode.Services.Server.SignalRs
originalValue = TrackingItemHelpers.JsonClone(originalValue); originalValue = TrackingItemHelpers.JsonClone(originalValue);
//trackingItem = new TrackingItem<TDataItem>(trackingState, newValue, originalValue); //trackingItem = new TrackingItem<TDataItem>(trackingState, newValue, originalValue);
trackingItem = (TrackingItem<TDataItem, TId>)Activator.CreateInstance(typeof(TrackingItem<TDataItem, TId>), trackingState, newValue, originalValue)!; trackingItem = new TrackingItem<TDataItem, TId>(trackingState, newValue, originalValue);
_trackingItems.Add(trackingItem); _trackingItems.Add(trackingItem);
return trackingItem; return trackingItem;
@ -168,7 +168,7 @@ namespace AyCode.Services.Server.SignalRs
private readonly EqualityComparer<TId> _equalityComparer = EqualityComparer<TId>.Default; private readonly EqualityComparer<TId> _equalityComparer = EqualityComparer<TId>.Default;
protected TIList InnerList = Activator.CreateInstance<TIList>();// []; //TODO: Dictionary??? - J. protected TIList InnerList = Activator.CreateInstance<TIList>();// []; //TODO: Dictionary??? - J.
protected readonly ChangeTracking<TDataItem, TId> TrackingItems = Activator.CreateInstance<ChangeTracking<TDataItem, TId>>(); protected readonly ChangeTracking<TDataItem, TId> TrackingItems = new();
public object[]? ContextIds; public object[]? ContextIds;
public string? FilterText { get; set; } public string? FilterText { get; set; }
@ -184,7 +184,7 @@ namespace AyCode.Services.Server.SignalRs
//protected abstract int FindIndexInnerList(TId id); //protected abstract int FindIndexInnerList(TId id);
//protected abstract TDataItem? FirstOrDefaultInnerList(TId id); //protected abstract TDataItem? FirstOrDefaultInnerList(TId id);
protected bool HasIdValue(TDataItem dataItem) => _equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty(); protected bool HasIdValue(TDataItem dataItem) => !_equalityComparer.Equals(dataItem.Id, default);//dataItem.Id.IsNullOrEmpty();
protected bool IdEquals(TId id1, TId id2) => _equalityComparer.Equals(id1, id2); protected bool IdEquals(TId id1, TId id2) => _equalityComparer.Equals(id1, id2);
protected int FindIndexInnerList(TId id) => InnerList.FindIndex(x => IdEquals(x.Id, id)); protected int FindIndexInnerList(TId id) => InnerList.FindIndex(x => IdEquals(x.Id, id));
protected TDataItem? FirstOrDefaultInnerList(TId id) => InnerList.FirstOrDefault(x => IdEquals(x.Id, id)); protected TDataItem? FirstOrDefaultInnerList(TId id) => InnerList.FirstOrDefault(x => IdEquals(x.Id, id));
@ -290,7 +290,12 @@ namespace AyCode.Services.Server.SignalRs
} }
else if (clearChangeTracking) TrackingItems.Clear(); else if (clearChangeTracking) TrackingItems.Clear();
if (refreshDataFromDbAsync) LoadDataSourceAsync(false).Forget(); //TODO: Átgondolni, OnDataSourceLoaded meghívódik mielőtt az adatok betöltődnének a .Forget() miatt! - J.
if (refreshDataFromDbAsync)
{
LoadDataSourceAsync(false).Forget();
return;
}
} }
finally finally
{ {