Mercurial > hg > audiodb
comparison examples/browser/web/js/browser.js @ 640:901803e1305f
First instance of audioDB browser code.
author | mas01mj |
---|---|
date | Thu, 08 Oct 2009 11:19:11 +0000 |
parents | |
children | 3e25f26b6a27 |
comparison
equal
deleted
inserted
replaced
639:2eaea1afd6b3 | 640:901803e1305f |
---|---|
1 var sparqler = new SPARQL.Service("http://harrison/sparql/"); | |
2 | |
3 sparqler.setPrefix("mo", "http://purl.org/ontology/mo/"); | |
4 sparqler.setPrefix("foaf", "http://xmlns.com/foaf/0.1/"); | |
5 sparqler.setPrefix("dc", "http://purl.org/dc/elements/1.1/"); | |
6 | |
7 sparqler.setRequestHeader("Accept", "application/json"); | |
8 | |
9 var resultsTable; | |
10 | |
11 $(document).ready(function() { | |
12 $("#search").click(search) | |
13 $("#spinner").hide(); | |
14 resultsTable = $('#results').dataTable({"bFilter":false,"bLengthChange":false,"bPaginate":true, | |
15 "fnRowCallback": function(nRow, aData, iDisplayIndex) | |
16 { | |
17 $(nRow).attr("typeof", "mo:Track"); | |
18 return nRow; | |
19 }, | |
20 "fnDrawCallback": function () | |
21 { | |
22 $(".artist_name").click(function(event) { searchArtist($(this).attr("href")); return false; }); | |
23 $(".album_name").click(function(event) { searchAlbum($(this).attr("href")); return false; }); | |
24 } | |
25 }); | |
26 | |
27 $("#results tbody").click(function(event) { | |
28 $(resultsTable.fnSettings().aoData).each(function (){ | |
29 $(this.nTr).removeClass('row_selected'); | |
30 }); | |
31 $(event.target.parentNode).addClass('row_selected'); | |
32 }); | |
33 | |
34 }); | |
35 | |
36 function search(event) { | |
37 | |
38 var trackSearchString = $("#tracksearch").val(); | |
39 var artistSearchString = $("#artistsearch").val(); | |
40 | |
41 if(trackSearchString.length == 0 && artistSearchString.length == 0) | |
42 { | |
43 resultsTable.fnClearTable(); | |
44 return; | |
45 } | |
46 | |
47 var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {"; | |
48 | |
49 queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name"; | |
50 | |
51 if(artistSearchString.length > 0) | |
52 { | |
53 queryString += ' FILTER regex(?artist_name, "'+artistSearchString+'", "i")'; | |
54 } | |
55 else | |
56 { | |
57 queryString += "."; | |
58 } | |
59 | |
60 queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title"; | |
61 | |
62 if(trackSearchString.length > 0) | |
63 { | |
64 queryString += ' FILTER regex(?track_title, "'+trackSearchString+'", "i")'; | |
65 } | |
66 else | |
67 { | |
68 queryString += "."; | |
69 } | |
70 | |
71 queryString += " }"; | |
72 | |
73 performSearch(queryString); | |
74 } | |
75 | |
76 function searchArtist(id) { | |
77 var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {"; | |
78 queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name"; | |
79 queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title."; | |
80 queryString += " FILTER(sameTerm(?maker, <"+id+">))"; | |
81 queryString += " }"; | |
82 performSearch(queryString); | |
83 } | |
84 | |
85 function searchAlbum(id) { | |
86 var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {"; | |
87 queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name"; | |
88 queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title."; | |
89 queryString += " FILTER(sameTerm(?album, <"+id+">))"; | |
90 queryString += " }"; | |
91 performSearch(queryString); | |
92 } | |
93 | |
94 | |
95 function performSearch(queryString) { | |
96 $("#spinner").show(); | |
97 $("#query").text(queryString); | |
98 var query = sparqler.createQuery(); | |
99 query.query(queryString, {failure: function(xhr) { alert("Bad response! "+xhr.responseText) }, success: displayResults}); | |
100 } | |
101 | |
102 function displayResults(json) { | |
103 resultsTable.fnClearTable(); | |
104 if(json) { | |
105 | |
106 var bindings = json.results.bindings; | |
107 for(var i=0; i<bindings.length; i++) | |
108 { | |
109 var artistEl = $('<div />'); | |
110 var artistLink = $('<a/>'); | |
111 artistEl.append(artistLink); | |
112 artistLink.attr("href", bindings[i].maker.value); | |
113 artistLink.attr("rel", "foaf:maker"); | |
114 artistLink.addClass("artist_name"); | |
115 artistLink.append(bindings[i].artist_name.value); | |
116 | |
117 var albumEl = $('<div />'); | |
118 var albumLink = $('<a/>'); | |
119 albumEl.append(albumLink); | |
120 albumLink.attr("href", bindings[i].album.value); | |
121 albumLink.attr("rel", "dc:title"); | |
122 albumLink.addClass("album_name"); | |
123 albumLink.append(bindings[i].album_title.value); | |
124 | |
125 resultsTable.fnAddData([artistEl.html(), bindings[i].track_title.value, bindings[i].tracknum.value, albumEl.html()]); | |
126 } | |
127 | |
128 } | |
129 $("#spinner").hide(); | |
130 } |