mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-17 03:19:33 +02:00
* Complete demos so list of demos can be retrieved as AJAX call
git-svn-id: trunk@37166 -
This commit is contained in:
parent
4bd77800cb
commit
d53f3e0526
@ -14,6 +14,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TColumnsDemo }
|
||||
|
||||
TColumnsDemo = class(TReportDemoApp)
|
||||
private
|
||||
FDataPage1: TFPReportUserData;
|
||||
@ -32,6 +34,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -363,6 +366,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TColumnsDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing support for multiple columns';
|
||||
end;
|
||||
|
||||
procedure TColumnsDemo.GetReportDataPage2Names(Sender: TObject; List: TStrings);
|
||||
begin
|
||||
List.Add('p2element');
|
||||
|
@ -44,6 +44,7 @@ type
|
||||
procedure InitialiseData; override;
|
||||
Public
|
||||
constructor Create(AOWner :TComponent); override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
{ TObjectListDemo }
|
||||
@ -53,6 +54,7 @@ type
|
||||
procedure InitialiseData; override;
|
||||
Public
|
||||
constructor Create(AOWner :TComponent); override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -101,6 +103,11 @@ begin
|
||||
TFPReportObjectListData(FReportData).OwnsList:=True;
|
||||
end;
|
||||
|
||||
class function TObjectListDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo to show support for object Lists as data loop';
|
||||
end;
|
||||
|
||||
|
||||
procedure TContnrDemo.CreateReportDesign;
|
||||
var
|
||||
@ -244,6 +251,11 @@ begin
|
||||
TFPReportCollectionData(FReportData).OwnsCollection:=True;
|
||||
end;
|
||||
|
||||
class function TCollectionDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing native support for collections as data loop';
|
||||
end;
|
||||
|
||||
{ TCollectionDemo }
|
||||
|
||||
procedure TCollectionDemo.InitialiseData;
|
||||
|
@ -14,6 +14,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TDatasetDemo }
|
||||
|
||||
TDatasetDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportDatasetData;
|
||||
@ -23,6 +26,7 @@ type
|
||||
procedure InitialiseData; override;
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
Class function Description : string; override;
|
||||
destructor Destroy; override;
|
||||
end;
|
||||
|
||||
@ -193,6 +197,11 @@ begin
|
||||
lReportData := TFPReportDatasetData.Create(nil);
|
||||
end;
|
||||
|
||||
class function TDatasetDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing dataset support';
|
||||
end;
|
||||
|
||||
destructor TDatasetDemo.Destroy;
|
||||
begin
|
||||
FreeAndNil(lReportData);
|
||||
|
@ -30,6 +30,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -253,6 +254,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TExpressionsDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo with expressions in Memos';
|
||||
end;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
@ -13,6 +13,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TFramesDemo }
|
||||
|
||||
TFramesDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -28,6 +30,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent) ; override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -293,6 +296,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TFramesDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing frames around elements';
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -13,6 +13,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TGroupingDemo }
|
||||
|
||||
TGroupingDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -29,6 +31,7 @@ type
|
||||
public
|
||||
constructor Create(AOWner :TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -260,5 +263,10 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TGroupingDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing grouping';
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -12,6 +12,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TImagesDemo }
|
||||
|
||||
TImagesDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -24,6 +27,7 @@ type
|
||||
public
|
||||
constructor Create(AOWner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
procedure GetReportDataNames(Sender: TObject; List: TStrings);
|
||||
end;
|
||||
|
||||
@ -234,6 +238,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TImagesDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing image support';
|
||||
end;
|
||||
|
||||
procedure TImagesDemo.GetReportDataNames(Sender: TObject; List: TStrings);
|
||||
begin
|
||||
List.Add('country');
|
||||
|
@ -14,6 +14,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TJSONDemo }
|
||||
|
||||
TJSONDemo = class(TReportDemoApp)
|
||||
private
|
||||
FReportData : TFPReportJSONData;
|
||||
@ -25,6 +27,7 @@ type
|
||||
public
|
||||
constructor Create(AOWner :TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -187,5 +190,10 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TJSONDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo of native JSON data support';
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -13,6 +13,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TMasterDetailDemo }
|
||||
|
||||
TMasterDetailDemo = class(TReportDemoApp)
|
||||
private
|
||||
FMasterData: TFPReportUserData;
|
||||
@ -41,6 +44,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -315,6 +319,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TMasterDetailDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo of Master/Detail data loop support';
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -18,6 +18,8 @@ uses
|
||||
|
||||
type
|
||||
|
||||
{ TMasterDetailDatasetDemo }
|
||||
|
||||
TMasterDetailDatasetDemo = class(TReportDemoApp)
|
||||
private
|
||||
IBConnection1: TIBConnection;
|
||||
@ -35,6 +37,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -340,6 +343,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TMasterDetailDatasetDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo for support of master-detail relations with datasets';
|
||||
end;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
@ -16,6 +16,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TShapesDemo }
|
||||
|
||||
TShapesDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -29,6 +32,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -222,6 +226,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TShapesDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing support for shapes';
|
||||
end;
|
||||
|
||||
|
||||
|
||||
end.
|
||||
|
@ -13,6 +13,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TSimpleListDemo }
|
||||
|
||||
TSimpleListDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -27,6 +30,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -185,6 +189,11 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TSimpleListDemo.Description: string;
|
||||
begin
|
||||
Result:='Simple list of countries';
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
|
@ -15,6 +15,9 @@ uses
|
||||
udapp;
|
||||
|
||||
type
|
||||
|
||||
{ TTTFDemo }
|
||||
|
||||
TTTFDemo = class(TReportDemoApp)
|
||||
private
|
||||
lReportData: TFPReportUserData;
|
||||
@ -29,6 +32,7 @@ type
|
||||
public
|
||||
constructor Create(AOwner : TComponent); override;
|
||||
destructor Destroy; override;
|
||||
Class function Description : string; override;
|
||||
end;
|
||||
|
||||
|
||||
@ -231,5 +235,10 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TTTFDemo.Description: string;
|
||||
begin
|
||||
Result:='Demo showing TrueType Font support';
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
@ -53,6 +53,7 @@ Type
|
||||
procedure InitialiseData; virtual;
|
||||
procedure CreateReportDesign; virtual;
|
||||
public
|
||||
Class Function Description : string; virtual;
|
||||
// procedure DoCreateJSON(const AFileName: String; RunTime: Boolean=False);
|
||||
Property rpt : TFPReport read Frpt Write FRpt;
|
||||
end;
|
||||
@ -113,7 +114,12 @@ Type
|
||||
Class Function FormatName(F : TRenderFormat) : String;
|
||||
end;
|
||||
|
||||
{ TReportDef }
|
||||
|
||||
TReportDef = Class
|
||||
ReportClass: TReportDemoAppClass;
|
||||
Constructor create(AClass : TReportDemoAppClass);
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
@ -138,6 +144,11 @@ begin
|
||||
PaperManager.RegisterStandardSizes;
|
||||
end;
|
||||
|
||||
class function TReportDemoApp.Description: string;
|
||||
begin
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
|
||||
class function TReportDemoApplication.GetRenderClass(F: TRenderFormat
|
||||
): TFPReportExporterClass;
|
||||
@ -359,13 +370,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
Type
|
||||
{ TReportDef }
|
||||
|
||||
TReportDef = Class
|
||||
ReportClass: TReportDemoAppClass;
|
||||
Constructor create(AClass : TReportDemoAppClass);
|
||||
end;
|
||||
|
||||
{ TReportDef }
|
||||
|
||||
|
@ -55,6 +55,13 @@ Type
|
||||
Procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); override;
|
||||
end;
|
||||
|
||||
{ TReportListModule }
|
||||
|
||||
TReportListModule = class(TCustomHTTPModule)
|
||||
Public
|
||||
Procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); override;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
@ -73,6 +80,7 @@ uses
|
||||
fppdf,
|
||||
fpreportpdfexport,
|
||||
{$ENDIF}
|
||||
fpjson,
|
||||
fpmimetypes;
|
||||
|
||||
Type
|
||||
@ -108,6 +116,45 @@ Type
|
||||
|
||||
Var Counter : Integer;
|
||||
|
||||
{ TReportListModule }
|
||||
|
||||
procedure TReportListModule.HandleRequest(ARequest: TRequest; AResponse: TResponse);
|
||||
|
||||
Var
|
||||
O,RO : TJSONObject;
|
||||
A : TJSONArray;
|
||||
L : TStrings;
|
||||
I : integer;
|
||||
R : TReportDef;
|
||||
S,D : String;
|
||||
|
||||
begin
|
||||
L:=Nil;
|
||||
A:=Nil;
|
||||
O:=TJSONObject.Create();
|
||||
try
|
||||
A:=TJSONArray.Create;
|
||||
O.Add('data',A);
|
||||
L:=TStringList.Create;
|
||||
TReportDemoApplication.GetRegisteredReports(L);
|
||||
For I:=0 to L.Count-1 do
|
||||
begin
|
||||
R:=TReportDef(L.Objects[i]);
|
||||
D:=R.ReportClass.Description;
|
||||
S:=L[i];
|
||||
if D='' then D:=S;
|
||||
A.Add(TJSONObject.Create(['name',S,'description',D]));
|
||||
end;
|
||||
AResponse.ContentType:='application/json';
|
||||
AResponse.Content:=O.AsJSON;
|
||||
AResponse.ContentLength:=Length(AResponse.Content);
|
||||
AResponse.SendContent;
|
||||
finally
|
||||
L.Free;
|
||||
O.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TViewReportModule }
|
||||
|
||||
procedure TViewReportModule.HandleRequest(ARequest: TRequest;
|
||||
@ -420,12 +467,18 @@ Var
|
||||
Fmt : TRenderFormat;
|
||||
FRunner : TReportRunner;
|
||||
RC : TFPReportExporterClass;
|
||||
Flds : TStrings;
|
||||
|
||||
begin
|
||||
D:=ARequest.ContentFields.Values['demo'];
|
||||
if SameText(ARequest.Method,'GET') then
|
||||
flds:=ARequest.QueryFields
|
||||
else
|
||||
flds:=ARequest.ContentFields;
|
||||
flds.SaveToFile('/tmp/vars.txt');
|
||||
D:=Flds.Values['demo'];
|
||||
if (D='') or (TReportDemoApplication.GetReportClass(D)=Nil) then
|
||||
Raise Exception.CreateFmt('Invalid or empty demo name : "%s"',[D]);
|
||||
F:=ARequest.ContentFields.Values['format'];
|
||||
F:=flds.Values['format'];
|
||||
Fmt:=High(TRenderFormat);
|
||||
While (fmt>rfDefault) and (CompareText(TReportDemoApplication.FormatName(fmt),F)<>0) do
|
||||
fmt:=Pred(fmt);
|
||||
@ -442,7 +495,7 @@ begin
|
||||
FN:=D+IntToStr(Counter);
|
||||
FN:=FN+PathDelim+FN+RC.DefaultExtension;
|
||||
FRunner.BaseOutputFileName:=GetTempDir+FN;
|
||||
Conf:= TReportConfigurator.Create(ARequest.ContentFields);
|
||||
Conf:= TReportConfigurator.Create(flds);
|
||||
Try
|
||||
FRunner.OnInitExporter:=@Conf.ConfigReport;
|
||||
FRunner.Execute;
|
||||
@ -698,10 +751,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
TPageReportModule.RegisterModule('Page',True);
|
||||
TGenerateReportModule.RegisterModule('Generate',True);
|
||||
TViewReportModule.RegisterModule('View',True);
|
||||
TReportListModule.RegisterModule('ReportList',True);
|
||||
HTTPRouter.RegisterRoute('/*',@ShowPage,true);
|
||||
end.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user