Beispiel #1
0
        public async Task SimpleScript()
        {
            IDataModel dm = await _dbContext.LoadModelAsync(null, "a2test.ArrayModel");

            String script = dm.CreateScript(_scripter);

            /*TODO: check script */
            Assert.IsTrue(true);
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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());
        }
Beispiel #5
0
        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");
        }
Beispiel #6
0
 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());
        }