<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AjaxBlog &#187; jqGrid</title>
	<atom:link href="http://ajaxblog.ru/tag/jqgrid/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxblog.ru</link>
	<description>ajax, javascript, css, php</description>
	<lastBuildDate>Tue, 14 Jun 2011 19:37:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Скрещиваем jqGrid и Open Flash Chart</title>
		<link>http://ajaxblog.ru/264</link>
		<comments>http://ajaxblog.ru/264#comments</comments>
		<pubDate>Wed, 28 Oct 2009 18:42:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Мои проекты]]></category>
		<category><![CDATA[jqGrid]]></category>
		<category><![CDATA[Open Flash Chart]]></category>
		<category><![CDATA[SWFobject]]></category>

		<guid isPermaLink="false">http://ajaxblog.ru/?p=264</guid>
		<description><![CDATA[Вывод данных в виде таблице удобно тем, что предостовляет большие возможности работы с ними (сортировка, фильтрация, выборки). И с этим прекрасно справляется плагин jqGrid. А если мы хотим отображать данные выводимые в jqGrid в виде графика. Причем синхронно обновлять график &#8230; <a href="http://ajaxblog.ru/264">Далее, еще интереснее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Вывод данных в виде таблице удобно тем, что предостовляет большие возможности работы с ними (сортировка, фильтрация, выборки). И с этим прекрасно справляется плагин jqGrid.</p>
<p>А если мы хотим отображать данные выводимые в jqGrid в виде графика. Причем синхронно обновлять график вместе с данными в таблице. Например так.</p>
<p><span id="more-264"></span></p>
<p><img class="alignnone size-full wp-image-265" title="jqgrid-open-flash-chart" src="http://ajaxblog.ru/wp-content/uploads/2009/10/jqgrid-open-flash-chart.gif" alt="jqgrid-open-flash-chart" width="593" height="409" /></p>
<p>Для построения графика я выбрал флешь библиотеку <a href="http://teethgrinder.co.uk/open-flash-chart-2/">Open Flash Chart</a>, которая себе прекрасно зарекомендовала. Если вам что то, придется не по душе в этой библиотеки, вы всегда сможете изменить . Так как <a href="http://teethgrinder.co.uk/open-flash-chart-2/">Open Flash Chart</a> &#8211; open source проект.</p>
<p>Еще нам понадобиться js библиотека &#8211; <a href="http://code.google.com/p/swfobject/">SWFobject</a>. Ее задача поместить флешку в нужное нам место. В принципе мы смогли бы обойтись и без нее, но она позволяет решить: проблемы кросс-браузерности, наличие нужной версии флешь проигрывателя и  т.д.</p>
<p>Основная идея скрипта.</p>
<ol>
<li>у jqGrid есть событие loadComplete &#8211; на него мы подвешиваем генерацию графика. То есть каждый раз когда грид обновляется, у нас будет обновятся график.</li>
<li>а данные для графика мы будем получать через пользовательский массив , с помощью функции getUserData()</li>
</ol>
<p>Вот пример кода.</p>
<pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">"text/javascript"</span> src<span style="color: #339933;">=</span><span style="color: #3366CC;">"/js/swfobject.js"</span><span style="color: #339933;">&gt;&lt;/</span>script<span style="color: #339933;">&gt;</span>

$<span style="color: #009900;">(</span>document<span style="color: #009900;">)</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #009900;">{</span>
	<span style="color: #003366; font-weight: bold;">var</span> chartCreate <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> data_statistics_chart <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>

	$<span style="color: #009900;">(</span><span style="color: #3366CC;">"#statistics-list"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">jqGrid</span><span style="color: #009900;">(</span><span style="color: #009900;">{</span>
		...некоторый ваш код...

		<span style="color: #006600; font-style: italic;">// функция вызывается в тот момент когда приходят данные в грид</span>
		loadComplete<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
			<span style="color: #006600; font-style: italic;">// получаем пользовательские данные</span>
			<span style="color: #003366; font-weight: bold;">var</span> udata <span style="color: #339933;">=</span> $<span style="color: #009900;">(</span><span style="color: #3366CC;">"#statistics-list"</span><span style="color: #009900;">)</span>.<span style="color: #660066;">getUserData</span><span style="color: #009900;">(</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// вызываем функцию loadChartData с нашими данными udata.chart_data для флеши</span>
			loadChartData<span style="color: #009900;">(</span>udata.<span style="color: #660066;">chart_data</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span><span style="color: #009900;">)</span>.<span style="color: #660066;">navGrid</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'#statistics-pager'</span><span style="color: #339933;">,</span> <span style="color: #009900;">{</span>refresh<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>add<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>edit<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>del<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">,</span>search<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>

	<span style="color: #003366; font-weight: bold;">function</span> loadChartData<span style="color: #009900;">(</span>data<span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		data_statistics_chart <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>
		<span style="color: #006600; font-style: italic;">// проверяем мы создали объект флешь</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">(</span>chartCreate<span style="color: #009900;">)</span> <span style="color: #009900;">{</span> <span style="color: #006600; font-style: italic;">// если да, то</span>
			<span style="color: #006600; font-style: italic;">// находим флешку</span>
			chart <span style="color: #339933;">=</span> swfobject.<span style="color: #660066;">getObjectById</span><span style="color: #009900;">(</span><span style="color: #3366CC;">'statistics_chart'</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
			<span style="color: #006600; font-style: italic;">// загружаем в нее полученные данные</span>
			chart.<span style="color: #660066;">load</span><span style="color: #009900;">(</span>data<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">{</span> <span style="color: #006600; font-style: italic;">// создаем флешку с помощью js библиотеки swfobject</span>
			chartCreate <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			swfobject.<span style="color: #660066;">embedSWF</span><span style="color: #009900;">(</span>
				<span style="color: #006600; font-style: italic;">// откуда берем саму флешку</span>
				<span style="color: #3366CC;">'/flash/open-flash-chart.swf'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// куда ее помещаем</span>
				<span style="color: #3366CC;">'statistics_chart'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// настройки флешки</span>
				<span style="color: #3366CC;">'734'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'270'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'9.0.0'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'expressInstall.swf'</span><span style="color: #339933;">,</span>
				<span style="color: #006600; font-style: italic;">// данные откуда флешка будет брать</span>
				<span style="color: #006600; font-style: italic;">// обратите внимания! флешка ждет на входе имя функции, </span>
				<span style="color: #006600; font-style: italic;">// поэтому сразу передать данные не получаетьса</span>
				<span style="color: #009900;">{</span><span style="color: #3366CC;">'get-data'</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'get_data_statistics_chart'</span><span style="color: #009900;">}</span><span style="color: #339933;">,</span>
				<span style="color: #009900;">{</span><span style="color: #3366CC;">'wmode'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'opaque'</span><span style="color: #009900;">}</span>
			<span style="color: #009900;">)</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">}</span>
	<span style="color: #009900;">}</span>

	<span style="color: #006600; font-style: italic;">// сама функция которая вернет нужные данные флешки</span>
	<span style="color: #003366; font-weight: bold;">function</span> get_data_statistics_chart<span style="color: #009900;">(</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		<span style="color: #000066; font-weight: bold;">return</span> data_statistics_chart<span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
<span style="color: #009900;">}</span><span style="color: #009900;">)</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">'statistics_chart'</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>

<span style="color: #339933;">&lt;</span>div <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"grid"</span><span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>table id<span style="color: #339933;">=</span><span style="color: #3366CC;">"statistics-list"</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"scroll"</span><span style="color: #339933;">&gt;&lt;/</span>table<span style="color: #339933;">&gt;</span>
	<span style="color: #339933;">&lt;</span>div id<span style="color: #339933;">=</span><span style="color: #3366CC;">"statistics-pager"</span> <span style="color: #003366; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #3366CC;">"scroll"</span><span style="color: #339933;">&gt;&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://ajaxblog.ru/264/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

