root/SPARQLBuilderWWW/web/classselect.js @ 262

リビジョン 262, 9.8 KB (コミッタ: lenz, 9 年 前)

クラス一覧に現れるクラスがエンドポイント固定だったものを全エンドポイントに

上記変更に伴いエンドポイントごとにまとめて表示する処理を追記

  • 属性 svn:mime-type の設定値 text/plain
Rev行番号 
[258]1
2// 繝壹�繧ク隱ュ縺ソ霎シ縺ソ螳御コ�ャ。隨ャ
[253]3$(function(){
4
[258]5        // 繧ッ繝ゥ繧ケ驕ク謚樒畑div縺ョ繧ケ繧ッ繝ュ繝シ繝ォ險ュ螳�
[253]6        scrolldiv();
7
[258]8        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ隱ュ縺ソ霎シ縺ソ
[253]9        loadStartClass();
10
[258]11        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繝サ繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ讀懃エ「逕ィ繝�く繧ケ繝医�繝�け繧ケ縺昴l縺槭l縺ォ縺、縺�※
12        // 繧ュ繝シ縺梧款縺輔l縺溘→縺�
13        $('#searchstarttext, #searchendtext').keypress(function(e) {
14                // 繧ィ繝ウ繧ソ繝シ繧ュ繝シ縺縺」縺溘ifalse繧定ソ斐☆�医ユ繧ュ繧ケ繝医�繝�け繧ケ縺ョ繝�ヵ繧ゥ繝ォ繝域ゥ溯�繧偵く繝」繝ウ繧サ繝ォ��
[253]15                if ( e.which == 13 ) {
16                        return false;
17                }
18        });
[258]19        // 繧ュ繝シ縺梧款縺輔l縲�屬縺輔l縺滓凾�磯屬縺輔l縺滓凾繧偵う繝吶Φ繝医ワ繝ウ繝峨Λ縺ォ縺励↑縺�→縺昴�譎ょ�蜉帙@縺滓枚蟄励′蜿肴丐縺輔l縺ェ縺�シ�
20        $('#searchstarttext, #searchendtext').keyup(function(e) {
21                // 讀懃エ「繧定。後≧
[253]22                search();
23        });
24});
25
[258]26// 繧ッ繝ゥ繧ケ驕ク謚樒畑div縺ョ繧ケ繧ッ繝ュ繝シ繝ォ險ュ螳�
[253]27function scrolldiv(){
[262]28
29        // 繧ィ繝ウ繝峨�繧、繝ウ繝�RI逕ィ譁�ュ怜�
30        var epuri = "";
31
32        // 繧ィ繝ウ繝峨�繧、繝ウ繝郁。後r蜑企勁
33        $('.endpointrow').remove();
34
35        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繧サ繝ォ蛻�ケー繧願ソ斐@
36        $('.startclasscell').each(function(){
37                // 繝弱�繝偵ャ繝医け繝ゥ繧ケ縺ョ蟄舌〒縺ェ縺代l縺ー
38                if(!$(this).parent().hasClass('nohit')){
39                        // 縺薙�繧ッ繝ゥ繧ケ縺ョ繧ィ繝ウ繝峨�繧、繝ウ繝医′蜑阪�陦後→驕輔▲縺溘i
40                        if(epuri != $(this).find('.endpointuri').attr('title')){
41                                // 繧ィ繝ウ繝峨�繧、繝ウ繝�RI繧呈峩譁ー
42                                epuri = $(this).find('.endpointuri').attr('title');
43                                // 繧ィ繝ウ繝峨�繧、繝ウ繝郁。後r霑ス蜉
44                                $(this).parent().before($('<tr class="endpointrow"><th>' + epuri + '</th></tr>'));
45                        }
46                }
47        });
48
49        // 繧ィ繝ウ繝峨け繝ゥ繧ケ繧サ繝ォ縺ォ縺、縺�※蜷梧ァ倥�蜃ヲ逅�
50        epuri = "";
51        $('.endclasscell').each(function(){
52                if(!$(this).parent().hasClass('nohit')){
53                        if(epuri != $(this).find('.endpointuri').attr('title')){
54                                epuri = $(this).find('.endpointuri').attr('title');
55                                $(this).parent().before($('<tr class="endpointrow"><th>' + epuri + '</th></tr>'));
56                        }
57                }
58        });
59
[258]60        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ荳€隕ァ縺ョ繝��繝悶Ν縺ィ繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ讀懃エ「逕ィ繝�く繧ケ繝医�繝�け繧ケ谺��鬮倥&縺ョ蜷郁ィ医′謖�ョ壽ク医∩縺ョ蟾ヲ繧ォ繝ゥ繝縺ョ鬮倥&繧医j螟ァ縺阪¢繧後�
61        if(($('div.startclass table').height() + $('div.searchstart').height()) > $('div.left').height()){
62                // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ荳€隕ァ逕ィdiv縺ョ邵ヲ繧ケ繧ッ繝ュ繝シ繝ォ險ュ螳壹r繧ェ繝ウ縺ォ
63                $('div.startclass').css('overflow-y', 'scroll');
64                // 鬮倥&繧貞キヲ繧ォ繝ゥ繝縺九i讀懃エ「逕ィ繝�く繧ケ繝医�繝�け繧ケ谺�→20px��addingテ��牙シ輔>縺溷€、縺ォ縺吶k
65                $('div.startclass').css('height', ($('div.left').height() - $('div.searchstart').height() - 20) + 'px');
66        // 蟆上&縺代l縺ー
[253]67        }else{
[258]68                // 邵ヲ繧ケ繧ッ繝ュ繝シ繝ォ繧偵が繝�
69                $('div.startclass').css('overflow-y', 'hidden');
[253]70        }
[258]71        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ォ縺、縺�※蜷梧ァ倥�蜃ヲ逅�
72        if(($('div.endclass table').height() + $('div.searchend').height()) > $('div.right').height()){
73                $('div.endclass').css('overflow-y', 'scroll');
74                $('div.endclass').css('height', ($('div.right').height() - $('div.searchend').height() - 20) + 'px');
[253]75        }else{
[258]76                $('div.endclass').css('overflow-y', 'hidden');
[253]77        }
78}
79
[258]80// 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ隱ュ縺ソ霎シ縺ソ
[253]81function loadStartClass(){
[262]82        // SPARQL Builder縺ョ繧ケ繧ソ繝シ繝医け繝ゥ繧ケ荳€隕ァ蜿門セ礼畑API繧「繝峨Ξ繧ケ繧剃ス懈�
83        var url = "http://www.sparqlbuilder.org/api/clist";
[258]84        // AJAX髢句ァ�
[253]85        $.ajax({
[258]86                // 繝。繧ス繝�ラ繧ソ繧、繝暦シ壹ご繝�ヨ
[253]87                type : "GET",
[258]88                // URL�壼�縺サ縺ゥ繧サ繝�ヨ縺励◆繧ゅ�
[253]89                url : url,
[258]90                // 蜿門セ玲�蜉溘@縺溘i
[253]91                success : function(data) {
[258]92                        // 蟶ー縺」縺ヲ縺阪◆邨先棡繧谷SON縺ォ繝代�繧ケ縺怜叙蠕�
[253]93                        var list = eval(data);
[258]94                        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ荳€隕ァ驛ィ蛻�r遨コ縺ォ
[253]95                        $('div.startclass').empty();
96
[258]97                        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ繝��繝悶Ν繧剃ス懈�
[253]98                        var startclasstable = $('<table>');
99
[262]100                        // 邨先棡縺ョ繧ィ繝ウ繝峨�繧、繝ウ繝医�蛻�□縺醍ケー繧願ソ斐@
101                        for(var epuri in list){
102                                // 繧ィ繝ウ繝峨�繧、繝ウ繝亥�縺ョ繧ッ繝ゥ繧ケ繝ェ繧ケ繝医r蜿門セ�
103                                var classes = list[epuri];
104                                // 蜿門セ励@縺溘け繝ゥ繧ケ繝ェ繧ケ繝医�謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
105                                for (var i = 0; i < classes.length; ++i) {
106                                        // 蛻励r霑ス蜉
107                                        startclasstable.append('<tr><td class="startclasscell"><span class="endpointuri" title="' + epuri + '"></span><span class="startclassuri" title="' + classes[i]['uri'] + '">' + classes[i]['label'] + ' (' + classes[i]['number'] + ')' + '</span></td></tr>');
108                                }
[253]109                        }
110
[258]111                        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ荳€隕ァ縺ォ霑ス蜉
[253]112                        $('div.startclass').append(startclasstable);
113
[258]114                        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ繝ェ繧ッ繧ィ繧ケ繝域ゥ溯�繧呈怏蜉ケ蛹�
[253]115                        requestEndClass();
[258]116                        // 繧ッ繝ゥ繧ケ驕ク謚樒畑div縺ョ繧ケ繧ッ繝ュ繝シ繝ォ險ュ螳�
[253]117                        scrolldiv();
118                }
119        });
120}
121
[258]122// 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ繝ェ繧ッ繧ィ繧ケ繝域ゥ溯�繧呈怏蜉ケ蛹�
[253]123function requestEndClass(){
[258]124        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ逕ィ縺ョ蜷ФRI縺ォ縺、縺�※
125        $('.startclassuri').each(function(){
126                // 迴セ蝨ィ縺ョ繧ッ繝ェ繝�け繧、繝吶Φ繝医r蜑企勁�亥、夐㍾蛹門ッセ遲厄シ�
[253]127                $(this).unbind('click');
[258]128                // 繧ッ繝ェ繝�け繧、繝吶Φ繝医�霑ス蜉
[253]129                $(this).click(function(){
[258]130
131                        // 驕ク謚樊ク医∩繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ繧ッ繝ゥ繧ケ縺後≠繧後�髯、蜴サ
132                        $('.selectedstart').each(function(){
133                                $(this).removeClass('selectedstart');
134                        });
135                        // 繧ッ繝ェ繝�け縺輔l縺溯ヲ∫エ縺ォ驕ク謚樊ク医∩繧ケ繧ソ繝シ繝医け繝ゥ繧ケ繧定ソス蜉
136                        $(this).addClass('selectedstart');
137
138                        // 繧ィ繝ウ繝峨け繝ゥ繧ケ荳€隕ァ驛ィ蛻�r遨コ縺ォ
[253]139                        $('.endclass').empty();
[258]140                        // AJAX繝ュ繝シ繝�ぅ繝ウ繧ー逕サ蜒上r霑ス蜉
[253]141                        $('.endclass').append('<img src="images/ajax-loader.gif">');
[258]142
143                        // 繧ッ繝ェ繝�け縺輔l縺溘け繝ゥ繧ケ縺ョ繧ィ繝ウ繝峨�繧、繝ウ繝医r蜿門セ�
144                        var ep = $(this).parent().children('.endpointuri').attr('title');
145                        // 繧ッ繝ェ繝�け縺輔l縺溘け繝ゥ繧ケ縺ョURI繧貞叙蠕�
146                        var sc = $(this).attr('title');
147                        // SPARQL Builder縺ョ繧ィ繝ウ繝峨け繝ゥ繧ケ荳€隕ァ蜿門セ礼畑API繧「繝峨Ξ繧ケ繧剃ス懈�
[253]148                        var url = "http://www.sparqlbuilder.org/api/clist?ep=" + encodeURIComponent(ep) + '&class=' + encodeURIComponent(sc);
[258]149                        // AJAX髢句ァ�
[253]150                        $.ajax({
[258]151                                // 繝。繧ス繝�ラ繧ソ繧、繝暦シ壹ご繝�ヨ
[253]152                                type : "GET",
[258]153                                // URL�壼�縺サ縺ゥ繧サ繝�ヨ縺励◆繧ゅ�
[253]154                                url : url,
[258]155                                // 蜿門セ玲�蜉溘@縺溘i
[253]156                                success : function(data) {
[258]157                                        // 蟶ー縺」縺ヲ縺阪◆邨先棡繧谷SON縺ォ繝代�繧ケ縺怜叙蠕�
[253]158                                        var list = eval(data);
[258]159                                        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ荳€隕ァ驛ィ蛻�r遨コ縺ォ
[253]160                                        $('.endclass').empty();
[258]161
162                                        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョ繝��繝悶Ν繧剃ス懈�
[253]163                                        var endclasstable = $('<table>');
164
[258]165                                        // 蜿門セ励@縺溘け繝ゥ繧ケ繝ェ繧ケ繝医�謨ー縺縺醍ケー繧願ソ斐@縺ェ縺後i
[253]166                                        for (var i = 0; i < list.length; ++i) {
[258]167                                                // 蛻励r霑ス蜉
[253]168                                                endclasstable.append('<tr><td class="endclasscell"><span class="endpointuri" title="' + ep + '"></span><span class="startclassuri" title="' + sc + '"></span><span class="endclassuri" title="' + list[i]['uri'] + '">' + list[i]['label'] + ' (' + list[i]['number'] + ')' + '</span></td></tr>');
169                                        }
170
[258]171                                        // 繧ィ繝ウ繝峨け繝ゥ繧ケ荳€隕ァ縺ォ霑ス蜉
[253]172                                        $('.endclass').append(endclasstable);
173
[258]174                                        // SPARQL Builder縺ョ繝ェ繧ッ繧ィ繧ケ繝域ゥ溯�繧呈怏蜉ケ蛹�
[253]175                                        requestSPARQLBuilder();
[258]176                                        // 繧ッ繝ゥ繧ケ驕ク謚樒畑div縺ョ繧ケ繧ッ繝ュ繝シ繝ォ險ュ螳�
177                                        scrolldiv();
[253]178                                }
179                        });
180                });
181        });
182}
183
[258]184// SPARQL Builder縺ョ繝ェ繧ッ繧ィ繧ケ繝域ゥ溯�繧呈怏蜉ケ蛹�
[253]185function requestSPARQLBuilder(){
[258]186
187        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ョURI縺昴l縺槭l縺ォ縺、縺�※
188        $('.endclassuri').each(function(){
189                // 繧ッ繝ェ繝�け繧、繝吶Φ繝医�蜑企勁�亥、夐㍾蛹門撫鬘悟ッセ遲厄シ�
[253]190                $(this).unbind('click');
[258]191                // 繧ッ繝ェ繝�け繧、繝吶Φ繝医�霑ス蜉
[253]192                $(this).click(function(){
[258]193
194                        // 驕ク謚樊ク医∩繧ィ繝ウ繝峨け繝ゥ繧ケ繧帝勁蜴サ
195                        $('.selectedend').each(function(){
196                                $(this).removeClass('selectedend');
197                        });
198                        // 莉雁屓縺ョ隕∫エ繧帝∈謚樊ク医∩繧ィ繝ウ繝峨け繝ゥ繧ケ縺ォ縺吶k
199                        $(this).addClass('selectedend');
200
201                        // 繧ィ繝ウ繝峨�繧、繝ウ繝�RL繝サ繧ケ繧ソ繝シ繝医け繝ゥ繧ケURI繝サ繧ィ繝ウ繝峨け繝ゥ繧ケURI繧貞叙蠕�
202                        var ep = $(this).parent().children('.endpointuri').attr('title');
203                        var sc = $(this).parent().children('.startclassuri').attr('title');
204                        var ec = $(this).attr('title');
205
206                        // SPARQL Builder縺ョ蜻シ縺ウ蜃コ縺礼畑URL繧剃ス懈�
[253]207                        var url = "http://www.sparqlbuilder.org/?ep=" + encodeURIComponent(ep) + '&st=' + encodeURIComponent(sc) + '&en=' + encodeURIComponent(ec);
208
[258]209                        // 荳翫〒菴懈�縺励◆URL繧呈眠縺励>繧ヲ繧」繝ウ繝峨え縺ァ髢九¥
[253]210                        window.open(url);
211                });
212        })
213}
214
[258]215// URI縺ョ讀懃エ「
[253]216function search(){
[258]217        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ逕ィ讀懃エ「谺��蛟、縺檎ゥコ縺ェ繧�
218        if($('#searchstarttext').val() == ''){
219                // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ繝弱�繝偵ャ繝医け繝ゥ繧ケ繧貞炎髯、
[262]220                $('.startclass .nohit').removeClass('nohit');
[258]221        // 遨コ縺ァ縺ェ縺代l縺ー
[253]222        }else{
[258]223                // 蜈・蜉帙&繧後◆蛟、繧貞ー乗枚蟄励↓縺励※蜿門セ�
224                var keyword = $('#searchstarttext').val().toLowerCase();
225                // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ荳€隕ァ縺昴l縺槭l縺ォ縺、縺�※
[253]226                $('.startclasscell').each(function(){
[258]227                        // 繧ケ繧ソ繝シ繝医け繝ゥ繧ケ縺ョ陦ィ遉コ蜷埼Κ蛻�r蟆乗枚蟄励↓縺励※蜿門セ�
[253]228                        var label = $(this).children('.startclassuri').text().toLowerCase();
[258]229                        // 蜿門セ励@縺滓枚蟄怜�縺ォ讀懃エ「繝ッ繝シ繝峨′蜷ォ縺セ繧後※縺�k縺九メ繧ァ繝�け�井ク。譁ケ蟆乗枚蟄励↓螟画鋤貂医∩縺ェ縺ョ縺ァ螟ァ譁�ュ怜ー乗枚蟄励r蝠上o縺ェ縺�シ�
[253]230                        if(label.indexOf(keyword) != -1){
[258]231                                // 蜷ォ縺セ繧後※縺�l縺ー繝弱�繝偵ャ繝医け繝ゥ繧ケ繧帝勁蜴サ
[253]232                                $(this).parent().removeClass('nohit');
233                        }else{
[258]234                                // 蜷ォ縺セ繧後※縺�↑縺代l縺ー繝弱�繝偵ャ繝医け繝ゥ繧ケ繧定ソス蜉�磯撼陦ィ遉コ縺ォ縺ェ繧具シ�
[253]235                                $(this).parent().addClass('nohit');
236                        }
237                });
238        }
[258]239        // 繧ィ繝ウ繝峨け繝ゥ繧ケ縺ォ縺、縺�※蜷梧ァ倥�蜃ヲ逅�
240        if($('#searchendtext').val() == ''){
[262]241                $('.endclasscell .nohit').removeClass('nohit');
[253]242        }else{
[258]243                var keyword = $('#searchendtext').val().toLowerCase();
[253]244                $('.endclasscell').each(function(){
245                        var label = $(this).children('.endclassuri').text().toLowerCase();
246                        if(label.indexOf(keyword) != -1){
247                                $(this).parent().removeClass('nohit');
248                        }else{
249                                $(this).parent().addClass('nohit');
250                        }
251                });
252        }
253
[258]254        // 30ms蠕�▲縺ヲ縺九i繧ケ繧ッ繝ュ繝シ繝ォ蜀阪そ繝�ヨ�域緒逕サ螟画峩縺ォ縺九°繧区凾髢薙r閠����
[253]255        setTimeout('scrolldiv()',30);
256}
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。