Top > PukiWiki > make > charts.inc.php

TITLE:グラフ作成プラグイン
*charts.inc.php [#ce4ec3cb]
#table_edit2(,table_mod=open){{
|SIZE(12):RIGHT:100|LEFT:360|c
|~目的|[http://pukiwiki.sourceforge.jp/?%E6%AC%B2%E3%81%97%E3%81%84%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2F257 欲しいプラグイン/257]で紹介されたmaanigraph.inc.phpを参考に作り直しました。(但し最終的にプログラムは全部変更しています。)&br;PHP/SWF Charts 4.5を利用する為のプラグイン|
|~対応バージョン|1.4.7plus-i18nで確認|
|~作成者|taru|
|~公開日|&new{2006-9-30 (土) 23:55:52};|
|~ライセンス|プラグイン部分はGPL|
}}

 [http://pukiwiki.sourceforge.jp/?%E6%AC%B2%E3%81%97%E3%81%84%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2F257 欲しいプラグイン/257]を見た時にこれってtable_edit2.inc.phpを元に作り直せるのではと考え早速実行してみました。ちなみに、そこで紹介されているmaanigraph.inc.phpはPukiWiki Plus!では動かせない作り((直接相対アドレスを記述する等のプラグイン規則から外れる作りになっている))になっています。&br;
 このプラグインはhttp://www.maani.us/charts/index.phpで配布されている&color(red,#fee){PHPとFlashを利用した「配列データからグラフを作る(PHP/SWF Charts 4.5)」};をPukiWikiで使えるようにする為のものです。table_edit2.inc.phpを元に改造している事から判ると思いますがデータはWikiページ上の表組みから取得します。

#contentsx
*進行状況 [#m6d33613]
#table_edit2(,table_mod=open){{{
|SIZE(12):|SIZE(12):|SIZE(12):|SIZE(12):|SIZE(12):|c
|~予定(案)|~状況|~発案日|~完了日|~Ver|
|複数行プラグイン書式で[http://www.maani.us/xml_charts/index.php?menu=Reference xmlオプション]を指定可能に|完了|[[diary/2006-10-05]]|06-10-08|0.5|
|サイズとバックカラーを変更可能に|オプション指定のみです、セッティングフォームへの表示は微妙かもなので略 完了|[[06/09/27>diary/2006-09-27]]|[[06/09/30>diary/2006-09-30]]|0.2|
|別ページ名も指定可能に|保留 需要次第? コードがややこしくなりそうなのであまりやる気は無い|[[06/09/27>Note/diary/2006-09-27]]|07/11/15|1.3|
|表組み(データ元)が邪魔な場合に複数行プラグイン書式の{{}}で隠す|確認してみたところ変更無しでいけるようです。 完了|[[06/09/27>Note/diary/2006-09-27]]|[[06/09/30>diary/2006-09-30]]|0.2|
|swfファイルに引渡すためのxml定義用phpプログラムを廃止しactionコマンドで実行できる様に変更|互換性が悪い((PukiWikは利用するサイト管理者によってフォルダ構成が違うのでPukiWiki以外で動くphpファイルは極力使わない方が良いでしょう))のと.htaccessに影響を受けるので重要、[[diary/2006-09-27]]でとりあえず動くようになった事で引渡している正常なデータを確認する事が可能になりそれを参考に直接xmlを定義する方式に変更 完了|[[06/09/27>Note/diary/2006-09-27]]|[[06/09/30>diary/2006-09-30]]|0.2|
|swfファイルをpluginフォルダからskinフォルダに移動|upkさんから指摘もあった通りこの仕様((とりあえず動かすためにmaanigraphプラグインの仕様をそのまま使っていたが、移動すればいいだけなのを忘れていましたorz))だとPlus!では使えないのと互換性が悪いので重要 完了|[[06/09/27>Note/diary/2006-09-27]]|06/09/30|0.2|
|項目の切替(1列目⇔1行目)|maanigraph.inc.phpでは改良という形で初期の仕様から固定変更していたが両方必要だと思うので自由に切り替える事ができる仕様にした。(難しくないしね)|06/09/23|06/09/25|0.1|
|グラフ変更リスト|グラフの種類が多すぎて切替が大変なので追加 完了|06/09/23|06/09/25|0.1|
|グラフ変更リストの表示、非表示制御ボタンやtable_edit2.inc.phpの機能|table_edit2.inc.phpをベースにコードをそのまま移植 完了|06/09/23|06/09/25|0.1|
}}}
*仕様 [#d5d08e69]
-同じページ上の表組みからデータを取得してグラフを作成します。
-項目名に日本語(全角文字)は使えません。
-表組みの書き方
#table_edit2{{{
||aa|aa2|aa3|
|b1|10|20|30|
|b2|11|12|13|
|b3|11|12|13|
}}}
--一列目、一行目が項目になります。
--必ず左上のセルは空白にして置いてください。
-chartsプラグインの記述(1つ目の表組みを指定する場合)
 #charts(table_num=1)
--最初の指定はこれだけでいけると思います。必要に応じてオプションを追加してください。
--グラフタイプを手動で指定する場合、必ず後ろにカンマ(,)を付けて下さい。(例 graph_mod=column,)
--IEと相性が悪いようなのでグラフの表示が崩れている場合は更新を掛けてください。
**オプション [#o3757ec5]
編集で設置できるオプション
#table_edit2{{{
|オプション|説明|引数|内容|h
|table_num|ページ上の表組みを上から数えた数字、3つ目の表を参照したい場合は3を指定|数字||
|setting|設定を変更するフォームの表示・非表示|on|表示(制限ページは表示、凍結ページは非表示)|
|~|~|off|非表示|
|auth_check_off|編集を認証制限しているページに設定変更フォームで変更を可能にする|無し||
|width|横幅をピクセル単位で指定|ピクセル|初期値400|
|height|縦幅をピクセル単位で指定|ピクセル|初期値250|
|bg_color|背景色を変更する|RBG|#(シャープ)はいりません。|
|chart_transition|グラフを表示する時にアニメーションで動作|無し||
|chart_value|グラフの要素の中央に要素数値を表示します|任意の文字|引数の任意文字が無い場合は数値だけ表示|
|xml_read|xml_readを指定することで複数行プラグイン内で指定したxmlオプションを読込みます。「例 #charts(table_num=x,xml_read){{xmlでオプションを指定}}」|xml|指定するオプションは[http://www.maani.us/xml_charts/index.php?menu=Reference Reference]を参考に指定してください。|
|list_page|別ページに作成した表組データを参照する&br;Ver1.3以降|ページ名||
}}}
設定フォームの操作で設置できるオプション
#table_edit2{{
|オプション|説明|引数|内容|h
|graph_mod|グラフの上にリストメニューが出るので、そこで選択してください。|リストで表示されるグラフ||
|change|表組みの行・列参照をチェンジします|0|1行目を基点に|
|~|~|1|1列目を基点に|
|list_mod|設定を変更するフォームの簡易 表示・非表示|open|表示、グラフ右上に×のマークが出ます。|
}}
**define設定 [#w16b8d5f]
-グラフ変更後、変更したグラフの場所に戻る機能ですが、Windows系サーバで不具合が確認されたためVer1.2以降からページに戻る機能のみに設定しています。必要な場合はcharts.inc.phpの先頭部分に記述されているdefine設定値の0を1に変更して下さい。

 define('PLUGIN_CHARTS_ANCHR_JUMP', 0);

*サンプル [#xb439acb]
>テストは[[こちら>experimental/charts.inc.php]]で試せます。


***test table1 [#fdd13414]
#table_edit2(edit=on,table_mod=open){{
|  |2001|2002|2003|2004|2005|h
|Test 1|23|25|32|31|48|
|Test 2|68|22|50|15|67|
|てすと 3|11|67|44|71|58|
}}
***test charts1 [#c7d7b071]
 #charts(table_num=6,auth_check_off,setting=on,graph_mod=3d column,list_mod=open,change=0)

#charts(table_num=6,auth_check_off,setting=on,graph_mod=floating column,list_mod=open,change=0)

***test charts2 [#q3732f8c]
 #charts(table_num=6,graph_mod=3d column,chart_transition,width=300,height=200,bg_color=ff8888)

#charts(table_num=6,graph_mod=3d column,chart_transition,width=300,height=200,bg_color=ff8888,list_mod=close)

***test charts3 [#k4fb6194]
 #charts(table_num=6,graph_mod=column,chart_transition,chart_value=pt)

#charts(table_num=6,graph_mod=column,chart_transition,chart_value=pt)

***test charts4 [#hc712db0]
複数行プラグイン書式でxmlオプションを記入してみる(charts.inc.php Ver0.6)
#expand(470){{{{
 #charts(table_num=6,graph_mod=column,xml_read){{{
 <draw>
 	<text transition="slide_left" delay="1" duration="1" x="0" y="250"  width="250" height="100" h_align="center" v_align="top" rotation="-90"  font="arial" bold="true" size="65" color="4400ff" alpha="90">graph</text> 
 </draw>
 <chart_transition type="drop" delay="1" duration="2" order="series" />
 }}} 
}}}}

#charts(table_num=6,graph_mod=column,xml_read,list_mod=open){{{
<draw>
	<text transition="slide_left" delay="1" duration="1" x="0" y="250"  width="250" height="100" h_align="center" v_align="top" rotation="-90"  font="arial" bold="true" size="65" color="4400ff" alpha="90">graph</text> 
</draw>
<chart_transition type="drop" delay="1" duration="2" order="series" /> 
}}}
***test charts5(charts.inc.php Ver0.7) [#q3a799b6]
#charts(table_num=6,graph_mod=line,xml_read,bg_color=e6e6ff,list_mod=open,charts_num=5,change=0){{{
   <chart_type>
      <string>line</string>
      <string>column</string>
      <string>column</string>
   </chart_type>
   <legend_transition type='slide_right' delay='1' duration='1' /> 
<draw>
	<text transition="slide_left" delay="1" duration="1" x="0" y="250"  width="250" height="100" h_align="center" v_align="top" rotation="-80"  font="arial" bold="true" size="40" color="9b9bff" alpha="90">taru memo</text> 
</draw>
<chart_transition type="drop" delay="1" duration="2" order="series" />
}}}
*ダウンロード [#pfdfb91f]
-http://www.maani.us/charts/index.phpの左メニューからDownloadを選び PHP/SWF Charts 4.5 をダウンロードしてください。
-ダウンロードした圧縮ファイルを展開して、その中のcharts.swf,charts_libraryをskinフォルダに置いてください。charts.php(Ver0.5以降はcharts.phpを使わない形式に変更しました。)はpluginフォルダに置いてください。
-下に添付されているcharts.inc.php.x.xはダウンロード後、右側の数字を消してcharts.inc.phpにリネーム後、pluginフォルダに置いてください。
-設定を表示するときのマークはこちらで作ったものなので(&ref(http://taru.s223.xrea.com/wiki/image/plus/chart.png);)を保存してください。設置フォルダは/image/plus/です。

#table_edit2(,table_mod=close){{{
|SIZE(12):|SIZE(12):|SIZE(12):|SIZE(12):|c
|~ファイル|~Ver|~日付|~コメント|h
|&ref(charts.inc.php.0.4+);|0.4|'06/10/31|グラフ内の標準フォントが日本語に対応していないため、一部ラベルに日本語対応のフォントを指定しました。|
|&ref(charts.inc.php.0.4);|0.4|06/10/01|設定フォームを表示するマークに最初&ref(http://taru.s223.xrea.com/wiki/image/list.png);を使っていたのですが、流石にリストマークじゃまずいので新しく作った画像&ref(http://taru.s223.xrea.com/wiki/image/plus/chart.png);を利用するように変更しました。|
|&ref(charts.inc.php.0.3);|0.3|06/10/01|タグの追加でオプションを増やせる事がわかったのでchart_transitionとchart_valuを追加しました。バグを少し修正|
}}}

-実験バージョン(複数行プラグイン書式で与えた情報をそのままSWFに引渡します。SWFがそのまま情報吐き出すわけでは無いのでXSSの問題は無いと判断したのですが、フィルタを作るべきでしょうか?)

#table_edit2(form=text|text|text|textarea,table_mod=open){{{
|SIZE(12):|SIZE(12):|SIZE(12):|SIZE(12):|c
|~ファイル|~Ver|~日付|~コメント|h
|&ref(charts.inc.php.1.4.1.zip.tgz);|1.4|'09/07/13| 別ページに作成した表組みデータを参照する機能を使った場合、複数行プラグイン書式を利用したxmlオプション機能が利用できない問題に対応しました。&br; &color(Red){2重に圧縮されています。tgz→zipと解凍してください。};|
|&ref(charts.inc.php.1.3.zip.tgz);|1.3|'07/11/15| 別ページに作成した表組みデータを参照する機能を追加しました。&br; &color(Red){2重に圧縮されています。tgz→zipと解凍してください。};|
|&ref(charts.inc.php.1.2.zip.tgz);|1.2|'07/11/14| グラフ変更後、アンカーへ飛ぶ処理はサーバー環境によってうまく機能しないため、&br;define('PLUGIN_CHARTS_ANCHR_JUMP', 0);を追加してページに戻る処理だけをするように変更しました。&br; $scriptを使うのを止めget_script_uri()を使うようにしました。&br; &color(Red){2重に圧縮されています。tgz→zipと解凍してください。};|
|&ref(charts.inc.php.1.1.zip.tgz);|1.1|'07/10/13|auth_check_offを設定していると凍結しても凍結が有効にならない問題に対応。&br;&color(Red){2重に圧縮されています。tgz→zipと解凍してください。};|
|&ref(charts.inc.php.1.0.zip.tgz);|1.0|'07/07/01|EUC版と本家1.4.7対応用のコードをtable_edit2.inc.phpからコピペしただけです。&br;i18n利用の場合は0.9で十分です。&br;&color(Red){2重に圧縮されています。tgz→zipと解凍してください。};|
|&ref(charts.inc.php.0.9);|0.9|'07/01/11|diary/2007-01-08で行ったXHTMLへの無理やり対応バージョンです。&br;とりあえず問題無く動作しているみたいなので、アップしてみました。|
|&ref(charts.inc.php.0.8);|0.8|'06/10/31|グラフ内の標準フォントが日本語に対応していないため、一部ラベルに日本語対応のフォントを指定しました。|
|&ref(charts.inc.php.0.7);|0.7|'06/10/12|変更しようと思っていて、動作に影響しないから放置していた個所を幾つか変更しました。動作は0.6と同じです。|
|&ref(charts.inc.php.0.6);|0.6|06/10/09|html定義の所で悲しいミスをしていました。「"」の付け忘れです。チェックをIEで行っていた為、このミスを補正するというふざけた機能を発揮しOperaとFireFoxで確認するまで気づかないという事態に陥っていました。IEはほんとだめぽorz|
|&ref(charts.inc.php.0.5);|0.5|06/10/08|複数行プラグイン書式を利用してxmlオプションを追加できるようにしました。charts.phpを使わないでhtmlをプラグイン内で定義しました。(ダウンロードは[http://www.maani.us/xml_charts/index.php?menu=Download XML/SWF Charts 4.5]からしても問題無いでしょう)|
}}}
*コメント [#b52be7fb]
- テストカキコキ -- [[taru]] &new{2006-10-03 (火) 23:17:15};
- XHTMLに対応させるためobjectタグからembedタグを抜き取る。
--150行目付近

#expand(700){{{{
#code(diff){{{
	$html = <<<EOD
-<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
-	codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
+<object 
+	data="$flash_file?library_path=$library_path&amp;php_source=$php_source$license"
+	type="application/x-shockwave-flash"
	
	width="$width" height="$height" id="charts$count">
		<param name="movie"   value="$flash_file?library_path=$library_path&amp;php_source=$php_source$license" />
		<param name="quality" value="high" />
		<param name="bgcolor" value="#$bg_color" />$transparent_html
-		<embed src="$flash_file?library_path=$library_path&amp;php_source=$php_source$license" quality="high"
-			 bgcolor="#$bg_color" width="$width" height="$height" name="charts" swliveconnect="true"
-			 $transparent_opt type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
-		</embed>
 </object>
}}}
}}}}
 	 -- [[taru]] &new{2007-01-12 (金) 00:56:40};
- 別ページのテーブルを読み込んだ際、XML表記が効かなくなるようなのですが… -- [[kaims]] &new{2009-07-07 (火) 16:19:44};
- 確認しました。ご報告ありがとうございます。取り急ぎ修正してみましたのでご確認お願いします。->&ref(charts.inc.php.1.4.1.zip.tgz); -- [[taru]] &new{2009-07-08 (水) 12:08:51};
- 解凍後のファイルの日付が20071115で、中身も特に変化が無いようでした…ご確認いただけますか? すみません… -- [[kaims]] &new{2009-07-09 (木) 09:54:34};
- 間違えていました。すみません (^^; 。再度同名にてアップしなおしました。 -- [[taru]] &new{2009-07-09 (木) 10:11:26};
- 無事表示されました。素早いご対応、ありがとうございました(^^ -- [[kaims]] &new{2009-07-09 (木) 13:43:37};

#comment

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes