예제 #1
0
        public HomeViewModel()
        {
            var settings = new HtmlScoreRendererSettings();

            settings.RenderSurface = HtmlScoreRendererSettings.HtmlRenderSurface.Svg;
            var musicFontUris = new[] { "/fonts/Polihymnia.svg", "/fonts/Polihymnia.ttf", "/fonts/Polihymnia.woff" };

            settings.RenderingMode = ScoreRenderingModes.AllPages;
            settings.Fonts.Add(MusicFontStyles.MusicFont, new HtmlFontInfo("Polihymnia", 22, musicFontUris));
            settings.Fonts.Add(MusicFontStyles.StaffFont, new HtmlFontInfo("Polihymnia", 24, musicFontUris));
            settings.Fonts.Add(MusicFontStyles.GraceNoteFont, new HtmlFontInfo("Polihymnia", 14, musicFontUris));
            settings.Fonts.Add(MusicFontStyles.LyricsFont, new HtmlFontInfo("Open Sans", 9, "/fonts/OpenSans-Regular.ttf"));
            settings.Fonts.Add(MusicFontStyles.TimeSignatureFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf"));
            settings.Fonts.Add(MusicFontStyles.DirectionFont, new HtmlFontInfo("Open Sans", 10, "/fonts/OpenSans-Regular.ttf"));
            settings.Scale = 1;
            settings.CustomElementPositionRatio = 0.8;
            settings.IgnorePageMargins          = true;
            Settings = settings;

            RadarChartSettings = new HtmlRadarChartRendererSettings();
            Samples            = new[] {
                new RadarChartSample("Performance", "Performance", 50)
                {
                    ValidationMinValue = 40, ValidationMaxValue = 60
                },
                new RadarChartSample("User experience", "User experience", 52)
                {
                    ValidationMinValue = 20, ValidationMaxValue = 40
                },
                new RadarChartSample("Responsiveness", "Responsiveness", 18)
                {
                    ValidationMinValue = 20, ValidationMaxValue = 40
                },
                new RadarChartSample("Cost", "Cost", 30)
                {
                    ValidationMinValue = 30, ValidationMaxValue = 60
                },
                new RadarChartSample("Awesomeness", "Awesomeness", 37)
                {
                    ValidationMinValue = 20, ValidationMaxValue = 40
                }
            };
        }
        private static MvcHtmlString RadarChartHelper(HtmlHelper helper, RadarChartSample[] samples, HtmlRadarChartRendererSettings settings)
        {
            var xElement = new XElement("svg");

            xElement.Add(new XAttribute("style", $"width:{settings.Width.ToStringInvariant()}px; height:{settings.Height.ToStringInvariant()}px;"));
            new HtmlSvgRadarChartRenderer(settings, xElement).RedrawChart(samples);
            return(MvcHtmlString.Create(xElement.ToString()));
        }
        public static MvcHtmlString RadarChartFor <TModel>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, RadarChartSample[]> > expression, HtmlRadarChartRendererSettings settings)
        {
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);

            RadarChartSample[] samples = metadata.Model == null ? null : metadata.Model as RadarChartSample[];
            return(RadarChartHelper(htmlHelper, samples, settings));
        }