コード例 #1
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
        /// <summary>
        /// Render "set data" part of script
        /// </summary>
        /// <param name="context"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        private string RenderDataScript(IMvcContext context, IChartConfig config)
        {
            var source = config.NativeResult;

            if (null == source)
            {
                config.State.Message = "Отсутствуют данные для отрисовки";
                config.State.Level   = ErrorLevel.Error;
                return(null);
            }
            if (source is XElement)
            {
                var xElement = source as XElement;
                config.DataType = "XML";
                config.Type     = xElement.Attr("graphtype");
                RemoveComments(xElement);
                return(source.ToString());
            }
            else if (source is string)
            {
                return(source as string);
            }

            return(string.Empty);
        }
コード例 #2
0
        /// <summary>
        /// Проверяет доступность атрибута для данного элемента в конфигурации
        /// </summary>
        /// <param name="element"></param>
        /// <param name="name"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static bool IsMatch(string element, string name, IChartConfig config)
        {
            var elementType = element.To <FusionChartElementType>();
            var chartType   = config.Type.To <FusionChartType>();

            return(IsMatch(name, chartType, elementType, config));
        }
コード例 #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="element"></param>
 /// <param name="config"></param>
 /// <exception cref="NotImplementedException"></exception>
 public FusionChartWrapper(IChartElement element, IChartConfig config) {
     _element = element;
     _config = config??_config;
     _elementName = determineName(_element);
     _eltype = _elementName.To<FusionChartElementType>();
     _charttype = config.Type.To<FusionChartType>();
 }
コード例 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="element"></param>
 /// <param name="config"></param>
 /// <exception cref="NotImplementedException"></exception>
 public FusionChartWrapper(IChartElement element, IChartConfig config)
 {
     _element     = element;
     _config      = config ?? _config;
     _elementName = determineName(_element);
     _eltype      = _elementName.To <FusionChartElementType>();
     _charttype   = config.Type.To <FusionChartType>();
 }
コード例 #5
0
 /// <summary>
 /// Возвращает адаптер для работы с графиком в API FusionChart
 /// </summary>
 /// <param name="chart"></param>
 /// <param name="config"></param>
 /// <returns></returns>
 public static FusionChartWrapper AsFusion(this IChartElement chart, IChartConfig config = null)
 {
     config = config ?? new ChartConfig()
     {
         Type = FusionChartType.Column2D.ToString()
     };
     return(new FusionChartWrapper(chart, config));
 }
コード例 #6
0
ファイル: FusionChartApi.cs プロジェクト: Qorpent/qorpent.sys
 /// <summary>
 /// Проверяет доступность атрибута для данного элемента в конфигурации
 /// </summary>
 /// <param name="name"></param>
 /// <param name="chartType"></param>
 /// <param name="elementType"></param>
 /// <param name="config"></param>
 /// <returns></returns>
 private static bool IsMatch(string name, FusionChartType chartType, FusionChartElementType elementType = FusionChartElementType.Chart, IChartConfig config = null) {
     var key = (elementType.ToString() + "_" + name).ToLower();
     if (Attributes.ContainsKey(key)) {
         return 0 != (Attributes[key].Charts & chartType);
     }
     //custom attribute
     return true;
 }
コード例 #7
0
        /// <summary>
        ///     Установка конфига для <see cref="Chart"/>
        /// </summary>
        /// <param name="chart">Исходное представление чарта</param>
        /// <param name="chartConfig">Конфиг чарта</param>
        /// <returns>Замыкание на чарт</returns>
        public static IChart SetConfig(this IChart chart, IChartConfig chartConfig)
        {
            if (chart is Chart)
            {
                (chart as Chart).Config = chartConfig;
            }

            return(chart);
        }
コード例 #8
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
        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);
        }
コード例 #9
0
 public ChartViewModel(
     IChartConfig config,
     IList <Build> builds,
     TimeSpan longestBuildtime,
     TimeSpan shortestBuildTime,
     TimeSpan averageBuildTime,
     bool showStats)
 {
     Config            = config;
     Builds            = builds;
     LongestBuildTime  = longestBuildtime;
     ShortestBuildTime = shortestBuildTime;
     AverageBuildTime  = averageBuildTime;
     ShowStats         = showStats;
 }
コード例 #10
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
        /// <summary>
        /// Renders given context
        /// </summary>
        /// <param name="context"></param>
        public override void Render(IMvcContext context)
        {
            IChartConfig config = PrepareChartConfig(context);
            var          script = string.Empty;

            if (config.State.IsNormal)
            {
                script = GetNormalChartContent(context, config);
            }
            else
            {
                script = GetErrorChartContent(context, config);
            }

            context.Output.Write(script);
        }
コード例 #11
0
ファイル: ChartConfig.cs プロジェクト: Qorpent/qorpent.sys
        /// <summary>
        ///
        /// </summary>
        /// <param name="error"></param>
        public static IChartConfig Create(Exception error)
        {
            IChartConfig result = null;

            if (error is ChartException)
            {
                result = ((ChartException)error).Config ?? new ChartConfig();
            }
            else
            {
                result = new ChartConfig();
            }
            result.State.Level     = ErrorLevel.Fatal;
            result.State.Exception = error;
            return(result);
        }
コード例 #12
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
	    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;
	    }
コード例 #13
0
ファイル: FusionChartApi.cs プロジェクト: Qorpent/qorpent.sys
 /// <summary>
 /// Проверяет доступность атрибута для данного элемента в конфигурации
 /// </summary>
 /// <param name="element"></param>
 /// <param name="name"></param>
 /// <param name="config"></param>
 /// <returns></returns>
 public static bool IsMatch(string element, string name, IChartConfig config) {
     var elementType = element.To<FusionChartElementType>();
     var chartType = config.Type.To<FusionChartType>();
     return IsMatch(name, chartType, elementType, config);
 }
コード例 #14
0
        /// <summary>
        /// Проверяет доступность атрибута для данного элемента в конфигурации
        /// </summary>
        /// <param name="name"></param>
        /// <param name="chartType"></param>
        /// <param name="elementType"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        private static bool IsMatch(string name, FusionChartType chartType, FusionChartElementType elementType = FusionChartElementType.Chart, IChartConfig config = null)
        {
            var key = (elementType.ToString() + "_" + name).ToLower();

            if (Attributes.ContainsKey(key))
            {
                return(0 != (Attributes[key].Charts & chartType));
            }
            //custom attribute
            return(true);
        }
コード例 #15
0
 /// <summary>
 /// Вычисляет укрупненную группу графика
 /// </summary>
 /// <param name="config"></param>
 /// <returns></returns>
 public static FusionChartGroupedType GetChartGroup(this IChartConfig config)
 {
     return(GetChartGroup(config.Type.To <FusionChartType>()));
 }
コード例 #16
0
 /// <summary>
 ///     Собирается XML-представление чарата по его конфигу
 /// </summary>
 /// <param name="chartConfig">Конфиг чарта</param>
 /// <returns>XML-представление чарата</returns>
 public XElement GenerateChartXml(IChartConfig chartConfig)
 {
     throw new NotSupportedException();
 }
コード例 #17
0
 /// <summary>
 ///     Установка высоты графика
 /// </summary>
 /// <param name="chartConfig">Представление конфига</param>
 /// <param name="height">Высота</param>
 /// <returns>Замыкание на конфиг</returns>
 public static IChartConfig SetHeight(this IChartConfig chartConfig, double height)
 {
     chartConfig.Height = height.ToString(CultureInfo.InvariantCulture);
     return(chartConfig);
 }
コード例 #18
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
        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);
        }
コード例 #19
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="chart">Исходное представление чарта</param>
 /// <param name="chartConfig">Исходный конфиг чарта</param>
 public ChartRenderResult(IChart chart, IChartConfig chartConfig)
 {
     Chart       = chart;
     ChartConfig = chartConfig;
 }
コード例 #20
0
ファイル: ChartException.cs プロジェクト: Qorpent/qorpent.sys
		/// <summary>
		/// 
		/// </summary>
		/// <param name="message"></param>
		/// <param name="config"></param>
		public ChartException(string message, IChartConfig config) : base(message) {
			this.Config = config;
		}
コード例 #21
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
	    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;
	    }
コード例 #22
0
ファイル: ChartRender.cs プロジェクト: Qorpent/qorpent.sys
        /// <summary>
        /// Render "set data" part of script 
        /// </summary>
        /// <param name="context"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        private string RenderDataScript(IMvcContext context, IChartConfig config) {
	        var source = config.NativeResult;
			if (null == source) {
				config.State.Message = "Отсутствуют данные для отрисовки";
				config.State.Level = ErrorLevel.Error;
				return null;
			}
	        if (source is XElement) {
		        var xElement =source as XElement;
		        config.DataType = "XML";
		        config.Type = xElement.Attr("graphtype");
				RemoveComments(xElement);
		        return source.ToString();
	        } else if(source is string) {
		        return source as string;
	        }

            return string.Empty;
        }
コード例 #23
0
 protected BuildHistoryController(IBuildHistoryClient buildHistoryClient, IBuildStatistics buildStatistics, IChartConfig chartConfig)
 {
     _buildHistoryClient = buildHistoryClient;
     _buildStatistics    = buildStatistics;
     _chartConfig        = chartConfig;
 }
コード例 #24
0
 /// <summary>
 ///     Установка длины графика
 /// </summary>
 /// <param name="chartConfig">Представление конфига</param>
 /// <param name="width">Длина</param>
 /// <returns>Замыкание на конфиг</returns>
 public static IChartConfig SetWidth(this IChartConfig chartConfig, double width)
 {
     chartConfig.Width = width.ToString(CultureInfo.InvariantCulture);
     return(chartConfig);
 }
コード例 #25
0
ファイル: FusionChartApi.cs プロジェクト: Qorpent/qorpent.sys
 /// <summary>
 /// Возвращает адаптер для работы с графиком в API FusionChart
 /// </summary>
 /// <param name="chart"></param>
 /// <param name="config"></param>
 /// <returns></returns>
 public static FusionChartWrapper AsFusion(this IChartElement chart, IChartConfig config=null) {
     config = config ?? new ChartConfig(){Type = FusionChartType.Column2D.ToString()};
     return new FusionChartWrapper(chart,config); 
 }      
コード例 #26
0
 /// <summary>
 /// Перекрыть, чтобы создать класс рендера для данного класса
 /// </summary>
 /// <param name="chartConfig"></param>
 /// <returns></returns>
 protected virtual IChartRender CreateChartRender(IChartConfig chartConfig)
 {
     throw new NotSupportedException();
 }
コード例 #27
0
 public AppVeyorController(IBuildStatistics buildStatistics, IChartConfig chartConfig)
     : base(new AppVeyorFactory().CreateBuildHistoryClient(), buildStatistics, chartConfig)
 {
 }
コード例 #28
0
ファイル: ChartException.cs プロジェクト: Qorpent/qorpent.sys
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 /// <param name="config"></param>
 /// <param name="inner"></param>
 public ChartException(string message, IChartConfig config, Exception inner) : base(message, inner)
 {
     Config = config;
 }
コード例 #29
0
ファイル: ChartException.cs プロジェクト: Qorpent/qorpent.sys
		/// <summary>
		/// 
		/// </summary>
		/// <param name="message"></param>
		/// <param name="config"></param>
		/// <param name="inner"></param>
		public ChartException(string message, IChartConfig config, Exception inner) : base(message, inner) {
			Config = config;
		}
コード例 #30
0
 /// <summary>
 ///     Установка типа графика в конфиг
 /// </summary>
 /// <param name="chartConfig">Представление конфига</param>
 /// <param name="type">Тип графика</param>
 /// <returns>Замыкание на конфиг</returns>
 public static IChartConfig SetChartType(this IChartConfig chartConfig, FusionChartType type)
 {
     chartConfig.Type = type.ToString();
     return(chartConfig);
 }
コード例 #31
0
 public TravisCIController(IBuildStatistics buildStatistics, IChartConfig chartConfig)
     : base(new TravisCIFactory().CreateBuildHistoryClient(), buildStatistics, chartConfig)
 {
 }
コード例 #32
0
ファイル: ChartException.cs プロジェクト: Qorpent/qorpent.sys
 /// <summary>
 ///
 /// </summary>
 /// <param name="message"></param>
 /// <param name="config"></param>
 public ChartException(string message, IChartConfig config) : base(message)
 {
     this.Config = config;
 }