亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4788 | 回復(fù): 6
打印 上一主題 下一主題

Dancer use Open flash chart2 example [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-11-09 02:37 |只看該作者 |倒序?yàn)g覽
本帖最后由 aef25u 于 2013-11-09 03:07 編輯

dancer 網(wǎng)站原碼: 08MyChart2.rar (5.4 MB, 下載次數(shù): 6)

一、本站說明

這是perl的Dancer中使用open flash chart V2的簡單示例。
所需工具:

1、open flash chart2 版本:open-flash-chart-2-Lug-Wyrm-Charmer
2、jofc2版本:jofc2-1.0-0
3、除dancer相關(guān)模塊,仍需安裝以下perl模塊:
    moose
    Chart::OFC2
4、本示例dancer使用template_toolkit模版工具
運(yùn)行環(huán)境:

Windows XP、strawberry perl、Dancer 1.3011、Firefox
MyDancer.pm app.pl 及tt文檔編碼: utf-8
注:使用utf-8編碼,open flash chart V2可以展示中文,網(wǎng)上說V1版本X軸不能展示中文。
本網(wǎng)站主要介紹:

1、在dancer中配置open flash chart2 的簡單說明。
2、不使用Chart::OFC2,直接由html靜態(tài)文檔生成flash示例
3、使用Chart::OFC2與TT實(shí)現(xiàn)網(wǎng)頁MVC模式的架構(gòu)
4、open flash chart2不能脫離Web應(yīng)用服務(wù)器,本站適合普通用戶作為學(xué)習(xí)open flash chart2的demo
內(nèi)附(位于08MyChart2\bin下):

start.bat 方便本機(jī)運(yùn)行WEB服務(wù)器 http://localhost:3000/
1、雙擊start.bat
2、在瀏覽器下輸入 http://localhost:3000/home
二、配置
配置open flash chart
1、網(wǎng)上下載open-flash-chart-2-Lug-Wyrm-Charmer。
2、配置open-flash-chart.swf、swfobject.js:將open-flash-chart-2-Lug-Wyrm-Charmer解壓 并改名為ofc2,放于08MyChart2/public目錄下,注意在tt文件中配置此兩份文件的路徑, 如下圖(詳見08MyChart2\views\chart.tt):

配置jofc2-1.0-0
1、網(wǎng)上下載jofc2-1.0-0
2、配置jofc2-1.0-0.jar、xstream-1.3.1.jar:在jofc2-1.0-0下載包中可找到這2份文件, 放于08MyChart2\lib目錄下,如下圖:

三、dancer 中使用open flash chart生成圖表的流程

1、使用Chart::OFC2生成繪圖所需的json格式數(shù)據(jù),即http://localhost:3000/bar_data
2、傳遞json數(shù)據(jù)生成圖表,http://localhost:3000/bar?ofc=bar_data
2.1生成圖表的url:http://localhost:3000/bar,而?ofc=bar_data表示接收http://localhost:3000/bar_data生成的json數(shù)據(jù),并傳遞給tt模版
2.2通過data_json參數(shù)傳遞數(shù)據(jù)至tt模版,即data_json=>$data為:data_json=>bar_data。
注:要弄懂此流程,最好先上網(wǎng)搜索swfobject.js和open-flash-chart.swf的作用。

當(dāng)讀者明白此流程后,此網(wǎng)站將是你學(xué)習(xí)open flash chart2繪制各種圖片的demo,特別是給沒有Web應(yīng)用服務(wù)器的用戶帶來很大的便利。
(原因:前文已提到過open flash chart2不能脫離Web應(yīng)用服務(wù)器。)
dancer.pl代碼結(jié)構(gòu)


  1.     #!C:\strawberry\perl\bin\perl.exe
  2.     use Dancer;
  3.     use MyDancer;

  4.     set layout=>'main.tt';

  5.     #生成繪圖所需的json格式數(shù)據(jù)
  6.     get '/bar_data' => sub {
  7.         use Chart::OFC2;

  8.         my $chart = Chart::OFC2->new(
  9.         ...
  10.         );
  11.         return $chart->render_chart_data();
  12.     };

  13.     #輸出圖片到網(wǎng)頁,以bar圖為例:
  14.     #瀏覽器輸入url格式:http://localhost:3000/bar?ofc=bar_data
  15.     #get '/:type'此時(shí)路徑為:http://localhost:3000/bar
  16.     #?ofc=bar_data,表示傳遞http://localhost:3000/bar_data生成的json數(shù)據(jù)
  17.     #通過data_json參數(shù)傳遞數(shù)據(jù)至tt模版,即data_json=>$data為:data_json=>bar_data。
  18.     get '/:type' => sub {
  19.         my $type = params->{type};
  20.         my $title='繪制' . $type . '圖';
  21.         my $data =$type . '_data';
  22.         template 'chart'=>{example=>"$title",data_json=>$data};
  23.     };

  24.     dance;
復(fù)制代碼
對應(yīng)TT模版:

位于views文件夾:chart.tt


  1.     <h2>< % example % ></h2>
  2.         <div id="my_chart"></div>

  3.         <script type="text/javascript" src="/ofc2/js/swfobject.js"></script>
  4.         <script type="text/javascript" src="/ofc2/js/json/json2.js"></script>
  5.         <script type="text/javascript">
  6.         swfobject.embedSWF("/ofc2/open-flash-chart.swf", "my_chart",
  7.           "450", "250", "9.0.0", "expressInstall.swf",
  8.           {"get-data":"< % data_json % >"});
  9.          
  10.         </script>
復(fù)制代碼
四、一個(gè)真實(shí)的例子繪制bar 圖:
dancer.pl代碼:


  1.     use Dancer;
  2.     use MyDancer;

  3.     set layout=>'main.tt';

  4.     #生成繪圖所需的json格式數(shù)據(jù)
  5.     get '/bar_data' => sub {

  6.         use Chart::OFC2;
  7.         use Chart::OFC2::Axis;
  8.         use Chart::OFC2::Bar;

  9.         my $chart = Chart::OFC2->new(
  10.             'title' => 'Bar chart 示例',
  11.             x_axis => {
  12.                 labels => {
  13.                     labels => [ '1月', '2月', '3月', '4月', '5月' ],
  14.                 }
  15.             },
  16.         );
  17.         
  18.         my $bar = Chart::OFC2::Bar->new();
  19.         $bar->values([ 1..5 ]);
  20.         $chart->add_element($bar);
  21.         
  22.         return $chart->render_chart_data();
  23.          
  24.     };

  25.     get '/bar' => sub {
  26.         my $title='繪制bar圖';
  27.         template 'bar'=>{example=>"$title",data_json=>'bar_data'};
  28.     };
  29.     dance;
復(fù)制代碼
對應(yīng)tt模版代碼:
位于views文件夾:chart.tt,模版可見上文第三點(diǎn)。
更靈活的dancer:

將以上TT模版另存為chart.tt,我們修改get '/bar' => sub {...}處代碼,可以讓我們統(tǒng)一用chart.tt輸出各種圖片,dancer.pl代碼修改為。


  1.     get '/:type' => sub {
  2.         my $type = params->{type};
  3.         my $title='繪制' . $type . '圖';
  4.         my $data =$type . '_data';
  5.         template 'chart'=>{example=>"$title",data_json=>"$data"};
  6.     };
復(fù)制代碼

附:本站dancer代碼

在08MyChart2\bin目錄下的app_simple.pl文件,是open flash chart 輸出圖表最簡單的例子, 相對于app.pl沒有干擾信息,較容易理解,比較適合不太了解dancer的讀者。
app.pl代碼:
  1. #!C:\strawberry\perl\bin\perl.exe
  2. use Dancer;
  3. use MyDancer;

  4. set layout=>'main.tt';

  5. #首頁,關(guān)于open flash chart2的配置說明
  6. #use MyDancer;

  7. #直接由html靜態(tài)文檔生成flash示例
  8. get '/statepage' => sub {
  9.     template 'statepage';
  10. };

  11. #本站dancer代碼輸出模版
  12. get '/dancer_code' => sub {
  13.     template 'd_code';
  14. };

  15. #生成bar圖所需的json格式數(shù)據(jù)
  16. get '/bar_data' => sub {

  17.     use Chart::OFC2;
  18.     use Chart::OFC2::Bar;

  19.     my $chart = Chart::OFC2->new(
  20.         'title'  => Chart::OFC2::Title->new(
  21.             'text'  => 'Bar chart 示例',
  22.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  23.         ),
  24.         x_axis => {
  25.             labels => {
  26.                 labels => [ '1月', '2月', '3月', '4月', '5月' ],
  27.             }
  28.         },
  29.         y_axis => {max=>6,steps=>1},
  30.     );
  31.    
  32.     my $bar = Chart::OFC2::Bar->new();
  33.     $bar->values([ 1..5 ]);
  34.     $bar->colour('0x660099');
  35.     $chart->add_element($bar);
  36.    
  37.     print $chart->render_chart_data();
  38.      
  39. };

  40. #生成3Dbar圖所需的json格式數(shù)據(jù)
  41. get '/3D_bar_data' => sub {

  42.     use Chart::OFC2;
  43.     use Chart::OFC2::Bar;

  44.     my $chart = Chart::OFC2->new(
  45.         'title'  => Chart::OFC2::Title->new(
  46.             'text'  => '3Dbar chart 示例',
  47.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  48.         ),
  49.         x_axis => {
  50.             labels => {
  51.                 labels => [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ],
  52.             },
  53.         },
  54.         y_axis => {max=>14,steps=>1},
  55.     );
  56.    
  57.     #方式一:修改type_name屬性可以生成bar、bar_3d、bar_filled、bar_glass類型的柱狀圖   
  58.     my $bar = Chart::OFC2::Bar->new(
  59.        type_name=>'bar_3d',
  60.     );
  61.    
  62.     #方式二:寫個(gè)Bar_3D.pm放于本站目錄08MyChart2/lib下。
  63.     #use Bar_3D;
  64.     #my $bar = Bar_3D->new();
  65.    
  66.     $bar->values([ 1..12 ]);
  67.     $bar->colour('0x660099');
  68.     $chart->add_element($bar);
  69.    
  70.     print $chart->render_chart_data();
  71.      
  72. };

  73. #001生成HBar圖所需的json格式數(shù)據(jù)
  74. get '/HBar_data' => sub {

  75.     use Chart::OFC2;
  76.     use Chart::OFC2::HBar;

  77.     my $chart = Chart::OFC2->new(
  78.         'title'  => Chart::OFC2::Title->new(
  79.             'text'  => 'HBar chart 示例',
  80.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  81.         ),

  82.         'y_axis' => Chart::OFC2::YAxis->new(
  83.             'labels' => [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun' ],
  84.             'offset' => 1,
  85.         ),
  86.         'tooltip' => {
  87.             'mouse' => 2,
  88.         },
  89.     );
  90.    
  91.     my $hbar = Chart::OFC2::HBar->new(
  92.         'values' => [ { 'left' => 1.5, 'right' => 3, }, 1, 2, 3, 4, 5, ],
  93.         'colour' => '0x660099',
  94.     );

  95.     $chart->add_element($hbar);
  96.     print $chart->render_chart_data();

  97. };   
  98. #003生成Line圖所需的json格式數(shù)據(jù)
  99. get '/Line_data' => sub {

  100.     use Chart::OFC2;
  101.     use Chart::OFC2::Line;
  102.    
  103.     my $chart = Chart::OFC2->new(
  104.         'title'  => Chart::OFC2::Title->new(
  105.             'text'  => 'Line chart 示例',
  106.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  107.         ),
  108.         'x_axis' => Chart::OFC2::XAxis->new(
  109.             'labels' => [ 'Jan', 'Feb', 'Mar', 'Apr', 'May' ],
  110.         ),
  111.         y_axis => {max=>6,steps=>1},
  112.     );
  113.   
  114.     my $line = Chart::OFC2::Line->new();
  115.     $line->values([ 1..5 ]);
  116.     $chart->add_element($line);

  117.     print $chart->render_chart_data();

  118. };   


  119. #004生成pie圖所需的json格式數(shù)據(jù)
  120. get '/Pie_data' => sub {
  121. use Data::Dumper;

  122.     use Chart::OFC2;
  123.     use Chart::OFC2::Pie;
  124.     my $chart = Chart::OFC2->new(
  125.         'title'  => Chart::OFC2::Title->new(
  126.             'text'  => 'Pie chart 示例',
  127.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  128.         ),
  129.     );
  130.     my $pie = Chart::OFC2::Pie->new(
  131.         tip => '#val# of #total#<br>#percent# of 100%',
  132.     );
  133.     $pie->values([ (1 .. 5) ]);
  134.     $pie->values->labels([qw( IE Firefox Opera Wii Other)]);
  135.     $pie->values->colours([ '#d01f3c', '#356aa0', '#C79810', '#73880A', '#D15600' ]);

  136.     $chart->add_element($pie);
  137.     print $chart->render_chart_data();

  138. };  


  139. #生成復(fù)合圖形Line和Bar
  140. get '/Line_Bar_data' => sub {
  141.    
  142.     use List::Util;
  143.     use Chart::OFC2;
  144.     use Chart::OFC2::Bar;
  145.     use Chart::OFC2::Line;
  146.    
  147.     my $chart = Chart::OFC2->new(
  148.         'title'  => Chart::OFC2::Title->new(
  149.             'text'  => 'Line and Bar chart 示例',
  150.             'style' => '{font-size:20px; font-family:Verdana; text-align:center;}',
  151.         ),
  152.         x_axis => {
  153.             labels => {
  154.                 labels => [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ],
  155.             }
  156.         },
  157.         y_axis => {max=>14,steps=>1},
  158.     );
  159.    
  160.     my @a=(1..12);
  161.     @a=List::Util::shuffle @a;
  162.     my $bar = Chart::OFC2::Bar->new(
  163.        type_name=>'bar_glass',
  164.     );
  165.     $bar->values(\@a);
  166.     $bar->colour('0x660099');
  167.     my $line = Chart::OFC2::Line->new();
  168.     $line->values(\@a);

  169.     $chart->add_element($bar);   
  170.     $chart->add_element($line);   
  171.     print $chart->render_chart_data();

  172. };   
  173.   
  174. #get '/bar' => sub {
  175. #    my $title='繪制bar圖';
  176. #    template 'chart'=>{example=>"$title",data_json=>'bar_data'};
  177. #};

  178. #輸出圖片到網(wǎng)頁,以bar圖為例:
  179. #瀏覽器輸入url格式:http://localhost:3000/bar?ofc=bar_data
  180. #get '/:type'此時(shí)路徑為:http://localhost:3000/bar
  181. #?ofc=bar_data,表示傳遞http://localhost:3000/bar_data生成的json數(shù)據(jù)
  182. #通過data_json參數(shù)傳遞數(shù)據(jù)至tt模版,即data_json=>$data為:data_json=>bar_data。
  183. get '/:type' => sub {
  184.     my $type = params->{type};
  185.     my $title='繪制' . $type . '圖';
  186.     my $data =$type . '_data';
  187.     if (($type eq 'bar') or ($type eq '3D_bar')){
  188.         template "$type"=>{example=>"$title",data_json=>"$data"};   
  189.     }else{
  190.     template 'chart'=>{example=>"$title",data_json=>"$data"};}
  191. };



  192. dance;
復(fù)制代碼
附:其他圖表

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報(bào)告]
發(fā)表于 2013-11-10 09:20 |只看該作者
圖表的庫很多,這種類型的庫已經(jīng)很不流行了,因?yàn)楹馁M(fèi)太多后臺資源。
現(xiàn)在都是純js的庫,后臺把數(shù)據(jù)以JSON的形式扔到前端,前面的JS庫負(fù)責(zé)所有其他的操作

論壇徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午馬
日期:2014-08-06 03:56:58
3 [報(bào)告]
發(fā)表于 2013-11-10 15:29 |只看該作者
膜拜!LZ很贊啊!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2013-11-10 20:21 |只看該作者
本帖最后由 aef25u 于 2013-11-10 21:17 編輯

回復(fù) 2# py
open flash chart 應(yīng)該正是像你所說的方式(通過swfobject.js文件)實(shí)現(xiàn)繪制flash圖表的。Chart::OFC2是用moose寫的構(gòu)造繪制圖表所需josn結(jié)構(gòu)數(shù)據(jù)的模塊。分析源碼還可學(xué)習(xí)moose的oop實(shí)現(xiàn)。


   

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
5 [報(bào)告]
發(fā)表于 2013-11-11 07:47 |只看該作者
回復(fù) 4# aef25u

看了一下,是的,open flash chart是這樣的。
我之前是看你在dancer中鼓搗了好多代碼,以為是需要借助Chart::OFC2來生成graph。  不過那么多代碼就是為了生成json。。。。。

我是之前比較過graph library(主要是性能和功能),這個(gè)open flash chart是被我第一個(gè)叉掉的。后來選了amcharts,用了一段時(shí)間,最終換了highcharts。你可以看看highcharts的demo  http://www.highcharts.com/demo/

   

論壇徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:002015亞冠之首爾
日期:2015-11-04 22:25:43IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27獅子座
日期:2014-05-12 11:00:00辰龍
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-27 06:20:0015-16賽季CBA聯(lián)賽之新疆
日期:2016-06-07 14:10:01
6 [報(bào)告]
發(fā)表于 2013-11-11 15:47 |只看該作者
amcharts好像也全面轉(zhuǎn)向 html5了
以前的flash版的頁面都沒了

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
7 [報(bào)告]
發(fā)表于 2013-11-12 06:51 |只看該作者
回復(fù) 6# laputa73

flash chart流行過一陣兒,這幾年很少再有flash的圖標(biāo)了,和HTML5,JS,SVG的圖標(biāo)相比flash缺點(diǎn)很多。就連美觀程度flash都已完全沒有優(yōu)勢
   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP