Новое расширение MVC для рисования графиков

    Мы рады сообщить, что в следующей версии DXperience — v2011 vol 1 — появится новое расширение для ASP.NET MVC, а именно MVC Chart Extension.

    Это расширение позволяет добавить в MVC приложение десятки различных графиков — от прямоугольных и круговых, до радарных и финансовых.

    Если вы заинтересовались, добро пожаловать под кат.



    Разрабатывая новое расширение для MVC, мы старались сделать не просто что-то, что «немного работает под MVC», а полностью поддержать всю необходимую функциональность. Например, в этом видео демонстрируется, как можно «на лету» редактировать диаграмму Ганта, а также как работает «дрилл-даун», печать и экспорт:



    Кроме того, поддерживается такая функциональность, как:
    • Сортировка и фильтрация данных.
    • Неограниченное число осей и облаcтей для показа графиков.
    • Привязка к данным либо каждой серии в отдельности, либо с использованием общего шаблона.
    • Аннотации с текстом или с картинкой.
    • многое другое...

    Также мы старались обращать внимание на то, насколько удобным и лаконичным будет создание графиков в коде. Вот небольшой пример работающего кода, в котором мы создадим простой колоночный график:

    
    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
     
    <% 
        Html.DevExpress().Chart(settings => {
            settings.Name = "myChart";
            settings.SeriesTemplate.ChangeView(DevExpress.XtraCharts.ViewType.StackedBar);
            settings.SeriesDataMember = "Year";
            settings.SeriesTemplate.ArgumentDataMember = "State";
            settings.SeriesTemplate.ValueDataMembers[0] = "Product";
            settings.SeriesTemplate.Label.ResolveOverlappingMode = ResolveOverlappingMode.Default;
    
            Axis2D axisY = ((XYDiagram)settings.Diagram).AxisY;
            axisY.Interlaced = true;
            axisY.Title.Text = "Millions of Dollars";
            axisY.Title.Visible = true;
        })
        .Bind(Model)
        .Render(); 
    %>
    


    Если Вы заинтересовались новым расширением для MVC, то вы можете получить более подробную информацию, посмотрев запись последнего вебинара на нашем сайте: ASP.NET MVC Charting Preview
    Метки:
    • +21
    • 9,7k
    • 9
    DevExpress 68,19
    Компания
    Поделиться публикацией
    Комментарии 9
    • +3
      Отлично, а на чем реализован контрол? flash/svg?
      • +3
        Обычный ASP.NET. Картинка рисуется на сервере и отдается на клиент, плюс на клиенте хорошая обертка на JavaScript реализующая различную клиентскую функциональность
      • +1
        Для проектов написанных не на MVC, я очень порекомендую Google Visualisations, интегрирование можно провести в течении получаса, зато оформление графика и данные разделены: на сервере генерируем json выборку, на клиенте проводим оформление.

        Я даже был немного удивлен, когда понял что выдают они не Flash (canvas судя по всему), так что они прекрасно работают и на яблоках.
        • +1
          А чем это решение лучше, например, flot или jqPlot (обзор)?
        • +4
          Все же легковесные клиентские чарты — это немного не та категория. Они конечно более интерактивны, но по некоторому функционалу проигрывают клиент-серверным.

          Например, в чисто клиентских чартах отсутствуют 3D виды, не такие богатые возможности работы с источниками данных, нет «тяжелых» расчетов по большому количеству данных (будь то всякие различные скользящие средние, линии регрессии и т.п.). Да и по настройке — в тяжелых чартах проще и быстрее привести картинку в нужный вид, используя штатные средства контрола, а не дописывая костыли.

          Также полная взаимозаменяемость с WinForm'овскими XrtaCharts позволяет писать комплексные решения, с интерфейсами как для Web, так и для Win.

          Ну и в завершение: хорошая объектная модель представления данных — согласитесь, в клиентских чартах это редкость.
          • +3
            Позволю себе поспорить (из спортивного интереса и для реабилитации клиентских чартов:-))
            1. 3D: с 3D видами дел не имел, спорить не буду

            2. Работа с источниками данных: работа с источниками данных должна все-таки выноситься в отдельный сервис в доменной модеи или уровня доступа к данным, который будет возвращать список объектов. Работа с источниками данных--не задача чартов. Ну, и из этого вытекают все плюсы Single Responsibility principle: лучший дизайн, возможность TDD и тд.

            3. Тяжелые расчеты: умение совершать тяжелые расчеты, как и работа с источником--не задача графиков. Мне кажется, лучше использовать специализированные мат. библиотеки. Опять же, получаем SOLID, лучший дизайн, TDD.

            4. Костыли: в jqPlot и flot, с которыми работал, костыли не понадобились. Но это субъективные впечатления.

            5. Win-web interoperability: согласен)

            6. Модель данных. Не соглашусь) В jqPlot и flot модель данных намного лучше, чем, например, в Microsoft Chart Controls (не такая громоздкая)

            Зато есть недостатки:
            1. опять же, неинтерактивность
            2. скорость загрузки--не надо передавать картинку на клиента (не уверен, как это происходит у DevExpress, но, по-моему, в Microsoft Chart Controls именно так)

            Но, конечно, все зависит от задачи
            • +1
              2 и 3. приведу простой пример: есть база с какими-либо аналитическими данными по продажам, надо показать график по 10 самым продаваемым продуктам, отсортированный по названиям, и рядом в гриде все целиком, только отсортированное по продажам. Так вот при использовании тяжелых чартов, фильтрация и сортировка осуществляется уже на уровне чартов, таким образом, нет лишних телодвижений — выборка из базы, грид и чарт.

              4. Соглашусь часто это чисто субъективные впечатления, да и специфика решаемых задач может быть разной.

              6. По поводу MS Chart, он же бывший Dundas Chart, на мой субъективный взгляд, объектная модель там неахти.

              Про недостатки:
              • +1
                1. Согласен, нужен поход на сервер для обновления картинки.
                2. При рисовании на клиенте, скорость загрузки выше, но само рисование тоже требует времени, причем большего чем тоже самое рисование на сервере.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое