基于jquery框架、google chart tools图形报表gvChart的应用心得

首先,介绍下gvChart:gvChart是一个利用Google Chart Tools来创建交互式图表(Charts)的jQuery插件。可创建的图表类型有Area、Line、Bar、Column和Pie五种。它使用HTML Tables做数据源来创建图表。

准备工作:引入JS

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="jquery.gvChart-1.0.1.min.js" type="text/javascript"></script>
红色部分为google的chart tools框架的引用,必须要引用并在js方法中调用方法gvChartInit();才能正常使用,并且这么强大的报表功能只能在线使用,允许用户每天访问5W次,想要离线使用的话只能用其他的报表框架了,后面的博客中我会介绍一个还算不错的js图形报表框架
google官方的详细api: Google Chart API 参考 中文版

效果图1.



在页面中方法:

jQuery('#myTable1').gvChart({
             chartType: 'AreaChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });
数据:
<table id='myTable1'>
	<caption>报表分析</caption>
	<thead>
		<tr>
			<th></th><th>一月</th><th>二月</th><th>三月</th><th>四月</th><th>五月</th><th>六月</th>
			<th>七月</th><th>八月</th><th>九月</th><th>十月</th><th>十一月</th><th>十二月</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<th>实际完成</th>
			<td>900</td><td>600</td><td>327</td><td>359</td><td>376</td><td>398</td>
			<td>60</td><td>50</td><td>404</td><td>700</td><td>200</td><td>500</td>
		</tr>
		<tr>
			<th>计划任务</th>
			<td>1167</td><td>1110</td><td>691</td><td>165</td><td>135</td><td>157</td>
			<td>139</td><td>136</td><td>938</td><td>1120</td><td>55</td><td>55</td>
		</tr>
	</tbody>
</table>

效果2:

调用方法:

jQuery('#myTable2').gvChart({
             chartType: 'LineChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });

数据格式:

<table id='myTable1'>
	<caption>报表分析</caption>
	<thead>
		<tr>
			<th></th><th>一月</th><th>二月</th><th>三月</th><th>四月</th><th>五月</th><th>六月</th>
			<th>七月</th><th>八月</th><th>九月</th><th>十月</th><th>十一月</th><th>十二月</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<th>实际完成</th>
			<td>900</td><td>600</td><td>327</td><td>359</td><td>376</td><td>398</td>
			<td>60</td><td>50</td><td>404</td><td>700</td><td>200</td><td>500</td>
		</tr>
		<tr>
			<th>计划任务</th>
			<td>1167</td><td>1110</td><td>691</td><td>165</td><td>135</td><td>157</td>
			<td>139</td><td>136</td><td>938</td><td>1120</td><td>55</td><td>55</td>
		</tr>
	</tbody>
</table>


效果3:


方法调用:

jQuery('#myTable3').gvChart({
             chartType: 'BarChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
});
数据格式:

<table id='myTable1'>
	<caption>报表分析</caption>
	<thead>
		<tr>
			<th></th><th>一月</th><th>二月</th><th>三月</th><th>四月</th><th>五月</th><th>六月</th>
			<th>七月</th><th>八月</th><th>九月</th><th>十月</th><th>十一月</th><th>十二月</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<th>实际完成</th>
			<td>900</td><td>600</td><td>327</td><td>359</td><td>376</td><td>398</td>
			<td>60</td><td>50</td><td>404</td><td>700</td><td>200</td><td>500</td>
		</tr>
		<tr>
			<th>计划任务</th>
			<td>1167</td><td>1110</td><td>691</td><td>165</td><td>135</td><td>157</td>
			<td>139</td><td>136</td><td>938</td><td>1120</td><td>55</td><td>55</td>
		</tr>
	</tbody>
</table>

效果4:

方法调用:

jQuery('#myTable5').gvChart({
             chartType: 'PieChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
});
数据格式:

<table id='myTable1'>
	<caption>报表分析</caption>
	<thead>
		<tr>
			<th></th><th>一月</th><th>二月</th><th>三月</th><th>四月</th><th>五月</th><th>六月</th>
			<th>七月</th><th>八月</th><th>九月</th><th>十月</th><th>十一月</th><th>十二月</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<th>2001</th>
			<td>900</td><td>600</td><td>327</td><td>359</td><td>376</td><td>398</td>
			<td>60</td><td>50</td><td>404</td><td>700</td><td>200</td><td>500</td>
		</tr>
	</tbody>
</table>
示例全部代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title></title>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<script type="text/javascript" src="http://www.google.com/jsapi"></script>
		<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
		<script src="jquery.gvChart-1.0.1.min.js" type="text/javascript"></script>
		<link href="js/themes/default/tabs.css" rel="stylesheet"
			type="text/css" />
		<link href="js/themes/icon.css" rel="stylesheet" type="text/css" />

		<script src="js/jquery.easyui.min.js" type="text/javascript"></script>

		<script type="text/javascript">      
   $(function() {
           $("#tabs").tabs();
       });
	</script>

		<script type="text/javascript">
	gvChartInit();
     jQuery(document).ready(function() {
         jQuery('#myTable1').gvChart({
             chartType: 'AreaChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });
		 
		 jQuery('#myTable2').gvChart({
             chartType: 'LineChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });
		 
         jQuery('#myTable3').gvChart({
             chartType: 'BarChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                width: 720,
                 height: 300
             }
         });

         jQuery('#myTable4').gvChart({
             chartType: 'ColumnChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });

         jQuery('#myTable5').gvChart({
             chartType: 'PieChart',
             gvSettings: {
                 vAxis: { title: '金额' },
                 hAxis: { title: '月份' },
                 width: 720,
                 height: 300
             }
         });
     });

    </script>

		<style type="text/css">
body {
	text-align: center;
	font-family: Arial, sans-serif;
	font-size: 12px;
}

a {
	text-decoration: none;
	font-weight: bold;
	color: #555;
}

a:hover {
	color: #000;
}

div.easyui-tabs {
	margin: auto;
	text-align: left;
	width: 720px;
}

div.clean {
	border: 1px solid #850000;
}

.clean td,.clean th {
	border: 2px solid #bbb;
	background: #ddd;
	padding: 5px 10px;
	text-align: center;
	border-radius: 2px;
}

.clean table {
	margin: auto;
	margin-top: 15px;
	margin-bottom: 15px;
}

.clean caption {
	font-weight: bold;
}

.gvChart,.clean {
	border: 2px solid #850000;
	border-radius: 5px;
	-moz-border-radius: 10px;
	width: 720px;
	margin: auto;
	margin-top: 20px;
}

pre {
	background: #eee;
	padding: 10px;
	border-radius: 10px;
	-moz-border-radius: 10px;
}
</style>
	</head>
	<body>



		<div class="easyui-tabs" fit="true" plain="true"
			style="height: 500px; width: 800px;">
			<div title="Title1" style="padding: 10px;">
				<h2 id="area">
					区域报表
				</h2>
				<table id='myTable1'>
					<caption>
						报表分析
					</caption>
					<thead>
						<tr>
							<th>
							</th>
							<th>
								一月

							</th>
							<th>
								二月

							</th>
							<th>
								三月

							</th>
							<th>
								四月

							</th>
							<th>
								五月

							</th>
							<th>
								六月

							</th>
							<th>
								七月

							</th>
							<th>
								八月

							</th>
							<th>
								九月

							</th>
							<th>
								十月

							</th>
							<th>
								十一月

							</th>
							<th>
								十二月

							</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<th>
								实际完成

							</th>
							<td>
								900

							</td>
							<td>
								600

							</td>
							<td>
								327

							</td>
							<td>
								359

							</td>
							<td>
								376

							</td>
							<td>
								398

							</td>
							<td>
								60
							</td>
							<td>
								50
							</td>
							<td>
								404
							</td>
							<td>
								700
							</td>
							<td>
								200
							</td>
							<td>
								500
							</td>
						</tr>
						<tr>
							<th>
								计划任务

							</th>
							<td>
								1167

							</td>
							<td>
								1110

							</td>
							<td>
								691

							</td>
							<td>
								165

							</td>
							<td>
								135

							</td>
							<td>
								157

							</td>
							<td>
								139

							</td>
							<td>
								136

							</td>
							<td>
								938

							</td>
							<td>
								1120

							</td>
							<td>
								55

							</td>
							<td>
								55

							</td>
						</tr>
					</tbody>
				</table>
			</div>
			<div title="Title2" style="padding: 10px;">
				<h2 id="line">
					LineChart
				</h2>
				<table id='myTable2'>
					<caption>
						报表分析
					</caption>
					<thead>
						<tr>
							<th>
							</th>
							<th>
								一月

							</th>
							<th>
								二月

							</th>
							<th>
								三月

							</th>
							<th>
								四月

							</th>
							<th>
								五月

							</th>
							<th>
								六月

							</th>
							<th>
								七月

							</th>
							<th>
								八月

							</th>
							<th>
								九月

							</th>
							<th>
								十月

							</th>
							<th>
								十一月

							</th>
							<th>
								十二月

							</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<th>
								实际完成

							</th>
							<td>
								900

							</td>
							<td>
								600

							</td>
							<td>
								327

							</td>
							<td>
								359

							</td>
							<td>
								376

							</td>
							<td>
								398

							</td>
							<td>
								60
							</td>
							<td>
								50
							</td>
							<td>
								404
							</td>
							<td>
								700
							</td>
							<td>
								200
							</td>
							<td>
								500
							</td>
						</tr>
						<tr>
							<th>
								计划任务

							</th>
							<td>
								1167

							</td>
							<td>
								1110

							</td>
							<td>
								691

							</td>
							<td>
								165

							</td>
							<td>
								135

							</td>
							<td>
								157

							</td>
							<td>
								139

							</td>
							<td>
								136

							</td>
							<td>
								938

							</td>
							<td>
								1120

							</td>
							<td>
								55

							</td>
							<td>
								55

							</td>
						</tr>
					</tbody>
				</table>
			</div>
			<div title="Title3" style="padding: 10px;">
				<h2 id="bar">
					BarChart
				</h2>
				<table id='myTable3'>
					<caption>
						报表分析
					</caption>
					<thead>
						<tr>
							<th>
							</th>
							<th>
								一月

							</th>
							<th>
								二月

							</th>
							<th>
								三月

							</th>
							<th>
								四月

							</th>
							<th>
								五月

							</th>
							<th>
								六月

							</th>
							<th>
								七月

							</th>
							<th>
								八月

							</th>
							<th>
								九月

							</th>
							<th>
								十月

							</th>
							<th>
								十一月

							</th>
							<th>
								十二月

							</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<th>
								实际完成

							</th>
							<td>
								900

							</td>
							<td>
								600

							</td>
							<td>
								327

							</td>
							<td>
								359

							</td>
							<td>
								376

							</td>
							<td>
								398

							</td>
							<td>
								60
							</td>
							<td>
								50
							</td>
							<td>
								404
							</td>
							<td>
								700
							</td>
							<td>
								200
							</td>
							<td>
								500
							</td>
						</tr>
						<tr>
							<th>
								计划任务

							</th>
							<td>
								1167

							</td>
							<td>
								1110

							</td>
							<td>
								691

							</td>
							<td>
								165

							</td>
							<td>
								135

							</td>
							<td>
								157

							</td>
							<td>
								139

							</td>
							<td>
								136

							</td>
							<td>
								938

							</td>
							<td>
								1120

							</td>
							<td>
								55

							</td>
							<td>
								55

							</td>
						</tr>
					</tbody>
				</table>
			</div>
			<div title="Title4" style="padding: 10px;">
				<h2 id="column">
					ColumnChart
				</h2>
				<table id='myTable4'>
					<caption>
						报表分析
					</caption>
					<thead>
						<tr>
							<th>
							</th>
							<th>
								一月

							</th>
							<th>
								二月

							</th>
							<th>
								三月

							</th>
							<th>
								四月

							</th>
							<th>
								五月

							</th>
							<th>
								六月

							</th>
							<th>
								七月

							</th>
							<th>
								八月

							</th>
							<th>
								九月

							</th>
							<th>
								十月

							</th>
							<th>
								十一月

							</th>
							<th>
								十二月

							</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<th>
								实际完成

							</th>
							<td>
								900

							</td>
							<td>
								600

							</td>
							<td>
								327

							</td>
							<td>
								359

							</td>
							<td>
								376

							</td>
							<td>
								398

							</td>
							<td>
								60
							</td>
							<td>
								50
							</td>
							<td>
								404
							</td>
							<td>
								700
							</td>
							<td>
								200
							</td>
							<td>
								500
							</td>
						</tr>
						<tr>
							<th>
								计划任务

							</th>
							<td>
								1167

							</td>
							<td>
								1110

							</td>
							<td>
								691

							</td>
							<td>
								165

							</td>
							<td>
								135

							</td>
							<td>
								157

							</td>
							<td>
								139

							</td>
							<td>
								136

							</td>
							<td>
								938

							</td>
							<td>
								1120

							</td>
							<td>
								55

							</td>
							<td>
								55

							</td>
						</tr>
					</tbody>
				</table>
			</div>
			<div title="Title5" style="padding: 10px;">
				<h2 id="pie">
					PieChart
				</h2>
				<table id='myTable5'>
					<caption>
						报表分析
					</caption>
					<thead>
						<tr>
							<th>
							</th>
							<th>
								一月

							</th>
							<th>
								二月

							</th>
							<th>
								三月

							</th>
							<th>
								四月

							</th>
							<th>
								五月

							</th>
							<th>
								六月

							</th>
							<th>
								七月

							</th>
							<th>
								八月

							</th>
							<th>
								九月

							</th>
							<th>
								十月

							</th>
							<th>
								十一月

							</th>
							<th>
								十二月

							</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<th>
								2010

							</th>
							<td>
								125

							</td>
							<td>
								185

							</td>
							<td>
								327

							</td>
							<td>
								359

							</td>
							<td>
								376

							</td>
							<td>
								398

							</td>
							<td>
								0

							</td>
							<td>
								0

							</td>
							<td>
								0

							</td>
							<td>
								0

							</td>
							<td>
								0

							</td>
							<td>
								0

							</td>
						</tr>
					</tbody>
				</table>
			</div>
		</div>
	</body>
</html>

























  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
/* @license * jQuery.print, version 1.3.2 * (c) Sathvik Ponangi, Doers' Guild * Licence: CC-By (http://creativecommons.org/licenses/by/3.0/) *--------------------------------------------------------------------------*/ (function ($) { "use strict"; // A nice closure for our definitions function getjQueryObject(string) { // Make string a vaild jQuery thing var jqObj = $(""); try { jqObj = $(string) .clone(); } catch (e) { jqObj = $("<span />") .html(string); } return jqObj; } function printFrame(frameWindow) { // Print the selected window/iframe var def = $.Deferred(); try { setTimeout(function () { // Fix for IE : Allow it to render the iframe frameWindow.focus(); try { // Fix for IE11 - printng the whole page instead of the iframe content if (!frameWindow.document.execCommand('print', false, null)) { // document.execCommand returns false if it failed -http://stackoverflow.com/a/21336448/937891 frameWindow.print(); } } catch (e) { frameWindow.print(); } frameWindow.close(); def.resolve(); }, 250); } catch (err) { def.reject(err); } return def; } function printContentInNewWindow(content) { // Open a new window and print selected content var w = window.open(); w.[removed](content); w.document.close(); return printFrame(w); } function isNode(o) { /* http://stackoverflow.com/a/384380/937891 */ return !!(typeof Node === "object" ? o instanceof Node : o && typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName === "string"); } $.print = $.fn.print = function () { // Print a given set of elements var options, $this, self = this; // console.log("Printing", this, arguments); if (self instanceof $) { // Get the node if it is a jQuery object self = self.get(0); } if (isNode(self)) { // If `this` is a HTML element, i.e. for // $(selector).print() $this = $(self); if (arguments.length > 0) { options = arguments[0]; } } else { if (arguments.length > 0) { // $.print(selector,options) $this = $(arguments[0]); if (isNode($this[0])) { if (arguments.length > 1) { options = arguments[1]; } } else { // $.print(options) options = arguments[0]; $this = $("html"); } } else { // $.print() $this = $("html"); } } // Default options var defaults = { globalStyles: true, mediaPrint: false, stylesheet: null, noPrintSelector: ".no-print", iframe: true, append: null, prepend: null, manuallyCopyFormValues: true, deferred: $.Deferred() }; // Merge with user-options options = $.extend({}, defaults, (options || {})); var $styles = $(""); if (options.globalStyles) { // Apply the stlyes from the current sheet to the printed page $styles = $("style, link, meta, title"); } else if (options.mediaPrint) { // Apply the media-print stylesheet $styles = $("link[media=print]"); } if (options.stylesheet) { // Add a custom stylesheet if given $styles = $.merge($styles, $('<link rel="stylesheet" href="' + options.stylesheet + '">')); } // Create a copy of the element to print var copy = $this.clone(); // Wrap it in a span to get the HTML markup string copy = $("<span/>") .append(copy); // Remove unwanted elements copy.find(options.noPrintSelector) .remove(); // Add in the styles copy.append($styles.clone()); // Appedned content copy.append(getjQueryObject(options.append)); // Prepended content copy.prepend(getjQueryObject(options.prepend)); if (options.manuallyCopyFormValues) { // Manually copy form values into the HTML for printing user-modified input fields // http://stackoverflow.com/a/26707753 copy.find("input") .each(function () { var $field = $(this); if ($field.is("[type='radio']") || $field.is("[type='checkbox']")) { if ($field.prop("checked")) { $field.attr("checked", "checked"); } } else { $field.attr("value", $field.val()); } }); copy.find("select").each(function () { var $field = $(this); $field.find(":selected").attr("selected", "selected"); }); copy.find("textarea").each(function () { // Fix for https://github.com/DoersGuild/jQuery.print/issues/18#issuecomment-96451589 var $field = $(this); $field.text($field.val()); }); } // Get the HTML markup string var content = copy.html(); // Notify with generated markup & cloned elements - useful for logging, etc try { options.deferred.notify('generated_markup', content, copy); } catch (err) { console.warn('Error notifying deferred', err); } // Destroy the copy copy.remove(); if (options.iframe) { // Use an iframe for printing try { var $iframe = $(options.iframe + ""); var iframeCount = $iframe.length; if (iframeCount === 0) { // Create a new iFrame if none is given $iframe = $('<iframe height="0" width="0" border="0" wmode="Opaque"/>') .prependTo('body') .css({ "position": "absolute", "top": -999, "left": -999 }); } var w, wdoc; w = $iframe.get(0); w = w.contentWindow || w.contentDocument || w; wdoc = w.document || w.contentDocument || w; wdoc.open(); wdoc.write(content); wdoc.close(); printFrame(w) .done(function () { // Success setTimeout(function () { // Wait for IE if (iframeCount === 0) { // Destroy the iframe if created here $iframe.remove(); } }, 100); }) .fail(function (err) { // Use the pop-up method if iframe fails for some reason console.error("Failed to print from iframe", err); printContentInNewWindow(content); }) .always(function () { try { options.deferred.resolve(); } catch (err) { console.warn('Error notifying deferred', err); } }); } catch (e) { // Use the pop-up method if iframe fails for some reason console.error("Failed to print from iframe", e.stack, e.message); printContentInNewWindow(content) .always(function () { try { options.deferred.resolve(); } catch (err) { console.warn('Error notifying deferred', err); } }); } } else { // Use a new window for printing printContentInNewWindow(content) .always(function () { try { options.deferred.resolve(); } catch (err) { console.warn('Error notifying deferred', err); } }); } return this; }; })(jQuery);

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值