mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-08-22 12:59:05 +02:00
* Add mechanism to get pending updates info
This commit is contained in:
parent
801f362c24
commit
04fdabce10
@ -1032,6 +1032,16 @@ type
|
|||||||
end;
|
end;
|
||||||
TBuffers = Array of TDataRecord;
|
TBuffers = Array of TDataRecord;
|
||||||
|
|
||||||
|
TResolveInfo = record
|
||||||
|
Data : JSValue;
|
||||||
|
Status : TUpdateStatus;
|
||||||
|
Error : String; // Only filled on error.
|
||||||
|
BookMark : TBookmark;
|
||||||
|
_private : JSValue; // for use by descendents of TDataset
|
||||||
|
end;
|
||||||
|
TResolveInfoArray = Array of TResolveInfo;
|
||||||
|
TOnRecordResolveEvent = Procedure (Sender : TDataset; info : TResolveInfo);
|
||||||
|
|
||||||
{------------------------------------------------------------------------------}
|
{------------------------------------------------------------------------------}
|
||||||
|
|
||||||
TDataSet = class(TComponent)
|
TDataSet = class(TComponent)
|
||||||
@ -1044,6 +1054,8 @@ type
|
|||||||
FCalcBuffer: TDataRecord;
|
FCalcBuffer: TDataRecord;
|
||||||
FCalcFieldsSize: Longint;
|
FCalcFieldsSize: Longint;
|
||||||
FOnLoadFail: TDatasetLoadFailEvent;
|
FOnLoadFail: TDatasetLoadFailEvent;
|
||||||
|
FOnRecordResolved: TOnRecordResolveEvent;
|
||||||
|
FOnRecordResolveEvent: TOnRecordResolveEvent;
|
||||||
FOpenAfterRead : boolean;
|
FOpenAfterRead : boolean;
|
||||||
FActiveRecord: Longint;
|
FActiveRecord: Longint;
|
||||||
FAfterCancel: TDataSetNotifyEvent;
|
FAfterCancel: TDataSetNotifyEvent;
|
||||||
@ -1122,6 +1134,10 @@ type
|
|||||||
protected
|
protected
|
||||||
// Proxy methods
|
// Proxy methods
|
||||||
// Override this to integrate package in local data
|
// Override this to integrate package in local data
|
||||||
|
// call OnRecordResolved
|
||||||
|
procedure DoOnRecordResolved(anUpdate: TRecordUpdateDescriptor); virtual;
|
||||||
|
// Convert TRecordUpdateDescriptor to ResolveInfo
|
||||||
|
function RecordUpdateDescriptorToResolveInfo(anUpdate: TRecordUpdateDescriptor): TResolveInfo; virtual;
|
||||||
function DoResolveRecordUpdate(anUpdate{%H-}: TRecordUpdateDescriptor): Boolean; virtual;
|
function DoResolveRecordUpdate(anUpdate{%H-}: TRecordUpdateDescriptor): Boolean; virtual;
|
||||||
Function GetRecordUpdates(AList: TRecordUpdateDescriptorList) : Integer; virtual;
|
Function GetRecordUpdates(AList: TRecordUpdateDescriptorList) : Integer; virtual;
|
||||||
procedure ResolveUpdateBatch(Sender: TObject; aBatch: TRecordUpdateBatch); virtual;
|
procedure ResolveUpdateBatch(Sender: TObject; aBatch: TRecordUpdateBatch); virtual;
|
||||||
@ -1324,6 +1340,7 @@ type
|
|||||||
procedure SetFields(const Values: array of JSValue);
|
procedure SetFields(const Values: array of JSValue);
|
||||||
procedure UpdateCursorPos;
|
procedure UpdateCursorPos;
|
||||||
procedure UpdateRecord;
|
procedure UpdateRecord;
|
||||||
|
Function GetPendingUpdates : TResolveInfoArray;
|
||||||
function UpdateStatus: TUpdateStatus; virtual;
|
function UpdateStatus: TUpdateStatus; virtual;
|
||||||
property BlockReadSize: Integer read FBlockReadSize write SetBlockReadSize;
|
property BlockReadSize: Integer read FBlockReadSize write SetBlockReadSize;
|
||||||
property BOF: Boolean read FBOF;
|
property BOF: Boolean read FBOF;
|
||||||
@ -1375,6 +1392,7 @@ type
|
|||||||
property OnEditError: TDataSetErrorEvent read FOnEditError write FOnEditError;
|
property OnEditError: TDataSetErrorEvent read FOnEditError write FOnEditError;
|
||||||
property OnFilterRecord: TFilterRecordEvent read FOnFilterRecord write SetOnFilterRecord;
|
property OnFilterRecord: TFilterRecordEvent read FOnFilterRecord write SetOnFilterRecord;
|
||||||
property OnNewRecord: TDataSetNotifyEvent read FOnNewRecord write FOnNewRecord;
|
property OnNewRecord: TDataSetNotifyEvent read FOnNewRecord write FOnNewRecord;
|
||||||
|
Property OnRecordResolved : TOnRecordResolveEvent Read FOnRecordResolved Write FOnRecordResolveEvent;
|
||||||
property OnPostError: TDataSetErrorEvent read FOnPostError write FOnPostError;
|
property OnPostError: TDataSetErrorEvent read FOnPostError write FOnPostError;
|
||||||
property OnLoadFail : TDatasetLoadFailEvent Read FOnLoadFail Write FOnLoadFail;
|
property OnLoadFail : TDatasetLoadFailEvent Read FOnLoadFail Write FOnLoadFail;
|
||||||
end;
|
end;
|
||||||
@ -2853,6 +2871,27 @@ begin
|
|||||||
On E : Exception do
|
On E : Exception do
|
||||||
anUpdate.ResolveFailed(E.Classname+': '+E.Message);
|
anUpdate.ResolveFailed(E.Classname+': '+E.Message);
|
||||||
end;
|
end;
|
||||||
|
DoOnRecordResolved(anUpdate);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Function TDataSet.RecordUpdateDescriptorToResolveInfo(anUpdate: TRecordUpdateDescriptor) : TResolveInfo;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result.BookMark:=anUpdate.Bookmark;
|
||||||
|
Result.Data:=anUpdate.Data;
|
||||||
|
Result.Status:=anUpdate.Status;
|
||||||
|
Result.Error:=anUpdate.ResolveError;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataSet.DoOnRecordResolved(anUpdate: TRecordUpdateDescriptor) ;
|
||||||
|
|
||||||
|
Var
|
||||||
|
Info : TResolveInfo;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if Not Assigned(OnRecordResolved) then exit;
|
||||||
|
Info:=RecordUpdateDescriptorToResolveInfo(anUpdate);
|
||||||
|
OnRecordResolved(Self,Info);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataSet.ResolveUpdateBatch(Sender: TObject; aBatch : TRecordUpdateBatch);
|
procedure TDataSet.ResolveUpdateBatch(Sender: TObject; aBatch : TRecordUpdateBatch);
|
||||||
@ -4718,6 +4757,23 @@ begin
|
|||||||
DataEvent(deUpdateRecord, 0);
|
DataEvent(deUpdateRecord, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TDataSet.GetPendingUpdates: TResolveInfoArray;
|
||||||
|
|
||||||
|
Var
|
||||||
|
L : TRecordUpdateDescriptorList;
|
||||||
|
I : integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
L:=TRecordUpdateDescriptorList.Create;
|
||||||
|
try
|
||||||
|
SetLength(Result,GetRecordUpdates(L));
|
||||||
|
For I:=0 to L.Count-1 do
|
||||||
|
Result[i]:=RecordUpdateDescriptorToResolveInfo(L[i]);
|
||||||
|
finally
|
||||||
|
L.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TDataSet.UpdateStatus: TUpdateStatus;
|
function TDataSet.UpdateStatus: TUpdateStatus;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user