private object PrepareRenderObject(IMvcContext context) { //Q-14 common xpath/xslt support var xpath = context.Get("__xpath"); var xslt = context.Get("__xslt"); if (string.IsNullOrWhiteSpace(xpath)) { xpath = context.Get("xpath__"); } if (string.IsNullOrWhiteSpace(xslt)) { xslt = context.Get("xslt__"); } var objectToRender = context.ActionResult; if (!string.IsNullOrWhiteSpace(xpath) || !string.IsNullOrWhiteSpace(xslt)) { objectToRender = TransformResult(context, objectToRender, xpath, xslt); } if (objectToRender is XElement) { ((XElement)objectToRender).SetAttributeValue("__jsontype", "object"); } return(objectToRender); }
/// <summary> /// Renders given context /// </summary> /// <param name="context"> </param> public override void Render(IMvcContext context) { var standalone = context.Get("standalone", true); var usage = context.Get("usage", "default"); var onserver = context.Get("onserver", true); var page = GetWikiPage(context); Render(page,usage,standalone,onserver,context); }
/// <summary> /// Renders given context /// </summary> /// <param name="context"> </param> public override void Render(IMvcContext context) { var standalone = context.Get("standalone", true); var usage = context.Get("usage", "default"); var onserver = context.Get("onserver", true); var page = GetWikiPage(context); Render(page, usage, standalone, onserver, context); }
private string GetErrorChartContent(IMvcContext context, IChartConfig config) { if (context.Get("format", context.Get("__format")) == "json") { dynamic result = new UObj(); result.config = config; result.error = config.State.Message; context.ContentType = MimeHelper.JSON; return(result.ToJson()); } var id = "g" + Guid.NewGuid().ToString().Replace("-", ""); var script = @"<div class='chart_Error chart_Error_'" + config.State.Level + "'>"; if (!string.IsNullOrWhiteSpace(config.State.Title)) { script += "<h3>" + config.State.Title + "</h3>"; } else if (null != config.State.Exception) { script += "<p>Произошла ошибка " + config.State.Exception.GetType().Name + "</p>"; } if (!string.IsNullOrWhiteSpace(config.State.Message)) { script += "<p>" + config.State.Message.Replace("\r\n", "<br/>") + "</p>"; } else if (null != config.State.Exception) { script += "<p>" + config.State.Exception.Message.Replace("\r\n", "<br/>") + "</p>"; } if (null != config.State.Exception) { script += "<button onclick='$(\"#" + id + "\").toggle()'>Показать подробности ошибки</button>"; script += "<BR /><textarea rows='30' cols='120' id='" + id + "' style='display:none'>" + config.State.Exception + "</textarea>"; } script += "</div>"; if (!string.IsNullOrWhiteSpace(context.Get("standalone"))) { script = @" <html> <header> </header> <body> <script type=""text/javascript"" src=""../scripts/jquery.min.js""></script> " + script + @" </body> </html>"; } return(script); }
private WikiPage GetWikiPage(IMvcContext context) { WikiPage page = null; if (context.ActionResult is WikiPage) { page = context.ActionResult as WikiPage; } else if (context.ActionResult is WikiPage[]) { page = (context.ActionResult as WikiPage[])[0]; } else if (context.ActionResult is string) { page = new WikiPage { Text = context.ActionResult as string }; } else { var code = context.Get("code", ""); if (!string.IsNullOrWhiteSpace(code)) { page = WikiSource.Get(code).First(); } else { throw new Exception("cannot determine wiki to be rendered"); } } return(page); }
private static void SetupDictionary <T>(IMvcContext context, object obj, KeyValuePair <string, object> p) { var name = p.Key; var dict = p.Value as IDictionary <string, T>; var stringDefinition = context.Get(name); if (!string.IsNullOrWhiteSpace(stringDefinition)) //try to parse json or tag { stringDefinition = stringDefinition.Trim(); if (stringDefinition.StartsWith("/") && stringDefinition.EndsWith("/")) //is tag notation { var srcdict = TagHelper.Parse(stringDefinition); foreach (var sp in srcdict) { dict[sp.Key] = sp.Value.To <T>(); } } else if ((stringDefinition.StartsWith("{") && stringDefinition.EndsWith("}")) || (stringDefinition.StartsWith("[") && stringDefinition.EndsWith("]"))) //json marker { var uson = stringDefinition.ToUson(); if (uson.UObjMode == UObjMode.Array) { for (var i = 0; i < uson.Array.Count; i++) { dict[i.ToStr()] = uson.Array[i].ToStr().To <T>(); } } else { foreach (var up in uson.Properties) { dict[up.Key] = up.Value.ToStr().To <T>(); } } } } else { //bind with all notation var _prefix = "."; /* RESERVED FOR MAY-BE CUSTOM BIND * var bind = * obj.GetType() * .GetProperty(p.Key) * .GetCustomAttributes(typeof (BindAttribute), true) * .FirstOrDefault() as BindAttribute; */ var parameters = context.GetAll(_prefix); foreach (var valuePair in parameters) { dict[valuePair.Key] = valuePair.Value.To <T>(); } } }
private static GraphOptions ExtractOptions(IMvcContext context) { string format = context.Get(FORMATPARAM, GraphOptions.SVGFORMAT); string algorithm = context.Get(ALGORITHMPARAM, GraphOptions.DOTAGORITHM); bool tune = context.Get(TUNEPARAM, true); IEnumerable <KeyValuePair <string, string> > overrides = context.GetAll(OVERRIDEPARAMPREFIX); var options = new GraphOptions { Tune = tune, Algorithm = algorithm, Format = format, Dialect = GraphOptions.DOTDIALECT }; foreach (var o in overrides) { options.OverrideGraphAttributes[o.Key] = o.Value; } options.Context = context; return(options); }
private string GetErrorChartContent(IMvcContext context, IChartConfig config) { if (context.Get("format", context.Get("__format")) == "json") { dynamic result = new UObj(); result.config = config; result.error = config.State.Message; context.ContentType = MimeHelper.JSON; return result.ToJson(); } var id = "g"+Guid.NewGuid().ToString().Replace("-", ""); var script = @"<div class='chart_Error chart_Error_'"+config.State.Level+"'>"; if (!string.IsNullOrWhiteSpace(config.State.Title)){ script += "<h3>" + config.State.Title + "</h3>"; } else if (null != config.State.Exception) { script += "<p>Произошла ошибка " + config.State.Exception.GetType().Name + "</p>"; } if (!string.IsNullOrWhiteSpace(config.State.Message)) { script += "<p>" + config.State.Message.Replace("\r\n", "<br/>") + "</p>"; } else if (null != config.State.Exception) { script += "<p>" + config.State.Exception.Message.Replace("\r\n", "<br/>") + "</p>"; } if (null != config.State.Exception){ script += "<button onclick='$(\"#" + id + "\").toggle()'>Показать подробности ошибки</button>"; script += "<BR /><textarea rows='30' cols='120' id='" + id + "' style='display:none'>" + config.State.Exception + "</textarea>"; } script += "</div>"; if (!string.IsNullOrWhiteSpace(context.Get("standalone"))) { script = @" <html> <header> </header> <body> <script type=""text/javascript"" src=""../scripts/jquery.min.js""></script> " + script + @" </body> </html>"; } return script; }
/// <summary> /// Renders given context /// </summary> /// <param name="context"> </param> public override void Render(IMvcContext context) { base.Render(context); context.ContentType = "text/html"; var viewname = context.ViewName; if (string.IsNullOrWhiteSpace(viewname)) { viewname = "/" + context.ActionName.Replace(".", "/"); } if (string.IsNullOrWhiteSpace(context.MasterViewName) && !string.IsNullOrWhiteSpace(context.Get("layout"))) { context.MasterViewName = context.Get("layout"); } ViewEngine.Process(viewname, context.MasterViewName, context.ActionResult, context); }
private IEventData BuildMvcContext(IMvcContext ctx) { var allparam = ctx.Get("all").ToUpper(); All = allparam == "TRUE" || allparam == "1"; foreach (var rp in ctx.Parameters) { var key = rp.Key; var val = rp.Value; if (key.StartsWith("rp.")) { key = key.Substring(3); } if (val == "1") { _options.Add(key); } } return(this); }
/// <summary> /// Renders given context /// </summary> /// <param name="context"> </param> public override void Render(IMvcContext context) { context.ContentType = context.Get("ajax", false) ? "application/json" : "text/javascript"; context.Output.Write( @" if(!window.qweb)window.qweb={}; if(!window.qweb.embedStorage)window.qweb.embedStorage={}; window.qweb.embedStorage." ); context.Output.Write(context.ActionName.Replace(".", "__")); context.Output.Write("="); if (null == context.ActionResult) { context.Output.Write("null"); } else { GetMainSerializer().Serialize("result", context.ActionResult, context.Output); } context.Output.Write(";"); }
private IChartConfig PrepareChartConfig(IMvcContext context) { if (context.ActionResult is IChartConfig) { return(context.ActionResult as IChartConfig); } if (context.ActionResult is Exception) { return(ChartConfig.Create(context.ActionResult as Exception)); } var result = new ChartConfig { Id = context.Get("id", DateTime.Now.Ticks).ToString(CultureInfo.InvariantCulture), Container = context.Get("container", string.Empty), Width = context.Get("width", "400"), Height = context.Get("height", "300"), Debug = context.Get("debug", "0"), Type = context.Get("type", "Column2D"), Divlines = context.Get("divlines", -1) }; var specAttrs = context.GetAll("fc"); foreach (var attr in specAttrs) { result.Set(attr.Key, attr.Value); } if (context.ActionResult is ChartState) { result.State = context.ActionResult as ChartState; } else { result.NativeResult = context.ActionResult; } return(result); }
private WikiPage GetWikiPage(IMvcContext context) { WikiPage page = null; if (context.ActionResult is WikiPage) { page = context.ActionResult as WikiPage; } else if (context.ActionResult is WikiPage[]) { page = (context.ActionResult as WikiPage[])[0]; } else if (context.ActionResult is string) { page = new WikiPage {Text = context.ActionResult as string}; } else { var code = context.Get("code", ""); if (!string.IsNullOrWhiteSpace(code)) { page = WikiSource.Get(code).First(); } else { throw new Exception("cannot determine wiki to be rendered"); } } return page; }
public void SetConverted(object action, string val, IMvcContext context, Action<object,object> directsetter) { if(null==val) { directsetter(action, null); return; } var sys = System; if(ContextSystem) { sys = context.Get("system"); } if(sys.noContent()) { sys = System; if(sys.noContent()) { sys = "Default"; } } this.storage = this.storage ?? myapp.storage.Get(TargetType, sys, true); object key = val; if(val.ToStr().like(@"^\d+$")) { key = key.toInt(); } var realval = storage.Load(TargetType, key, sys); directsetter(action, realval); }
private object PrepareRenderObject(IMvcContext context) { //Q-14 common xpath/xslt support var xpath = context.Get("__xpath"); var xslt = context.Get("__xslt"); if (string.IsNullOrWhiteSpace(xpath)) xpath = context.Get("xpath__"); if (string.IsNullOrWhiteSpace(xslt)) xslt = context.Get("xslt__"); var objectToRender = context.ActionResult; if (!string.IsNullOrWhiteSpace(xpath) || !string.IsNullOrWhiteSpace(xslt)) { objectToRender = TransformResult(context,objectToRender, xpath, xslt); } if (objectToRender is XElement) { ((XElement)objectToRender).SetAttributeValue("__jsontype","object"); } return objectToRender; }
private string GetNormalChartContent(IMvcContext context, IChartConfig config) { var comments = GetComments(context).Aggregate(string.Empty, (_, __) => _ + __); var datascript = RenderDataScript(context, config); if (string.IsNullOrWhiteSpace(datascript)) { return(GetErrorChartContent(context, config)); } var script = ""; var error = string.Empty; if (string.IsNullOrWhiteSpace(datascript)) { error = "Нет данных для отображения"; } if (context.Get("format", context.Get("__format")) == "json") { dynamic result = new UObj(); result.config = config; result.data = datascript; result.error = error; context.ContentType = MimeHelper.JSON; return(result.ToJson().Replace("\\\'", "'")); } var id = config.Id; var container = config.Container; if (string.IsNullOrWhiteSpace(container)) { container = "fc-container-" + id; script += string.Format(@" <div class=""assoiGraphContainer""><div class=""fusinchart-container{0}"" id=""{1}"">{2}</div>{3}</div>", string.IsNullOrEmpty(error) ? " fusionchart-error" : "", container, error, comments); } if (string.IsNullOrWhiteSpace(error)) { script += string.Format(@" <div style=""display:none"" id=""fc-data-{1}"">{5}</div> <script type=""text/javascript""><!-- FusionCharts.setCurrentRenderer('javascript'); var myChart = new FusionCharts('../charts/{0}.swf', 'fc-chart-{1}', '{2}', '{3}', '{4}'); myChart.set{7}Data($('#fc-data-{1}').text()); myChart.render('{6}'); // --> </script>", config.Type, id, config.Width, config.Height, config.Debug, datascript.Replace("<", "<").Replace(""", "&quot;"), container, config.DataType); context.ContentType = "text/html"; } if (!string.IsNullOrWhiteSpace(context.Get("standalone"))) { script = @" <html> <header> <style type=""text/css""> .assoiGraphContainer { position: relative;} .assoiGraphComment { position: absolute; background: #FFFED6; border: 1px #006699 dotted; color: #000; padding: 5px 8px 5px 8px; } </style> <title>График АССОИ</title> </header> <body> <script type=""text/javascript"" src=""../scripts/jquery.min.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.PowerCharts.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.Widgets.js""></script> " + script + @" </body> </html>"; } return(script); }
private IChartConfig PrepareChartConfig(IMvcContext context) { if (context.ActionResult is IChartConfig) { return context.ActionResult as IChartConfig; } if (context.ActionResult is Exception) { return ChartConfig.Create(context.ActionResult as Exception); } var result = new ChartConfig { Id = context.Get("id", DateTime.Now.Ticks).ToString(CultureInfo.InvariantCulture), Container = context.Get("container", string.Empty), Width = context.Get("width", "400"), Height = context.Get("height", "300"), Debug = context.Get("debug", "0"), Type = context.Get("type", "Column2D"), Divlines = context.Get("divlines", -1) }; var specAttrs = context.GetAll("fc"); foreach (var attr in specAttrs) { result.Set(attr.Key, attr.Value); } if (context.ActionResult is ChartState) { result.State = context.ActionResult as ChartState; } else { result.NativeResult = context.ActionResult; } return result; }
private string GetNormalChartContent(IMvcContext context, IChartConfig config) { var comments = GetComments(context).Aggregate(string.Empty, (_, __) => _ + __); var datascript = RenderDataScript(context, config); if (string.IsNullOrWhiteSpace(datascript)) { return GetErrorChartContent(context, config); } var script = ""; var error = string.Empty; if (string.IsNullOrWhiteSpace(datascript)) { error = "Нет данных для отображения"; } if (context.Get("format", context.Get("__format")) == "json") { dynamic result = new UObj(); result.config = config; result.data = datascript; result.error = error; context.ContentType = MimeHelper.JSON; return result.ToJson().Replace("\\\'", "'"); } var id = config.Id; var container = config.Container; if (string.IsNullOrWhiteSpace(container)) { container = "fc-container-" + id; script += string.Format(@" <div class=""assoiGraphContainer""><div class=""fusinchart-container{0}"" id=""{1}"">{2}</div>{3}</div>", string.IsNullOrEmpty(error) ? " fusionchart-error" : "", container, error, comments); } if (string.IsNullOrWhiteSpace(error)) { script += string.Format(@" <div style=""display:none"" id=""fc-data-{1}"">{5}</div> <script type=""text/javascript""><!-- FusionCharts.setCurrentRenderer('javascript'); var myChart = new FusionCharts('../charts/{0}.swf', 'fc-chart-{1}', '{2}', '{3}', '{4}'); myChart.set{7}Data($('#fc-data-{1}').text()); myChart.render('{6}'); // --> </script>", config.Type, id, config.Width, config.Height, config.Debug, datascript.Replace("<", "<").Replace(""","&quot;"), container, config.DataType); context.ContentType = "text/html"; } if (!string.IsNullOrWhiteSpace(context.Get("standalone"))) { script = @" <html> <header> <style type=""text/css""> .assoiGraphContainer { position: relative;} .assoiGraphComment { position: absolute; background: #FFFED6; border: 1px #006699 dotted; color: #000; padding: 5px 8px 5px 8px; } </style> <title>График АССОИ</title> </header> <body> <script type=""text/javascript"" src=""../scripts/jquery.min.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.PowerCharts.js""></script> <script type=""text/javascript"" src=""../scripts/FusionCharts.HC.Widgets.js""></script> " + script + @" </body> </html>"; } return script; }
private void SetupValue(IAction action, IMvcContext context) { var paramname = Name; if (TargetType.IsAbstract) { return; } if (TargetType == typeof(XElement)) { var val = context.GetXml(Name); SetDirectly(action, val); } else if (TargetType.IsArray) { object val; var arr = context.GetObject(paramname); if (arr is Array) { var resultArray = ((IEnumerable)arr).OfType <object>().Select(_ => _.ToTargetType(TargetType.GetElementType())).ToArray(); var t = Array.CreateInstance(TargetType.GetElementType(), resultArray.Length); Array.Copy(resultArray, t, resultArray.Length); val = t; } else { if (_bindattribute.Split) { var str = context.Get(paramname); var a = str.SmartSplit().Select(_ => _.ToTargetType(TargetType.GetElementType())).ToArray(); var t = Array.CreateInstance(TargetType.GetElementType(), a.Length); Array.Copy(a, t, a.Length); val = t; } else { val = context.GetArray(TargetType.GetElementType(), paramname); } } SetDirectly(action, val); } else if (typeof(IDictionary <string, string>) == TargetType) { var current = (IDictionary <string, string>)GetCurrent(action); if (null == current) { current = new Dictionary <string, string>(); SetDirectly(action, current); } IDictionary <string, string> val; if (IsComplexString) { var str = context.Get(paramname); val = ComplexStringExtension.Parse(str); } else { val = context.GetDict(paramname); } foreach (var p in val) { current[p.Key] = p.Value; } } else { object val = context.Get(paramname); if (((string)val).IsEmpty()) { val = _bindattribute.Default; } var customBindConverter = _bindattribute as ICustomBindConverter; if (customBindConverter != null) { customBindConverter.SetConverted(action, (string)val, context, SetDirectly); return; } SetConverted(action, val, context); } }