poniedziałek, 29 sierpnia 2011

jqPlot - wykresy w ASP MVC

Chcąc wyświetlić na naszej stronie wykres wartości, możemy skorzystać z Silverlighta lub javascriptu. Możliwści silvrlighta podczas tworzenia wykresów prezentowałem w jednym z wcześniejszych postów. Teraz pokażę w jaki sposób można za pomocą JSONa i biblioteki jQPlot wyświetlić wykres dla pewnych wartości (np. pobranych z bazy danych).
Ze strony http://www.jqplot.com/ pobieramy bibliotekę jQPlot.
Po pobraniu dodajemy pliki pluginu do naszego projektu:


Następnie dodajemy odnośniki do bibliotek jQuery oraz jQPlot:


Code:
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.jqplot.min.js" type="text/javascript"></script>
    <link href="../../Scripts/jquery.jqplot.css" rel="stylesheet" type="text/css" />

W naszym widoku umieścimy kod znajdujący się na stronie autora dodatku:


Code:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>
 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: ViewData["Message"] %></h2>
    <div id="chartdiv" style="height:400px;width:300px; "></div>
    <script type="text/javascript">
        $.jqplot('chartdiv', [[[1, 2], [3, 5.12], [5, 13.1], [7, 33.6], [9, 85.9], [11, 219.9]]]);
    </script>
</asp:Content>

Po uruchomieniu aplikacji otrzymamy następujący widok:



Oczywiście sztywne umieszczenie wartości w kodzie nie przyda się nam zbytnio. Potrzebna jest nam metoda, która pozwoli zwrócić dane do widoku:


Code:
public ActionResult GetChartData()
        {
            JsonResult jsonResult = new JsonResult();
            int[] data = { 1, 5, 6, 8, 3, 4 };
            jsonResult.Data = data;
            jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            return jsonResult;
        }

W widoku umieszczamy kod jQuery odpowiedzialny za odebranie danych z kontrolera:


Code:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: ViewData["Message"] %></h2>
    <div id="chartdiv" style="height:400px;width:300px; "></div>
    <script type="text/javascript">
        $(document).ready(function () {
            $.getJSON("/Home/GetChartData", null, function (data) {
                $.jqplot('chartdiv', [data]);
            });
        });
    </script>
</asp:Content>

Po uruchomieniu aplikacji zobaczymy następujący wykres:


Oczywiście jqPlot oferuje dużo więcej możliwości, m.in.:
- różne typy wykresów
- osie z dowolnym formatowaniem
- automatyczne wyliczanie linii trendu
- podświetlanie punktów i wyświetlanie wartości w danym punkcie
- drag and drop punktów
To tylko kilka z wielu możliwości tego komponentu.
Zachęcam do używania i eksperymentowania.

Brak komentarzy:

Prześlij komentarz