mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-09-04 03:00:36 +02:00
* Loading
This commit is contained in:
parent
816d7bd3e1
commit
6219494a7a
@ -1121,10 +1121,13 @@ type
|
|||||||
FChangeList : TFPList;
|
FChangeList : TFPList;
|
||||||
FBatchList : TFPList;
|
FBatchList : TFPList;
|
||||||
FInApplyupdates : Boolean;
|
FInApplyupdates : Boolean;
|
||||||
|
FLoadCount : Integer;
|
||||||
|
FMinLoadID : Integer;
|
||||||
Procedure DoInsertAppend(DoAppend : Boolean);
|
Procedure DoInsertAppend(DoAppend : Boolean);
|
||||||
Procedure DoInternalOpen;
|
Procedure DoInternalOpen;
|
||||||
Function GetBuffer (Index : longint) : TDataRecord;
|
Function GetBuffer (Index : longint) : TDataRecord;
|
||||||
function GetDataProxy: TDataProxy;
|
function GetDataProxy: TDataProxy;
|
||||||
|
function GetIsLoading: Boolean;
|
||||||
Procedure RegisterDataSource(ADataSource : TDataSource);
|
Procedure RegisterDataSource(ADataSource : TDataSource);
|
||||||
procedure SetConstraints(Value: TCheckConstraints);
|
procedure SetConstraints(Value: TCheckConstraints);
|
||||||
procedure SetDataProxy(AValue: TDataProxy);
|
procedure SetDataProxy(AValue: TDataProxy);
|
||||||
@ -1138,7 +1141,7 @@ type
|
|||||||
procedure DoInsertAppendRecord(const Values: array of jsValue; DoAppend : boolean);
|
procedure DoInsertAppendRecord(const Values: array of jsValue; DoAppend : boolean);
|
||||||
// Callback for Tdataproxy.DoGetData;
|
// Callback for Tdataproxy.DoGetData;
|
||||||
function ResolveRecordUpdate(anUpdate: TRecordUpdateDescriptor): Boolean;
|
function ResolveRecordUpdate(anUpdate: TRecordUpdateDescriptor): Boolean;
|
||||||
procedure HandleRequestresponse(ARequest: TDataRequest);
|
procedure HandleRequestResponse(ARequest: TDataRequest);
|
||||||
protected
|
protected
|
||||||
// Proxy methods
|
// Proxy methods
|
||||||
// Override this to integrate package in local data
|
// Override this to integrate package in local data
|
||||||
@ -1290,6 +1293,7 @@ type
|
|||||||
procedure InternalInitFieldDefs; virtual; abstract;
|
procedure InternalInitFieldDefs; virtual; abstract;
|
||||||
function IsCursorOpen: Boolean; virtual; abstract;
|
function IsCursorOpen: Boolean; virtual; abstract;
|
||||||
property DataProxy : TDataProxy Read GetDataProxy Write SetDataProxy;
|
property DataProxy : TDataProxy Read GetDataProxy Write SetDataProxy;
|
||||||
|
Property LoadCount : Integer Read FLoadCount;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -1347,11 +1351,13 @@ type
|
|||||||
procedure Prior;
|
procedure Prior;
|
||||||
procedure Refresh;
|
procedure Refresh;
|
||||||
procedure Resync(Mode: TResyncMode); virtual;
|
procedure Resync(Mode: TResyncMode); virtual;
|
||||||
|
Procedure CancelLoading;
|
||||||
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 GetPendingUpdates : TResolveInfoArray;
|
||||||
function UpdateStatus: TUpdateStatus; virtual;
|
function UpdateStatus: TUpdateStatus; virtual;
|
||||||
|
Property Loading : Boolean Read GetIsLoading;
|
||||||
property BlockReadSize: Integer read FBlockReadSize write SetBlockReadSize;
|
property BlockReadSize: Integer read FBlockReadSize write SetBlockReadSize;
|
||||||
property BOF: Boolean read FBOF;
|
property BOF: Boolean read FBOF;
|
||||||
property Bookmark: TBookmark read GetBookmark write GotoBookmark;
|
property Bookmark: TBookmark read GetBookmark write GotoBookmark;
|
||||||
@ -3020,13 +3026,19 @@ begin
|
|||||||
Result:=FDataProxy;
|
Result:=FDataProxy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TDataSet.GetIsLoading: Boolean;
|
||||||
|
begin
|
||||||
|
// Writeln(Name,' GetIsLoading Loadcount : ',LoadCount);
|
||||||
|
Result:=(FLoadCount>0);
|
||||||
|
end;
|
||||||
|
|
||||||
function TDataSet.DataPacketReceived(ARequest: TDataRequest): Boolean;
|
function TDataSet.DataPacketReceived(ARequest: TDataRequest): Boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=False;
|
Result:=False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataSet.HandleRequestresponse(ARequest: TDataRequest);
|
procedure TDataSet.HandleRequestResponse(ARequest: TDataRequest);
|
||||||
|
|
||||||
Var
|
Var
|
||||||
DataAdded : Boolean;
|
DataAdded : Boolean;
|
||||||
@ -3034,6 +3046,14 @@ Var
|
|||||||
begin
|
begin
|
||||||
if Not Assigned(ARequest) then
|
if Not Assigned(ARequest) then
|
||||||
exit;
|
exit;
|
||||||
|
// Writeln(Name,' Check request response: ',ARequest.FRequestID,', min: ',FMinLoadID,' Loadcount:',FLoadCount);
|
||||||
|
if ARequest.FRequestID<=FMinLoadID then
|
||||||
|
begin
|
||||||
|
ARequest.Destroy;
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
Dec(FloadCount);
|
||||||
|
// Writeln(Name,' Handle request response: ',ARequest.FRequestID,', min: ',FMinLoadID,' Loadcount:',FLoadCount);
|
||||||
Case ARequest.Success of
|
Case ARequest.Success of
|
||||||
rrFail:
|
rrFail:
|
||||||
begin
|
begin
|
||||||
@ -3551,7 +3571,6 @@ begin
|
|||||||
begin
|
begin
|
||||||
DoBeforeClose;
|
DoBeforeClose;
|
||||||
SetState(dsInactive);
|
SetState(dsInactive);
|
||||||
FDataRequestID:=0;
|
|
||||||
DoneChangeList;
|
DoneChangeList;
|
||||||
CloseCursor;
|
CloseCursor;
|
||||||
DoAfterClose;
|
DoAfterClose;
|
||||||
@ -3850,7 +3869,10 @@ begin
|
|||||||
{$ifdef dsdebug}
|
{$ifdef dsdebug}
|
||||||
Writeln ('Active buffer requested. Returning record number: ',ActiveRecord);
|
Writeln ('Active buffer requested. Returning record number: ',ActiveRecord);
|
||||||
{$endif}
|
{$endif}
|
||||||
Result:=FBuffers[FActiveRecord];
|
if FactiveRecord<>-1 then
|
||||||
|
Result:=FBuffers[FActiveRecord]
|
||||||
|
else
|
||||||
|
Result:=Default(TDataRecord);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDataSet.GetFieldData(Field: TField): JSValue;
|
function TDataSet.GetFieldData(Field: TField): JSValue;
|
||||||
@ -4477,6 +4499,7 @@ Var
|
|||||||
Request : TDataRequest;
|
Request : TDataRequest;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
// Writeln(Name,' Load called. LoadCount ',LoadCount);
|
||||||
if not (loNoEvents in aOptions) then
|
if not (loNoEvents in aOptions) then
|
||||||
DoBeforeLoad;
|
DoBeforeLoad;
|
||||||
Result:=DataProxy<>Nil;
|
Result:=DataProxy<>Nil;
|
||||||
@ -4488,7 +4511,11 @@ begin
|
|||||||
Request.FBookmark:=GetBookmark;
|
Request.FBookmark:=GetBookmark;
|
||||||
Inc(FDataRequestID);
|
Inc(FDataRequestID);
|
||||||
Request.FRequestID:=FDataRequestID;
|
Request.FRequestID:=FDataRequestID;
|
||||||
DataProxy.DoGetData(Request);
|
if DataProxy.DoGetData(Request) then
|
||||||
|
Inc(FLoadCount)
|
||||||
|
else
|
||||||
|
Request.Free;
|
||||||
|
// Writeln(Name,' End of Load call. Count: ',LoadCount);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -4752,6 +4779,12 @@ begin
|
|||||||
DataEvent(deDatasetChange,0);
|
DataEvent(deDatasetChange,0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDataSet.CancelLoading;
|
||||||
|
begin
|
||||||
|
FMinLoadID:=FDataRequestID;
|
||||||
|
FloadCount:=0;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDataSet.SetFields(const Values: array of JSValue);
|
procedure TDataSet.SetFields(const Values: array of JSValue);
|
||||||
|
|
||||||
Var I : longint;
|
Var I : longint;
|
||||||
|
Loading…
Reference in New Issue
Block a user