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);
        }
Esempio n. 2
0
		/// <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);
		}
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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>();
                }
            }
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
	    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;
	    }
Esempio n. 9
0
        /// <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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        /// <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(";");
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
		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;
		}
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
	    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;
	    }
Esempio n. 16
0
        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("<", "&lt;").Replace("&quot;", "&amp;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);
        }
Esempio n. 17
0
	    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;
        }
Esempio n. 18
0
	    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("<", "&lt;").Replace("&quot;","&amp;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;
	    }
Esempio n. 19
0
        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);
            }
        }