/// <summary> /// Setups the specified folder: output folder /// </summary> /// <param name="folder">The folder.</param> public override void setup() { // outputpath = "help" + Path.DirectorySeparatorChar; // scriptFlags = docScriptFlags.allowFailedInstructions | docScriptFlags.enableLocalCollection | docScriptFlags.ignoreArgumentValueNull | docScriptFlags.ignoreCompilationFails | docScriptFlags.useDataDictionaryForLocalData; theme = stylePresets.themeSemantics; AddThemeSupportFiles("velestrap", "bootmark.min.js", "include\\", true); AddThemeSupportFiles("velestrap", "*.css", "include\\", false); AddThemeSupportFiles("velestrap", "*.js", "include\\", false); var footer_delivery = AddItem(new deliveryUnitItemFileOutput("compact\\footer.md", templateFieldSubcontent.html_footer, deliveryUnitItemLocationBase.localResource, "Page footer", "Include at end of page")); var renderDirectory = new deliveryUnitDirectoryConstructor(reportElementLevel.documentSet, reportElementLevel.document); // creates directory for documentSets and document Add(renderDirectory); var renderOutput = new deliveryUnitItemSimpleRenderOutput(new builderForMarkdown(), reportOutputFormatName.textMdFile, renderDirectory.levels); renderOutput.levelOfNewFile = reportElementLevel.page; renderOutput.levelOfNewPage = reportElementLevel.none; renderOutput.levels.AddMulti(reportElementLevel.documentSet, reportElementLevel.document, reportElementLevel.servicepage, reportElementLevel.page, reportElementLevel.block); Add(renderOutput); var renderOutputTemplate = new deliveryUnitItemContentTemplated("compact\\index.html", renderOutput, reportOutputFormatName.textHtml, renderDirectory.levels); renderOutputTemplate.filenameSufix = ""; renderOutputTemplate.levels.AddMulti(reportElementLevel.documentSet, reportElementLevel.document, reportElementLevel.servicepage, reportElementLevel.page); Add(renderOutputTemplate); //var indexdeliver = AddItem(new deliveryUnitItemFileOutput("veles_report\\index.md", "index.html", "Report home", "Introduction page of the report", renderOutputTemplate)); AddReportIncludeFiles("docs", renderOutputTemplate, "*.md", false); /* * var logOutA = AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.reportContext, "logs\\reporting.md", renderOutputTemplate)); * * var logOutB = AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.systemMainLog, "logs\\system.md", renderOutputTemplate)); * * var logOutC = AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.aceCommonServices, "logs\\execution.md", renderOutputTemplate)); * * var logOutD = AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.initialLog, "logs\\init.md", renderOutputTemplate)); */ /* * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.devNotes, "logs\\devnotes.md", renderOutputTemplate)); * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.aceCommonServices, "logs\\ace_common_services.md", renderOutputTemplate)); * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.aceSubsystem, "logs\\ace_subsystem.md", renderOutputTemplate)); * * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.analyticEngine, "logs\\analytic_engine.md", renderOutputTemplate)); * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.languageEngine, "logs\\language_engine.md", renderOutputTemplate)); * AddItem(new deliveryUnitItemLogOutput(imbSCI.Cores.enums.logOutputSpecial.semanticEngine, "logs\\semantic_engine.md", renderOutputTemplate)); * */ }
/// <summary> /// Setups this instance. /// </summary> public override void setup() { scriptFlags = docScriptFlags.allowFailedInstructions | docScriptFlags.disableGlobalCollection | docScriptFlags.enableLocalCollection | docScriptFlags.ignoreArgumentValueNull | docScriptFlags.ignoreCompilationFails; theme = stylePresets.themeSemantics; //String cssPath = "".t(templateFieldDeliveryUnit.del_themepath).add("simple\\simple.css", "\\"); //deliveryUnitItemSupportFile standardCss = new deliveryUnitItemSupportFile(cssPath, "include\\"); // copies file and later includes the file //this.Add(standardCss); //this.Add(new deliveryUnitItemSupportFile("".t(templateFieldDeliveryUnit.del_themepath).add("simple\\bootstrap.css", "\\")); AddThemeSupportFile("simple\\simple.css"); AddThemeSupportFile("simple\\bootstrap.css"); //this.AddThemeSupportFile("strap\\strapdown.css"); //this.AddThemeSupportFile("strap\\strapdown.js"); //this.AddThemeSupportFile("strap\\strapdown-topbar.min.js"); AddThemeSupportFiles("strapzeta", "*.css"); AddThemeSupportFile("strapzeta\\bootstrap.min.js"); AddThemeSupportFile("strapzeta\\strapdown.js").linkType = appendLinkType.scriptPostLink; deliveryUnitItemPaletteCSS palletteCss = new deliveryUnitItemPaletteCSS("standard\\standard.css", "include\\"); // templated palette css Add(palletteCss); //this.AddStandardHtmlItems(); this.AddJSPluginSupport(jsPluginEnum.D3); // copies js file this.AddJSPluginSupport(jsPluginEnum.JQuery); // copies jquery var renderDirectory = new deliveryUnitDirectoryConstructor(reportElementLevel.documentSet, reportElementLevel.document); // creates directory for documentSets and document Add(renderDirectory); var renderOutput = new deliveryUnitItemSimpleRenderOutput(new builderForMarkdown(), reportOutputFormatName.textMdFile, renderDirectory.levels); renderOutput.levelOfNewFile = reportElementLevel.page; renderOutput.levelOfNewPage = reportElementLevel.none; renderOutput.levels.AddMultiple(reportElementLevel.documentSet, reportElementLevel.document, reportElementLevel.servicepage, reportElementLevel.page, reportElementLevel.block); Add(renderOutput); var renderOutputTemplate = new deliveryUnitItemContentTemplated("simple\\simple.html", renderOutput, reportOutputFormatName.htmlViaMD, renderDirectory.levels); renderOutputTemplate.filenameSufix = ""; renderOutputTemplate.levels.AddMultiple(reportElementLevel.servicepage, reportElementLevel.page, reportElementLevel.block); Add(renderOutputTemplate); // renderOutput.attachIncludeItem(this.items); //var renderTableOutput = new deliveryUnitItemSimpleRenderOutput(new builderForTableDocument(), reportOutputFormatName.sheetExcel); //renderTableOutput.levels.Add(reportElementLevel.document, reportElementLevel.page, reportElementLevel.block); //this.Add(renderTableOutput); // this.Add(); }
/// <summary> /// Executes the and save. /// </summary> /// <param name="report">The report.</param> /// <param name="runstamp">The runstamp.</param> /// <param name="__data">The data.</param> protected void execute(metaDocumentRootSet report, string runstamp, PropertyCollection __data = null) { dataDictionary = new PropertyCollectionDictionary(); if (!unit.scriptFlags.HasFlag(docScriptFlags.disableGlobalCollection)) { logStartPhase("Collect data", "#2 phase of data collecting"); dataDictionary = report.collect(dataDictionary); logEndPhase(); } else { log("Global data collection disabled by unit.scriptFlags"); } logStartPhase("Script composing", "#3 phase of data composing"); script = new docScript("Script - unit[" + unit.name + "] - runstamp: " + runstamp); script.flags = unit.scriptFlags; script = report.compose(script); if (doBuildDeliveryMeta) { string scMeta = script.ToString(docScriptInstructionTextFormatEnum.meta); scMeta.saveStringToFile(directoryRoot.FullName.add("deliveryMeta.md", "\\"), getWritableFileMode.autoRenameExistingOnOtherDate, Encoding.UTF8); string csMeta = script.ToString(docScriptInstructionTextFormatEnum.cs_compose); csMeta.saveStringToFile(directoryRoot.FullName.add("deliveryMeta.cs", "\\"), getWritableFileMode.autoRenameExistingOnOtherDate, Encoding.UTF8); } logEndPhase(); setup(unit.theme, data, renders.getTextRenders()); logStartPhase("Script compilation", "#4 applying data to content"); compiled = compile(script, dataDictionary); repo = new reportOutputRepository(directoryRoot, script.name); logStartPhase("Execute docScriptInstructions ", "5# executing scripttotal instructions (" + script.Count() + ")"); index = 0; int tIndex = 1000; int mediumTimerLimit = 10; int mediumTimerIndex = 0; foreach (docScriptInstructionCompiled instruction in compiled) { try { appendTypeKind kind = instruction.type.getAppendTypeKind(); if (doVerboseLog) { log(index.ToString("D4") + " " + instruction.ToString(docScriptInstructionTextFormatEnum.meta)); } //afinal = appendType.none; appendType final = executeOnce(instruction, kind); if (final != appendType.none) { final = runStyleInstruction(instruction); } if (final == appendType.none) { } else { var scopeLevel = scope.elementLevel; foreach (var it in unit.outputByLevel[scopeLevel]) { deliveryUnitItemSimpleRenderOutput output = it as deliveryUnitItemSimpleRenderOutput; if (output != null) { output.executeScriptInstruction(this, instruction); final = appendType.none; // builder = output.builder; } } } if (executionStopFlagCheck()) { log("Execution is stopped by executionStopFlag!"); break; } index++; } catch (Exception ex) { string msg = Environment.NewLine + "Report script execution [" + index + "/" + compiled.Count() + "] error. Instruction: [" + instruction.ToString(docScriptInstructionTextFormatEnum.cs_compose) + "]"; msg = msg.addLine("-- scoped meta object: path:[" + scope.path + "] -- [" + scope.name + "] -- [" + scope.GetType().Name + "]"); msg = msg.addLine("-- directory: [" + directoryScope.FullName + "]"); msg = msg.addLine("-- exception: [" + ex.GetType().Name + "] => [" + ex.Message + "]"); var axe = new aceReportException(msg + "Report instruction [" + instruction.type.ToString() + "] exception"); //if (axe.callInfo != null) //{ // msg = msg.addLine("-- source of ex: [" + axe.callInfo.sourceCodeLine + "]"); // msg = msg.addLine("-- source file: [" + axe.callInfo.Filepath + "]"); // msg = msg.addLine("-- source line: [" + axe.callInfo.line + "]"); // msg = msg.addLine("-- source class: [" + axe.callInfo.className + "]"); //} log(msg + Environment.NewLine); string path = "errorReport_" + index.ToString() + ".txt"; path = directoryScope.FullName.add(path, "\\"); msg.saveStringToFile(path, getWritableFileMode.autoRenameExistingOnOtherDate, Encoding.UTF8); if (errorPolicy.doThrow()) { throw axe; } executionError("Internal exception during an instruction execution", instruction, ex); } #region ---------------------------------- if (compiled.Count() > 1000) { if (tIndex > 0) { tIndex--; } else { mediumTimerIndex++; double ratio = ((double)index) / ((double)compiled.Count()); aceLog.log("Report generation at [" + ratio.ToString("P") + "] done"); tIndex = 1000; } } if (mediumTimerIndex > mediumTimerLimit) { var memBefore = GC.GetTotalMemory(false); GC.Collect(); var memBefore2 = memBefore - GC.GetTotalMemory(false); aceLog.log("-- garbage collector invoked - memory released: " + memBefore2.getMByteCountFormated()); // aceLog.saveAllLogs(true); mediumTimerIndex = 0; } #endregion ---------------------------------- } GC.Collect(); GC.WaitForFullGCComplete(); logEndPhase(); AppendPairs(data, false, " -> "); log("Completed"); foreach (IDeliveryUnitItem item in unit.items) { item.reportFinishedOperation(this); } // aceLog.consoleControl.removeFromOutput(this); }
/// <summary> /// Executes the prepare procedure /// </summary> public void executePrepare() { //includeList = new metaLinkCollection(); //renders = new deliveryUnitRenderCollection(); itemByLevel = new deliveryUnitItemByLevels(); outputByLevel = new deliveryUnitItemByLevels(); foreach (deliveryUnitItem item in items) { if (item.levels.Any()) { foreach (var lev in item.levels) { itemByLevel[lev].Add(item); } } else { switch (item.location) { case deliveryUnitItemLocationBase.localResource: case deliveryUnitItemLocationBase.externalWebResource: itemByLevel[reportElementLevel.page].Add(item); break; case deliveryUnitItemLocationBase.globalDeliveryResource: itemByLevel[reportElementLevel.delivery].Add(item); break; case deliveryUnitItemLocationBase.globalDocumentResource: itemByLevel[reportElementLevel.document].Add(item); break; case deliveryUnitItemLocationBase.globalDocumentSetResource: itemByLevel[reportElementLevel.documentSet].Add(item); break; case deliveryUnitItemLocationBase.globalDeliveryContent: if (item is deliveryUnitItemFileOutput) { deliveryUnitItemFileOutput item_deliveryUnitItemFileOutput = (deliveryUnitItemFileOutput)item; if (item_deliveryUnitItemFileOutput.isDataFieldMode) { itemByLevel[reportElementLevel.delivery].Add(item); } } break; case deliveryUnitItemLocationBase.unknown: break; } } if (item is deliveryUnitItemFileOutput) { deliveryUnitItemFileOutput item_deliveryUnitItemFileOutput = (deliveryUnitItemFileOutput)item; if (item_deliveryUnitItemFileOutput.isDataFieldMode) { // itemByLevel[reportElementLevel.deliveryInstance].Add(item); } else { outputContent.Add(item_deliveryUnitItemFileOutput); } } if (item is deliveryUnitItemSimpleRenderOutput) { deliveryUnitItemSimpleRenderOutput item_deliveryUnitItemRenderOutput = (deliveryUnitItemSimpleRenderOutput)item; outputByLevel.Add(item_deliveryUnitItemRenderOutput.levels, item); } foreach (IDeliveryUnitItem it in items) { if (it is IDeliverySupportFile) { IDeliverySupportFile it_IDeliverySupportFile = (IDeliverySupportFile)it; if (!includeItems[it_IDeliverySupportFile.linkType].Contains(it_IDeliverySupportFile)) { includeItems[it_IDeliverySupportFile.linkType].Add(it_IDeliverySupportFile); } } } } }