public async Task SimpleScript() { IDataModel dm = await _dbContext.LoadModelAsync(null, "a2test.ArrayModel"); String script = dm.CreateScript(_scripter); /*TODO: check script */ Assert.IsTrue(true); }
public String CreateServerScript(IDataModel model, String template, String requiredModules) { var sb = new StringBuilder(SCRIPT_PARTS.DATAFUNC); sb.Replace("$(TemplateText)", template); sb.Replace("$(RequiredModules)", requiredModules); String modelScript = model.CreateScript(this); String rawData = JsonConvert.SerializeObject(model.Root, JsonHelpers.StandardSerializerSettings); sb.Replace("$(DataModelText)", rawData); sb.Replace("$(ModelScript)", modelScript); return(sb.ToString()); }
static void Main(String[] args) { var iDbContext = Starter.Create(); const String divider = "=========================="; IDataModel dm = iDbContext.LoadModel(null, "a2test.[SimpleModel.Load]"); var scripter = new VueScriptBuilder(); String script = dm.CreateScript(scripter); Console.WriteLine(script); Console.WriteLine(divider); dm = iDbContext.LoadModel(null, "a2test.[MapObjects.Load]"); script = dm.CreateScript(scripter); Console.WriteLine(script); Console.WriteLine(divider); dm = iDbContext.LoadModel(null, "a2test.[Document.RowsMethods.Load]"); script = dm.CreateScript(scripter); Console.WriteLine(script); Console.WriteLine(divider); }
async Task <String> WriteModelScriptModel(RequestView rw, IDataModel model, String rootId) { StringBuilder output = new StringBuilder(); String dataModelText = "null"; String templateText = "{}"; StringBuilder sbRequired = new StringBuilder(); if (model != null) { // write model script String fileTemplateText = null; if (rw.template != null) { fileTemplateText = await _host.ReadTextFile(Admin, rw.Path, rw.template + ".js"); AddRequiredModules(sbRequired, fileTemplateText); templateText = CreateTemplateForWrite(_localizer.Localize(null, fileTemplateText)); } dataModelText = JsonConvert.SerializeObject(model.Root, StandardSerializerSettings); } const String scriptText = @" 'use strict'; window.$currentModule = function() { $(RequiredModules) $(ModelScript) const rawData = $(DataModelText); const template = $(TemplateText); return { dataModel: modelData(template, rawData) }; };"; const String emptyModel = "function modelData() {return null;}"; var text = new StringBuilder(scriptText); text.Replace("$(DataModelText)", dataModelText); text.Replace("$(TemplateText)", _localizer.Localize(null, templateText)); text.Replace("$(RequiredModules)", sbRequired != null ? sbRequired.ToString() : String.Empty); String modelScript = model != null?model.CreateScript(_scripter) : emptyModel; text.Replace("$(ModelScript)", modelScript); output.Append(text); return(output.ToString()); }
public async Task TestEmptyArrayMeta() { IDataModel dm = await _dbContext.LoadModelAsync(null, "a2test.EmptyArray"); var md = new MetadataTester(dm); md.IsAllKeys("TRoot,TModel,TRow"); md.IsItemType("TRoot", "Model", FieldType.Object); md.IsId("TModel", "Key"); md.IsName("TModel", "ModelName"); md.IsItemRefObject("TModel", "Rows", "TRow", FieldType.Array); String script = dm.CreateScript(_scripter); var pos = script.IndexOf("cmn.defineObject(TRow, {props: {}}, true);"); Assert.AreNotEqual(-1, pos, "Invalid script for array"); }
public String CreateDataModelScript(IDataModel model) { return(model != null?model.CreateScript(this) : CreateEmptyStript()); }
async Task <String> WriteModelScript(RequestView rw, IDataModel model, String rootId) { StringBuilder output = new StringBuilder(); String dataModelText = "{}"; String templateText = "{}"; StringBuilder sbRequired = new StringBuilder(); // write model script String fileTemplateText = null; if (rw.template != null) { fileTemplateText = await _host.ReadTextFile(Admin, rw.Path, rw.template + ".js"); AddRequiredModules(sbRequired, fileTemplateText); templateText = CreateTemplateForWrite(_localizer.Localize(null, fileTemplateText)); } if (model != null) { dataModelText = JsonConvert.SerializeObject(model.Root, StandardSerializerSettings); } const String scriptHeader = @" <script type=""text/javascript""> 'use strict'; $(RequiredModules) (function() { const DataModelController = component('baseController'); const utils = require('std:utils'); const uPeriod = require('std:period'); const rawData = $(DataModelText); const template = $(TemplateText); "; const String scriptFooter = @" const vm = new DataModelController({ el:'#$(RootId)', props: { inDialog: {type: Boolean, default: $(IsDialog)}, pageTitle: {type: String} }, data: modelData(template, rawData), computed: { utils() { return utils; }, period() { return uPeriod; } }, }); vm.$data._host_ = { $viewModel: vm }; vm.__doInit__(); })(); </script> "; var header = new StringBuilder(scriptHeader); header.Replace("$(RootId)", rootId); header.Replace("$(DataModelText)", dataModelText); header.Replace("$(TemplateText)", _localizer.Localize(null, templateText)); header.Replace("$(RequiredModules)", sbRequired != null ? sbRequired.ToString() : String.Empty); output.Append(header); if (model != null) { output.Append(model.CreateScript(_scripter)); } else { output.Append(_scripter.CreateEmptyStript()); } var footer = new StringBuilder(scriptFooter); footer.Replace("$(RootId)", rootId); footer.Replace("$(IsDialog)", rw.IsDialog.ToString().ToLowerInvariant()); output.Append(footer); return(output.ToString()); }