Browse Source

* Complete demos so list of demos can be retrieved as AJAX call

git-svn-id: trunk@37166 -
michael 8 years ago
parent
commit
d53f3e0526

+ 8 - 0
packages/fcl-report/demos/rptcolumns.pp

@@ -14,6 +14,8 @@ uses
 
 
 type
 type
 
 
+  { TColumnsDemo }
+
   TColumnsDemo = class(TReportDemoApp)
   TColumnsDemo = class(TReportDemoApp)
   private
   private
     FDataPage1: TFPReportUserData;
     FDataPage1: TFPReportUserData;
@@ -32,6 +34,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -363,6 +366,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TColumnsDemo.Description: string;
+begin
+  Result:='Demo showing support for multiple columns';
+end;
+
 procedure TColumnsDemo.GetReportDataPage2Names(Sender: TObject; List: TStrings);
 procedure TColumnsDemo.GetReportDataPage2Names(Sender: TObject; List: TStrings);
 begin
 begin
   List.Add('p2element');
   List.Add('p2element');

+ 12 - 0
packages/fcl-report/demos/rptcontnr.pp

@@ -44,6 +44,7 @@ type
     procedure   InitialiseData; override;
     procedure   InitialiseData; override;
   Public
   Public
     constructor Create(AOWner :TComponent); override;
     constructor Create(AOWner :TComponent); override;
+    Class function Description : string; override;
   end;
   end;
 
 
   { TObjectListDemo }
   { TObjectListDemo }
@@ -53,6 +54,7 @@ type
     procedure   InitialiseData; override;
     procedure   InitialiseData; override;
   Public
   Public
     constructor Create(AOWner :TComponent); override;
     constructor Create(AOWner :TComponent); override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -101,6 +103,11 @@ begin
   TFPReportObjectListData(FReportData).OwnsList:=True;
   TFPReportObjectListData(FReportData).OwnsList:=True;
 end;
 end;
 
 
+class function TObjectListDemo.Description: string;
+begin
+  Result:='Demo to show support for object Lists as data loop';
+end;
+
 
 
 procedure TContnrDemo.CreateReportDesign;
 procedure TContnrDemo.CreateReportDesign;
 var
 var
@@ -244,6 +251,11 @@ begin
   TFPReportCollectionData(FReportData).OwnsCollection:=True;
   TFPReportCollectionData(FReportData).OwnsCollection:=True;
 end;
 end;
 
 
+class function TCollectionDemo.Description: string;
+begin
+  Result:='Demo showing native support for collections as data loop';
+end;
+
 { TCollectionDemo }
 { TCollectionDemo }
 
 
 procedure TCollectionDemo.InitialiseData;
 procedure TCollectionDemo.InitialiseData;

+ 9 - 0
packages/fcl-report/demos/rptdataset.pp

@@ -14,6 +14,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TDatasetDemo }
+
   TDatasetDemo = class(TReportDemoApp)
   TDatasetDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportDatasetData;
     lReportData: TFPReportDatasetData;
@@ -23,6 +26,7 @@ type
     procedure   InitialiseData; override;
     procedure   InitialiseData; override;
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
+    Class function Description : string; override;
     destructor  Destroy; override;
     destructor  Destroy; override;
   end;
   end;
 
 
@@ -193,6 +197,11 @@ begin
   lReportData := TFPReportDatasetData.Create(nil);
   lReportData := TFPReportDatasetData.Create(nil);
 end;
 end;
 
 
+class function TDatasetDemo.Description: string;
+begin
+  Result:='Demo showing dataset support';
+end;
+
 destructor TDatasetDemo.Destroy;
 destructor TDatasetDemo.Destroy;
 begin
 begin
   FreeAndNil(lReportData);
   FreeAndNil(lReportData);

+ 6 - 0
packages/fcl-report/demos/rptexpressions.pp

@@ -30,6 +30,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -253,6 +254,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TExpressionsDemo.Description: string;
+begin
+  Result:='Demo with expressions in Memos';
+end;
+
 
 
 
 
 end.
 end.

+ 8 - 0
packages/fcl-report/demos/rptframes.pp

@@ -13,6 +13,8 @@ uses
 
 
 type
 type
 
 
+  { TFramesDemo }
+
   TFramesDemo = class(TReportDemoApp)
   TFramesDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -28,6 +30,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent) ; override;
     constructor Create(AOwner : TComponent) ; override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -293,6 +296,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TFramesDemo.Description: string;
+begin
+  Result:='Demo showing frames around elements';
+end;
+
 
 
 end.
 end.
 
 

+ 8 - 0
packages/fcl-report/demos/rptgrouping.pp

@@ -13,6 +13,8 @@ uses
 
 
 type
 type
 
 
+  { TGroupingDemo }
+
   TGroupingDemo = class(TReportDemoApp)
   TGroupingDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -29,6 +31,7 @@ type
   public
   public
     constructor Create(AOWner :TComponent); override;
     constructor Create(AOWner :TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -260,5 +263,10 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TGroupingDemo.Description: string;
+begin
+  Result:='Demo showing grouping';
+end;
+
 end.
 end.
 
 

+ 9 - 0
packages/fcl-report/demos/rptimages.pp

@@ -12,6 +12,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TImagesDemo }
+
   TImagesDemo = class(TReportDemoApp)
   TImagesDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -24,6 +27,7 @@ type
   public
   public
     constructor Create(AOWner : TComponent); override;
     constructor Create(AOWner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
     procedure GetReportDataNames(Sender: TObject; List: TStrings);
     procedure GetReportDataNames(Sender: TObject; List: TStrings);
   end;
   end;
 
 
@@ -234,6 +238,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TImagesDemo.Description: string;
+begin
+  Result:='Demo showing image support';
+end;
+
 procedure TImagesDemo.GetReportDataNames(Sender: TObject; List: TStrings);
 procedure TImagesDemo.GetReportDataNames(Sender: TObject; List: TStrings);
 begin
 begin
   List.Add('country');
   List.Add('country');

+ 8 - 0
packages/fcl-report/demos/rptjson.pp

@@ -14,6 +14,8 @@ uses
 
 
 type
 type
 
 
+  { TJSONDemo }
+
   TJSONDemo = class(TReportDemoApp)
   TJSONDemo = class(TReportDemoApp)
   private
   private
     FReportData : TFPReportJSONData;
     FReportData : TFPReportJSONData;
@@ -25,6 +27,7 @@ type
   public
   public
     constructor Create(AOWner :TComponent); override;
     constructor Create(AOWner :TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -187,5 +190,10 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TJSONDemo.Description: string;
+begin
+  Result:='Demo of native JSON data support';
+end;
+
 end.
 end.
 
 

+ 9 - 0
packages/fcl-report/demos/rptmasterdetail.pp

@@ -13,6 +13,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TMasterDetailDemo }
+
   TMasterDetailDemo = class(TReportDemoApp)
   TMasterDetailDemo = class(TReportDemoApp)
   private
   private
     FMasterData: TFPReportUserData;
     FMasterData: TFPReportUserData;
@@ -41,6 +44,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -315,6 +319,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TMasterDetailDemo.Description: string;
+begin
+  Result:='Demo of Master/Detail data loop support';
+end;
+
 
 
 end.
 end.
 
 

+ 8 - 0
packages/fcl-report/demos/rptmasterdetaildataset.pp

@@ -18,6 +18,8 @@ uses
 
 
 type
 type
 
 
+  { TMasterDetailDatasetDemo }
+
   TMasterDetailDatasetDemo = class(TReportDemoApp)
   TMasterDetailDatasetDemo = class(TReportDemoApp)
   private
   private
     IBConnection1: TIBConnection;
     IBConnection1: TIBConnection;
@@ -35,6 +37,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -340,6 +343,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TMasterDetailDatasetDemo.Description: string;
+begin
+  Result:='Demo for support of master-detail relations with datasets';
+end;
+
 
 
 
 
 end.
 end.

+ 9 - 0
packages/fcl-report/demos/rptshapes.pp

@@ -16,6 +16,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TShapesDemo }
+
   TShapesDemo = class(TReportDemoApp)
   TShapesDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -29,6 +32,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -222,6 +226,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TShapesDemo.Description: string;
+begin
+  Result:='Demo showing support for shapes';
+end;
+
 
 
 
 
 end.
 end.

+ 9 - 0
packages/fcl-report/demos/rptsimplelist.pp

@@ -13,6 +13,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TSimpleListDemo }
+
   TSimpleListDemo = class(TReportDemoApp)
   TSimpleListDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -27,6 +30,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -185,6 +189,11 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TSimpleListDemo.Description: string;
+begin
+  Result:='Simple list of countries';
+end;
+
 
 
 end.
 end.
 
 

+ 9 - 0
packages/fcl-report/demos/rptttf.pp

@@ -15,6 +15,9 @@ uses
   udapp;
   udapp;
 
 
 type
 type
+
+  { TTTFDemo }
+
   TTTFDemo = class(TReportDemoApp)
   TTTFDemo = class(TReportDemoApp)
   private
   private
     lReportData: TFPReportUserData;
     lReportData: TFPReportUserData;
@@ -29,6 +32,7 @@ type
   public
   public
     constructor Create(AOwner : TComponent); override;
     constructor Create(AOwner : TComponent); override;
     destructor  Destroy; override;
     destructor  Destroy; override;
+    Class function Description : string; override;
   end;
   end;
 
 
 
 
@@ -231,5 +235,10 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
+class function TTTFDemo.Description: string;
+begin
+  Result:='Demo showing TrueType Font support';
+end;
+
 end.
 end.
 
 

+ 11 - 6
packages/fcl-report/demos/udapp.pp

@@ -53,6 +53,7 @@ Type
     procedure InitialiseData; virtual;
     procedure InitialiseData; virtual;
     procedure CreateReportDesign; virtual;
     procedure CreateReportDesign; virtual;
   public
   public
+    Class Function Description : string; virtual;
 //    procedure DoCreateJSON(const AFileName: String; RunTime: Boolean=False);
 //    procedure DoCreateJSON(const AFileName: String; RunTime: Boolean=False);
     Property rpt : TFPReport read Frpt Write FRpt;
     Property rpt : TFPReport read Frpt Write FRpt;
   end;
   end;
@@ -113,7 +114,12 @@ Type
     Class Function FormatName(F : TRenderFormat) : String;
     Class Function FormatName(F : TRenderFormat) : String;
   end;
   end;
 
 
+    { TReportDef }
 
 
+  TReportDef = Class
+    ReportClass: TReportDemoAppClass;
+    Constructor create(AClass : TReportDemoAppClass);
+  end;
 
 
 implementation
 implementation
 
 
@@ -138,6 +144,11 @@ begin
     PaperManager.RegisterStandardSizes;
     PaperManager.RegisterStandardSizes;
 end;
 end;
 
 
+class function TReportDemoApp.Description: string;
+begin
+  Result:='';
+end;
+
 
 
 class function TReportDemoApplication.GetRenderClass(F: TRenderFormat
 class function TReportDemoApplication.GetRenderClass(F: TRenderFormat
   ): TFPReportExporterClass;
   ): TFPReportExporterClass;
@@ -359,13 +370,7 @@ begin
     end;
     end;
 end;
 end;
 
 
-Type
-  { TReportDef }
 
 
-  TReportDef = Class
-    ReportClass: TReportDemoAppClass;
-    Constructor create(AClass : TReportDemoAppClass);
-  end;
 
 
 { TReportDef }
 { TReportDef }
 
 

+ 58 - 3
packages/fcl-report/demos/wmreports.pp

@@ -55,6 +55,13 @@ Type
     Procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); override;
     Procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); override;
   end;
   end;
 
 
+  { TReportListModule }
+
+  TReportListModule = class(TCustomHTTPModule)
+  Public
+    Procedure HandleRequest(ARequest: TRequest; AResponse: TResponse); override;
+  end;
+
 implementation
 implementation
 
 
 
 
@@ -73,6 +80,7 @@ uses
   fppdf,
   fppdf,
   fpreportpdfexport,
   fpreportpdfexport,
   {$ENDIF}
   {$ENDIF}
+  fpjson,
   fpmimetypes;
   fpmimetypes;
 
 
 Type
 Type
@@ -108,6 +116,45 @@ Type
 
 
 Var Counter : Integer;
 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 }
 { TViewReportModule }
 
 
 procedure TViewReportModule.HandleRequest(ARequest: TRequest;
 procedure TViewReportModule.HandleRequest(ARequest: TRequest;
@@ -420,12 +467,18 @@ Var
   Fmt : TRenderFormat;
   Fmt : TRenderFormat;
   FRunner : TReportRunner;
   FRunner : TReportRunner;
   RC  : TFPReportExporterClass;
   RC  : TFPReportExporterClass;
+  Flds : TStrings;
 
 
 begin
 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
   if (D='') or (TReportDemoApplication.GetReportClass(D)=Nil) then
     Raise Exception.CreateFmt('Invalid or empty demo name : "%s"',[D]);
     Raise Exception.CreateFmt('Invalid or empty demo name : "%s"',[D]);
-  F:=ARequest.ContentFields.Values['format'];
+  F:=flds.Values['format'];
   Fmt:=High(TRenderFormat);
   Fmt:=High(TRenderFormat);
   While (fmt>rfDefault) and (CompareText(TReportDemoApplication.FormatName(fmt),F)<>0) do
   While (fmt>rfDefault) and (CompareText(TReportDemoApplication.FormatName(fmt),F)<>0) do
     fmt:=Pred(fmt);
     fmt:=Pred(fmt);
@@ -442,7 +495,7 @@ begin
   FN:=D+IntToStr(Counter);
   FN:=D+IntToStr(Counter);
   FN:=FN+PathDelim+FN+RC.DefaultExtension;
   FN:=FN+PathDelim+FN+RC.DefaultExtension;
   FRunner.BaseOutputFileName:=GetTempDir+FN;
   FRunner.BaseOutputFileName:=GetTempDir+FN;
-  Conf:= TReportConfigurator.Create(ARequest.ContentFields);
+  Conf:= TReportConfigurator.Create(flds);
   Try
   Try
     FRunner.OnInitExporter:[email protected];
     FRunner.OnInitExporter:[email protected];
     FRunner.Execute;
     FRunner.Execute;
@@ -698,10 +751,12 @@ begin
     end;
     end;
 end;
 end;
 
 
+
 initialization
 initialization
   TPageReportModule.RegisterModule('Page',True);
   TPageReportModule.RegisterModule('Page',True);
   TGenerateReportModule.RegisterModule('Generate',True);
   TGenerateReportModule.RegisterModule('Generate',True);
   TViewReportModule.RegisterModule('View',True);
   TViewReportModule.RegisterModule('View',True);
+  TReportListModule.RegisterModule('ReportList',True);
   HTTPRouter.RegisterRoute('/*',@ShowPage,true);
   HTTPRouter.RegisterRoute('/*',@ShowPage,true);
 end.
 end.