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()); }
static async Task StartWatcher(IApplicationHost host, Boolean bAdmin) { if (_redirectLoaded) { return; } String redFilePath = host.MakeFullPath(bAdmin, String.Empty, "redirect.json"); if (System.IO.File.Exists(redFilePath)) { String json = await host.ReadTextFile(bAdmin, String.Empty, "redirect.json"); _redirect = JsonConvert.DeserializeObject <Dictionary <String, String> >(json); } if (host.IsDebugConfiguration && _redirectWatcher == null) { _redirectWatcher = new FileSystemWatcher(Path.GetDirectoryName(redFilePath), "*.json") { NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes | NotifyFilters.LastAccess }; _redirectWatcher.Changed += (sender, e) => { _redirectLoaded = false; }; _redirectWatcher.EnableRaisingEvents = true; } _redirectLoaded = true; }
public static async Task <RequestModel> CreateFromUrl(IApplicationHost host, Boolean bAdmin, RequestUrlKind kind, String normalizedUrl) { var mi = GetModelInfo(kind, normalizedUrl); String pathForLoad = await Redirect(host, bAdmin, mi.path); String jsonText = await host.ReadTextFile(bAdmin, pathForLoad, "model.json"); var rm = JsonConvert.DeserializeObject <RequestModel>(jsonText); rm.EndInit(); rm._action = mi.action; rm._dialog = mi.dialog; rm._popup = mi.popup; rm._command = mi.command; rm._report = mi.report; rm._upload = mi.upload; rm._data = mi.data; rm._modelPath = pathForLoad; rm._id = ((mi.id == "0") || (mi.id == "new")) ? null : mi.id; return(rm); }