mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 07:45:54 +01:00
Removed ViewDataSets and all related methods from TMVCController. Use ViewData instead.
https://github.com/danieleteti/delphimvcframework/issues/729
This commit is contained in:
parent
b9fcc04647
commit
3dc4592837
@ -87,7 +87,7 @@ procedure TMVCLuaViewEngine.Execute(const ViewName: string;
|
||||
const OutputStream: TStream);
|
||||
var
|
||||
Lua: TLuaEngine;
|
||||
lDataSetName, lModelName: string;
|
||||
lModelName: string;
|
||||
lLuaFilter: TLuaEmbeddedTextFilter;
|
||||
lViewFileName: String;
|
||||
lFileName, lCompiledFileName: string;
|
||||
@ -158,13 +158,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if Assigned(ViewDataSets) then
|
||||
begin
|
||||
for lDataSetName in ViewDataSets.Keys do
|
||||
begin
|
||||
ExposeDataSet(Lua, ViewDataSets[lDataSetName], ViewDataSets[lDataSetName].Name);
|
||||
end;
|
||||
end;
|
||||
|
||||
Lua.DeclareGlobalString('__ROOT__', ExtractFilePath(ParamStr(0)));
|
||||
Lua.DeclareGlobalString('__log_file', LOG_FILE_NAME);
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{C829684B-145E-49F2-8C37-2562C6C5904E}</ProjectGuid>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<ProjectVersion>20.1</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>ServerSideViewsLua.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
@ -216,6 +216,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashImageDefV21">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStyles">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -236,6 +246,66 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStylesV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconBackground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconForeground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconMonochrome">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconV33">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_Colors">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -246,6 +316,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_ColorsDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_DefaultAppIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
@ -416,6 +496,56 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedNotificationIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplash">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31Dark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{C829684B-145E-49F2-8C37-2562C6C5904E}</ProjectGuid>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<ProjectVersion>20.1</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>ServerSideViewsMustache.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
@ -218,6 +218,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashImageDefV21">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStyles">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -238,6 +248,66 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStylesV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconBackground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconForeground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconMonochrome">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconV33">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_Colors">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -248,6 +318,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_ColorsDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_DefaultAppIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
@ -418,6 +498,56 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedNotificationIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplash">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31Dark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
|
@ -9,4 +9,15 @@ object WebModule1: TWebModule1
|
||||
end>
|
||||
Height = 230
|
||||
Width = 415
|
||||
object FDMemTable1: TFDMemTable
|
||||
FetchOptions.AssignedValues = [evMode]
|
||||
FetchOptions.Mode = fmAll
|
||||
ResourceOptions.AssignedValues = [rvSilentMode]
|
||||
ResourceOptions.SilentMode = True
|
||||
UpdateOptions.AssignedValues = [uvCheckRequired, uvAutoCommitUpdates]
|
||||
UpdateOptions.CheckRequired = False
|
||||
UpdateOptions.AutoCommitUpdates = True
|
||||
Left = 192
|
||||
Top = 96
|
||||
end
|
||||
end
|
||||
|
@ -2,10 +2,13 @@ unit WebModuleU;
|
||||
|
||||
interface
|
||||
|
||||
uses System.SysUtils, System.Classes, Web.HTTPApp, MVCFramework;
|
||||
uses System.SysUtils, System.Classes, Web.HTTPApp, MVCFramework, FireDAC.Stan.Intf, FireDAC.Stan.Option,
|
||||
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB,
|
||||
FireDAC.Comp.DataSet, FireDAC.Comp.Client;
|
||||
|
||||
type
|
||||
TWebModule1 = class(TWebModule)
|
||||
FDMemTable1: TFDMemTable;
|
||||
procedure WebModuleCreate(Sender: TObject);
|
||||
procedure WebModuleDestroy(Sender: TObject);
|
||||
private
|
||||
|
@ -60,13 +60,20 @@ type
|
||||
[MVCHTTPMethods([httpGET])]
|
||||
[MVCProduces(TMVCMediaType.TEXT_HTML)]
|
||||
function MustacheTemplateShowCase: String;
|
||||
|
||||
[MVCPath('/loadviewtest')]
|
||||
[MVCHTTPMethods([httpGET])]
|
||||
[MVCProduces(TMVCMediaType.TEXT_PLAIN)]
|
||||
procedure LoadViewTest;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{ TWebSiteController }
|
||||
|
||||
uses System.SysUtils, Web.HTTPApp;
|
||||
uses System.SysUtils, Web.HTTPApp, FireDAC.Stan.Intf, FireDAC.Stan.Option,
|
||||
FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.DB,
|
||||
FireDAC.Comp.DataSet, FireDAC.Comp.Client;
|
||||
|
||||
procedure TWebSiteController.DeletePerson;
|
||||
var
|
||||
@ -146,6 +153,30 @@ begin
|
||||
Redirect('/people');
|
||||
end;
|
||||
|
||||
procedure TWebSiteController.LoadViewTest;
|
||||
var
|
||||
lDS: TFDMemTable;
|
||||
begin
|
||||
lDS := TFDMemTable.Create(nil);
|
||||
try
|
||||
lDS.FieldDefs.Add('id', ftInteger);
|
||||
lDS.FieldDefs.Add('first_name', ftString, 40);
|
||||
lDS.FieldDefs.Add('last_name', ftString, 40);
|
||||
lDS.FieldDefs.Add('age', ftInteger);
|
||||
lDS.CreateDataSet;
|
||||
lDS.AppendRecord([1,'Daniele','Teti',44]);
|
||||
lDS.AppendRecord([2,'Bruce','Banner',54]);
|
||||
lDS.AppendRecord([3,'Peter','Parker',34]);
|
||||
lDS.First;
|
||||
|
||||
ViewData['people'] := lDS;
|
||||
LoadView(['people_list_test','people_list_test']);
|
||||
RenderResponseStream;
|
||||
finally
|
||||
lDS.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWebSiteController.MustacheTemplateShowCase: String;
|
||||
var
|
||||
LDAL: IPeopleDAL;
|
||||
@ -204,7 +235,7 @@ begin
|
||||
inherited;
|
||||
SetPagesCommonHeaders(['header']);
|
||||
SetPagesCommonFooters(['footer']);
|
||||
ContentType := 'text/html';
|
||||
if not AActionNAme.ToLower.Contains('test') then ContentType := 'text/html';
|
||||
Handled := False;
|
||||
end;
|
||||
|
||||
|
@ -0,0 +1,4 @@
|
||||
LIST
|
||||
{{#people}}
|
||||
- {{id}};"{{first_name}}";"{{last_name}}";{{age}}
|
||||
{{/people}}
|
@ -1,7 +1,7 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{FE6AE7E7-2089-4ACF-B85D-3443EE2CCFE4}</ProjectGuid>
|
||||
<ProjectVersion>19.5</ProjectVersion>
|
||||
<ProjectVersion>20.1</ProjectVersion>
|
||||
<FrameworkType>VCL</FrameworkType>
|
||||
<MainSource>ServerSideViewsSempare.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
@ -272,6 +272,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashImageDefV21">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStyles">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -292,6 +302,66 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="AndroidSplashStylesV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v26</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconBackground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconForeground">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconMonochrome">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_AdaptiveIconV33">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v33</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_Colors">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values</RemoteDir>
|
||||
@ -302,6 +372,16 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_ColorsDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\values-night-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_DefaultAppIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
@ -472,6 +552,56 @@
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedNotificationIcon">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v24</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplash">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashDark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v21</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="Android_VectorizedSplashV31Dark">
|
||||
<Platform Name="Android">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
<Platform Name="Android64">
|
||||
<RemoteDir>res\drawable-night-anydpi-v31</RemoteDir>
|
||||
<Operation>1</Operation>
|
||||
</Platform>
|
||||
</DeployClass>
|
||||
<DeployClass Name="DebugSymbols">
|
||||
<Platform Name="iOSSimulator">
|
||||
<Operation>1</Operation>
|
||||
|
@ -40,6 +40,7 @@ type
|
||||
strict private
|
||||
procedure PrepareModels;
|
||||
private
|
||||
fModelPrepared: Boolean;
|
||||
class var fPartials: TSynMustachePartials;
|
||||
class var fHelpers: TSynMustacheHelpers;
|
||||
class var fSerializerPool: IIntfObjectPool;
|
||||
@ -53,7 +54,6 @@ type
|
||||
procedure Execute(const ViewName: string; const OutputStream: TStream); override;
|
||||
constructor Create(const AEngine: TMVCEngine; const AWebContext: TWebContext;
|
||||
const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AContentType: string); override;
|
||||
class destructor Destroy;
|
||||
class constructor Create;
|
||||
@ -101,10 +101,10 @@ var
|
||||
|
||||
constructor TMVCMustacheViewEngine.Create(const AEngine: TMVCEngine;
|
||||
const AWebContext: TWebContext; const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AContentType: string);
|
||||
begin
|
||||
inherited;
|
||||
fModelPrepared := False;
|
||||
LoadPartials;
|
||||
LoadHelpers;
|
||||
end;
|
||||
@ -218,19 +218,21 @@ end;
|
||||
procedure TMVCMustacheViewEngine.PrepareModels;
|
||||
var
|
||||
DataObj: TPair<string, TValue>;
|
||||
lDSPair: TPair<string, TDataSet>;
|
||||
lSer: IMVCSerializer;
|
||||
lJSONModel: TJsonObject;
|
||||
begin
|
||||
if Assigned(FJSONModel) and (not Assigned(ViewModel)) and (not Assigned(ViewDataSets)) then
|
||||
if fModelPrepared then
|
||||
begin
|
||||
// if only jsonmodel is <> nil then we take the "fast path"
|
||||
FJSONModelAsString := FJSONModel.ToJSON(False);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
if Assigned(FJSONModel) and (not Assigned(ViewModel)) then
|
||||
begin
|
||||
// if only jsonmodel is <> nil then we take the "fast path"
|
||||
FJSONModelAsString := FJSONModel.ToJSON(False);
|
||||
end
|
||||
else
|
||||
begin
|
||||
lSer := fSerializerPool.GetFromPool(True) as IMVCSerializer;
|
||||
try
|
||||
if Assigned(FJSONModel) then
|
||||
@ -247,25 +249,16 @@ begin
|
||||
for DataObj in ViewModel do
|
||||
begin
|
||||
TMVCJsonDataObjectsSerializer(lSer).TValueToJSONObjectProperty(lJSONModel, DataObj.Key, DataObj.Value, TMVCSerializationType.stDefault, nil, nil);
|
||||
// lList := TDuckTypedList.Wrap(DataObj.Value);
|
||||
// if lList <> nil then
|
||||
// begin
|
||||
// lSer.ListToJsonArray(lList, lJSONModel.A[DataObj.Key], TMVCSerializationType.stProperties, nil);
|
||||
// end
|
||||
// else
|
||||
// begin
|
||||
// lSer.ObjectToJsonObject(DataObj.Value, lJSONModel.O[DataObj.Key], TMVCSerializationType.stProperties, nil);
|
||||
// end;
|
||||
end;
|
||||
end;
|
||||
|
||||
if Assigned(ViewDataSets) then
|
||||
begin
|
||||
for lDSPair in ViewDataSets do
|
||||
begin
|
||||
TMVCJsonDataObjectsSerializer(lSer).DataSetToJsonArray(lDSPair.Value, lJSONModel.A[lDSPair.Key], TMVCNameCase.ncAsIs, nil);
|
||||
end;
|
||||
end;
|
||||
// if Assigned(ViewDataSets) then
|
||||
// begin
|
||||
// for lDSPair in ViewDataSets do
|
||||
// begin
|
||||
// TMVCJsonDataObjectsSerializer(lSer).DataSetToJsonArray(lDSPair.Value, lJSONModel.A[lDSPair.Key], TMVCNameCase.ncAsIs, nil);
|
||||
// end;
|
||||
// end;
|
||||
FJSONModelAsString := lJSONModel.ToJSON(False);
|
||||
finally
|
||||
lJSONModel.Free;
|
||||
@ -273,6 +266,8 @@ begin
|
||||
finally
|
||||
fSerializerPool.ReleaseToPool(lSer)
|
||||
end;
|
||||
end;
|
||||
fModelPrepared := True;
|
||||
end;
|
||||
|
||||
{ dmvcframework specific helpers}
|
||||
|
@ -782,14 +782,11 @@ type
|
||||
TMVCController = class(TMVCRenderer)
|
||||
private
|
||||
FViewModel: TMVCViewDataObject;
|
||||
FViewDataSets: TMVCViewDataSet;
|
||||
fPageHeaders: TArray<String>;
|
||||
fPageFooters: TArray<String>;
|
||||
function GetSession: TMVCWebSession;
|
||||
function GetViewData(const aModelName: string): TValue;
|
||||
function GetViewDataset(const aDataSetName: string): TDataSet;
|
||||
procedure SetViewData(const aModelName: string; const Value: TValue);
|
||||
procedure SetViewDataset(const aDataSetName: string; const Value: TDataSet);
|
||||
protected const
|
||||
CLIENTID_KEY = '__clientid';
|
||||
protected
|
||||
@ -803,7 +800,6 @@ type
|
||||
function GetClientId: string;
|
||||
function GetCurrentWebModule: TWebModule;
|
||||
function GetViewModel: TMVCViewDataObject;
|
||||
function GetViewDataSets: TMVCViewDataSet;
|
||||
function GetRenderedView(const AViewNames: TArray<string>): string; overload; virtual;
|
||||
function GetRenderedView(const AViewNames: TArray<string>; const JSONModel: TJSONObject): string; overload; virtual;
|
||||
|
||||
@ -867,13 +863,8 @@ type
|
||||
property StatusCode: Integer read GetStatusCode write SetStatusCode;
|
||||
procedure PushObjectToView(const aModelName: string; const AModel: TObject);
|
||||
deprecated 'Use "ViewData"';
|
||||
procedure PushDataSetToView(const aModelName: string; const ADataSet: TDataSet);
|
||||
deprecated 'Use "ViewDataSet"';
|
||||
|
||||
property ViewData[const aModelName: string]: TValue read GetViewData write SetViewData;
|
||||
property ViewDataset[const aDataSetName: string]: TDataSet read GetViewDataset
|
||||
write SetViewDataset;
|
||||
|
||||
public
|
||||
constructor Create; virtual;
|
||||
destructor Destroy; override;
|
||||
@ -1199,7 +1190,6 @@ type
|
||||
FViewName: string;
|
||||
FWebContext: TWebContext;
|
||||
FViewModel: TMVCViewDataObject;
|
||||
FViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
FContentType: string;
|
||||
FOutput: string;
|
||||
protected
|
||||
@ -1209,13 +1199,11 @@ type
|
||||
public
|
||||
constructor Create(const AEngine: TMVCEngine; const AWebContext: TWebContext;
|
||||
const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AContentType: string); overload; virtual;
|
||||
constructor Create(
|
||||
const AEngine: TMVCEngine;
|
||||
const AWebContext: TWebContext;
|
||||
const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AJSONModel: TJSONObject;
|
||||
const AContentType: string); overload; virtual;
|
||||
destructor Destroy; override;
|
||||
@ -1225,7 +1213,6 @@ type
|
||||
property ViewName: string read FViewName;
|
||||
property WebContext: TWebContext read FWebContext;
|
||||
property ViewModel: TMVCViewDataObject read FViewModel;
|
||||
property ViewDataSets: TObjectDictionary<string, TDataSet> read FViewDataSets;
|
||||
property ContentType: string read FContentType;
|
||||
property Output: string read FOutput;
|
||||
end;
|
||||
@ -3793,7 +3780,6 @@ begin
|
||||
FContentCharset := TMVCConstants.DEFAULT_CONTENT_CHARSET;
|
||||
FResponseStream := nil;
|
||||
FViewModel := nil;
|
||||
FViewDataSets := nil;
|
||||
fPageHeaders := nil;
|
||||
fPageFooters := nil;
|
||||
end;
|
||||
@ -3802,12 +3788,8 @@ destructor TMVCController.Destroy;
|
||||
begin
|
||||
if Assigned(FResponseStream) then
|
||||
FResponseStream.Free;
|
||||
|
||||
if Assigned(FViewModel) then
|
||||
FViewModel.Free;
|
||||
|
||||
if Assigned(FViewDataSets) then
|
||||
FViewDataSets.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -3853,7 +3835,7 @@ var
|
||||
begin
|
||||
lStrStream := TStringStream.Create('', TEncoding.UTF8);
|
||||
try
|
||||
lView := FEngine.ViewEngineClass.Create(Engine, Context, FViewModel, FViewDataSets, JSONModel, ContentType);
|
||||
lView := FEngine.ViewEngineClass.Create(Engine, Context, FViewModel, JSONModel, ContentType);
|
||||
try
|
||||
for lViewName in AViewNames do
|
||||
begin
|
||||
@ -3913,19 +3895,6 @@ begin
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
function TMVCController.GetViewDataset(const aDataSetName: string): TDataSet;
|
||||
begin
|
||||
if not FViewDataSets.TryGetValue(aDataSetName, Result) then
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
function TMVCController.GetViewDataSets: TMVCViewDataSet;
|
||||
begin
|
||||
if not Assigned(FViewDataSets) then
|
||||
FViewDataSets := TMVCViewDataSet.Create;
|
||||
Result := FViewDataSets;
|
||||
end;
|
||||
|
||||
function TMVCController.GetViewModel: TMVCViewDataObject;
|
||||
begin
|
||||
if not Assigned(FViewModel) then
|
||||
@ -3999,11 +3968,6 @@ begin
|
||||
Result := GetRenderedView(AViewNames);
|
||||
end;
|
||||
|
||||
procedure TMVCController.PushDataSetToView(const aModelName: string; const ADataSet: TDataSet);
|
||||
begin
|
||||
GetViewDataSets.Add(aModelName, ADataSet);
|
||||
end;
|
||||
|
||||
procedure TMVCController.PushObjectToView(const aModelName: string; const AModel: TObject);
|
||||
begin
|
||||
GetViewModel.Add(aModelName, AModel);
|
||||
@ -4234,11 +4198,6 @@ begin
|
||||
GetViewModel.Add(aModelName, Value);
|
||||
end;
|
||||
|
||||
procedure TMVCController.SetViewDataset(const aDataSetName: string; const Value: TDataSet);
|
||||
begin
|
||||
GetViewDataSets.Add(aDataSetName, Value);
|
||||
end;
|
||||
|
||||
procedure TMVCRenderer.Render(
|
||||
const AObject: TObject;
|
||||
const AOwns: Boolean;
|
||||
@ -4412,7 +4371,7 @@ begin
|
||||
try
|
||||
lView := FEngine.ViewEngineClass.Create(
|
||||
Engine, Context,
|
||||
FViewModel, FViewDataSets,
|
||||
FViewModel,
|
||||
ContentType);
|
||||
try
|
||||
for lViewName in AViewNames do
|
||||
@ -4793,14 +4752,12 @@ constructor TMVCBaseViewEngine.Create(
|
||||
const AEngine: TMVCEngine;
|
||||
const AWebContext: TWebContext;
|
||||
const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AContentType: string);
|
||||
begin
|
||||
inherited Create;
|
||||
Engine := AEngine;
|
||||
FWebContext := AWebContext;
|
||||
FViewModel := AViewModel;
|
||||
FViewDataSets := AViewDataSets;
|
||||
FContentType := AContentType;
|
||||
FOutput := EmptyStr;
|
||||
end;
|
||||
@ -4809,11 +4766,10 @@ constructor TMVCBaseViewEngine.Create(
|
||||
const AEngine: TMVCEngine;
|
||||
const AWebContext: TWebContext;
|
||||
const AViewModel: TMVCViewDataObject;
|
||||
const AViewDataSets: TObjectDictionary<string, TDataSet>;
|
||||
const AJSONModel: TJSONObject;
|
||||
const AContentType: string);
|
||||
begin
|
||||
Create(AEngine, AWebContext, AViewModel, AViewDataSets, AContentType);
|
||||
Create(AEngine, AWebContext, AViewModel, AContentType);
|
||||
fJSONModel := AJSONModel;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user