|
Spring-MVCの散歩道 > 応用の森(総合テクニック編) > ツリー階層構造表現
|
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Spring-MVCの散歩道 応用の森(生物分類階層Tree)</title>
<meta charset="UTF-8" />
<meta name="Robots" content="index, follow" />
<meta name="keywords" th:attr="content=${siteKeyword}" content="Eclipse,Spring-MVC,Thymeleaf,myBatis,Java,JavaScript,jQuery,JSON" />
<meta name="description" content="Spring-MVCアプリケーション開発における、ジャンル別小技集です" />
<link rel="shortcut icon" href="./images/sPromenade_icon.ico" />
<link rel="stylesheet" href="./css/style.css" />
<link rel="stylesheet" href="./css/tree.css" />
<!--[if lt IE 9]>
<script type="text/javascript" src="./js/jquery-1.11.2.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script type="text/javascript" src="./js/jquery-2.1.3.js"></script>
<!--<![endif]-->
<script type="text/javascript" src="./js/jquery.ui.1.11.4/jquery-ui.js"></script>
<script type="text/javascript" src="./js/capture.js"></script>
<script type="text/javascript" src="./js/child.js"></script>
<script type="text/javascript" src="./js/header.js"></script>
</head>
<script type="text/javascript">
<!--
$(function(){
//「生物分類リストノード」クリック時の処理
/**
* 元々のHTMLに、jQueryで要素を追加した場合
* その要素に対して、$(selector).click() イベントを定義しても
* イベントをキャッチできない
* そんな場合は、$(document).on('click', '.selector', function (e) {
* を使おう
*/
$(document).on('click', '.ev_Expand', function (e) {
//自分の親タグの name属性を取得する
var data = $(this).parent().attr("name").split('_');
//自分の親タグの name属性(leaf)が"1" (子ノードなし)は何もしない
//data[0] : leaf (ノード末端の判断)
//data[1] : rute(経路)
//leaf が"1" (子ノードなし)は何もしない
if(data[0] == "1") return;
//クリックされたアイコンorノード名のid要素を取得
var id = $(this).attr('id').split('_');
var parent = id[1]; //code
//検索パラメータをJSON化
var param = {
"parent" : parent, //親のcode
"rute" : data[1] //経路
};
var div_obj = $('#div_'+parent);
var img_obj = $('#img_'+parent);
//現在のアイコンファイル名を保持
var img_name = $(img_obj).attr("src");
var html = $(div_obj).html();
if(html.length ==0) { //ノードは閉じている⇒展開する
//Ajaxを実行する(Over 1.8系)
$.ajax({
url : "./creatureclass.xhtml",
dataType: "html", //サーバから返却されるデータの型(xml, html, json, jsonp, text ...
type : "post", //post, get
data : JSON.stringify(param),
}).done(function(resData) { //callback data:response
$('#div_'+parent).html(resData); //検索結果(creature_child.html)を子ノードDIVタグに描画
//アイコンの変更(collapse_l/collapse_l_b)
var change;
if(img_name.indexOf("expand.gif") >=0) {
change = "./images/tree/collapse.gif";
} else {
change = "./images/tree/collapse_l_b.gif";
}
$(img_obj).attr("src",change);
$(img_obj).attr({"alt":"Collapse","title":"Collapse"});
//描画が終わったら親フレームの高さをコンテンツに合わせて伸縮する
var oParent = window.parent;
if(window != oParent){ //親フレーム あり
var h = $("#heder").height() + $("#main_contents").height() + 50;
//親フレーム(iframe)の高さをAjast
oParent.$("#main_frame").height(h);
}
}).fail(function(resData) {
//・通信に失敗したとき
//alert("personalajxedit:"+status);
});
} else { //ノードは展開している ⇒縮退する
$(div_obj).html(""); //innerHTML を破棄する
//アイコンの変更(expand/expand_l_b)
var change;
if(img_name.indexOf("collapse.gif") >=0) {
change = "./images/tree/expand.gif";
} else {
change = "./images/tree/expand_l_b.gif";
}
$(img_obj).attr("src",change);
$(img_obj).attr({"alt":"Expand","title":"Expand"});
}
});
});
//-->
</script>
</head>
<body class="in_background">
<table class="treebody">
<tr>
<td>
<div class="treelistn" id="main_contents">
<!-- ノード情報 -->
<div name="0_root">
<!-- +- アイコンを表示する Expand/Collapse Link -->
<img class="ev_Expand iconpointer" id="img_root" src="./images/tree/expand.gif" alt="Expand" title="Expand" border="0" />
<!-- CategoryName Link -->
<span class="ev_Expand iconpointer" id="lnk_root">生物分類リスト</span>
<!-- 子Tree描画エリア(ここにAjaxによる検索結果が差し込まれます) -->
<div class="treechdlist" id="div_root"></div>
</div>
</div>
</td>
</tr>
</table>
</body>
</html>
|