Changeset 614
- Timestamp:
- 07/29/10 20:23:44 (14 years ago)
- Location:
- MDService2/trunk/MDService2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
MDService2/trunk/MDService2/WebContent/index.jsp
r596 r614 11 11 <link href="style/metares.css" type="text/css" rel="stylesheet"> 12 12 <link href="style/cmdi.css" type="text/css" rel="stylesheet"> 13 <link href="style/query.css" type="text/css" rel="stylesheet"> 14 <link href="style/jquery/jquery-textboxlist/TextboxList.css" rel="stylesheet" type="text/css"> 13 15 <link href="style/jquery/jquery-autocomplete/jquery.autocomplete.css" rel="stylesheet" type="text/css"> 14 16 17 18 <script src="scripts/jquery/js/jquery-1.3.2.min.js" type="text/javascript"></script> 15 19 <script src="scripts/jquery/js/jquery-1.4.2.js" type="text/javascript"></script> 16 20 <script src="scripts/jquery/js/jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script> 21 22 23 <script src="scripts/jquery/jquery-textboxlist/GrowingInput.js" type="text/javascript"></script> 24 <!-- 25 <script src="scripts/jquery/jquery-textboxlist/TextboxList.js" type="text/javascript"></script> 26 27 --> 28 17 29 <script src="scripts/jquery/jquery-treeview/jquery.treeview.js" type="text/javascript"></script> 18 30 <script src="scripts/jquery/jquery-autocomplete/jquery.autocomplete.js" type="text/javascript"></script> 31 32 <script src="scripts/mdservice_searchclause.js" type="text/javascript"></script> 19 33 <script src="scripts/mdservice_model.js" type="text/javascript"></script> 20 34 <script src="scripts/mdservice2_ui.js" type="text/javascript"></script> 35 21 36 22 37 </head> … … 36 51 <h2>Terms</h2> 37 52 <div id="terms" class="block"> 38 <div id="tmp_profiles" visible="false">53 <div id="tmp_profiles"> 39 54 40 55 </div> … … 74 89 75 90 <s:form action="searchretrieve"> 76 <s:textfield id="srquery" name="query" label="Query" size="50"/> 77 <s:select label="Collections" size="1" 78 headerKey="-1" headerValue="" 79 list="#{'1':'all'}" 80 name="collection_selection" /> 91 <!-- <s:textfield id="srquery" name="query" label="Query" size="50"/>--> 92 <label for="_query">Query:</label> 93 <s:textfield id="query_list" name="_query" /> 94 <s:textarea id="query_area" name="_query" cols="60" rows="3" /> 95 <s:label id="q-button" value="Click to use PLAIN TEXT" /> 96 <s:textarea label="Collection" id="collection_list" cols="60" rows="1" /> 81 97 <s:submit value="Submit" /> 82 98 </s:form> … … 112 128 </div> 113 129 130 <div id="bubble1" > 131 <input type="text" id="q1" /> 132 </div> 133 <div id="bubble2" > 134 <input type="text" id="q2" /> 135 </div> 136 114 137 115 138 </body> -
MDService2/trunk/MDService2/WebContent/scripts/mdservice2_ui.js
r596 r614 33 33 34 34 35 String.prototype.beginsWith = function(t, i) { if (i==false) { return 36 (t == this.substring(0, t.length)); } else { return (t.toLowerCase() 37 == this.substring(0, t.length).toLowerCase()); } } ; 38 39 40 String.prototype.endsWith = function(t, i) { if (i==false) { return (t 41 == this.substring(this.length - t.length)); } else { return 42 (t.toLowerCase() == this.substring(this.length - 43 t.length).toLowerCase()); } } ; 44 45 35 46 $(function(){ 36 47 … … 49 60 ////////////// 50 61 // POPULATE/LOAD VIEWS/BOXES; 51 52 // COLLECTIONS getCollections 62 63 // COLLECTIONS getCollections 53 64 $('#collections').load(link('collections','htmllist'), //profile.collections.base_uri, 54 65 function() { … … 70 81 71 82 // select or deselect all children according to parent 72 $(this).next().next().find(".selection").attr("checked",checked_status); 73 74 // if (checked_status == "true"){ 75 // $(this).next().next().find(".selection").attr("child","checked_child"); 76 // } else { 77 // $(this).next().next().find(".selection").attr("child","undefined"); 78 // } 79 // notifyUser($(this).next().next().find(".selection").attr("child") ,'debug'); 80 // 81 83 $(this).next().next().find(".selection").attr("checked",checked_status); 82 84 83 85 // deselect parents … … 134 136 //notifyUser("collection:" + collection,'debug'); 135 137 136 var collection_size = $("li",$treeview).find("input:checked[child='parent_selection']").size(); 137 if (collection_size == 0){ 138 $("#searchretrieve_collection_selection").attr("size",1); 139 $("#searchretrieve_collection_selection").html("<option value='0'>all</option>"); 140 } else{ 141 $("#searchretrieve_collection_selection").attr("size",collection_size); 142 $("li",$treeview).find("input:checked[child='parent_selection']").next().each(function(index){ 143 //notifyUser("selection...:" + index + ":" + this.textContent,'debug'); 144 if (index == 0) { 145 $("#searchretrieve_collection_selection").html("<option value='" + index + "'>" + this.textContent + "</option>"); 146 } else { 147 $("#searchretrieve_collection_selection").append("<option value='" + index + "'>" + this.textContent + "</option>"); 148 } 149 }); 150 } 138 139 var collection_text = ""; 140 $("li",$treeview).find("input:checked[child='parent_selection']").next().each(function(index){ 141 notifyUser("selection...:" + index + ":" + this.textContent + this.value + $(this).value,'debug'); 142 if (index == 0) { 143 collection_text = this.textContent; 144 } else { 145 collection_text = collection_text + ", " + this.textContent; 146 } 147 148 }); 149 $('#collection_list').attr("value",collection_text); 151 150 152 151 });// end of treeview click 153 152 });// end of collection callback 153 154 154 155 155 // COMPONENTS ComponentRegistry … … 179 179 ); 180 180 // elements 181 $('#terms').load(link('elements','htmllist')); 181 $('#terms').load(link('elements','htmllist'),function(){ 182 //load autocomplete element after elements are loaded 183 // load autocomplete innerText, if (tag.innerHTML) 184 $('.term_detail_caller','#terms').each(function(index){ 185 element_autocomplete[index]= $(this).children()[0].innerHTML; 186 }); 187 188 console.log("autocomplete loaded",'debug'); 189 ////// INITIALIZE QUERYSEARCH after elements are loaded 190 191 $('#query_list').css('display', 'none'); 192 $('<div id="searchclauselist"/>').insertAfter($('#query_list')); 193 194 var sc = new SearchClause("","",""); 195 searchclauseset.addsearchclause(sc,"",0,0); 196 197 $('#query_area').hide(); 198 $('#searchclauselist').show(); 199 $('#q-button').addClass("searchtype_clauses"); 200 201 $('#q-button').live('click',function(){ 202 if ($(this).text() == "Click to use PLAIN TEXT") { 203 searchclauseset.buildsctext(); 204 $('#query_area').val(searchclauseset.sctext); 205 $('#query_area').show(); 206 $('#searchclauselist').hide(); 207 $(this).toggleClass('searchtype_text searchtype_clauses'); 208 $(this).text("Click to use SEARCH CLAUSES"); 209 } else { 210 $('#query_area').hide(); 211 $('#searchclauselist').show(); 212 $(this).text("Click to use PLAIN TEXT"); 213 $(this).toggleClass('searchtype_text searchtype_clauses'); 214 } 215 }); 216 217 218 }); 182 219 183 220 … … 192 229 } ); 193 230 231 232 $('#bubble .cmd_filter').live('click', function(event) { 233 var term = $(this).next().next().attr("href"); 234 if ($('.searchtype_text','#search').size()> 0 ) { 235 var t = $('#query_area').text(); 236 $('#query_area').val(t + " " + term); 237 } else { 238 $('.focused','#searchclauselist').find('.index_input').val(term); 239 } 240 //$('#srquery').val(term); 241 }); 194 242 $(".term_detail_caller a").live('click', 195 243 /* function(event) { … … 220 268 221 269 // MODEL queryModel 222 270 /* 223 271 $('#terms').load(link('terms', 'htmllist', actions.terms.current) ); 224 272 $('#query_terms').attr('value', actions.terms.current); … … 239 287 //update(event.currentTarget, '#terms', '#terms'); 240 288 }); 241 */ 242 289 290 */ 243 291 244 292 // ISOCAT DCR … … 263 311 } 264 312 notifyUser('last_bubble_uri:' + last_bubble_uri,'debug'); 313 314 //TODO filter, read isocat:nr 315 // use in query clause 316 var term = $(this).val(); 317 var x = uri.split("/"); 318 var category = x[x.length-1]; 319 console.log(term); 320 searchclauseset.updatedata(term, true, category); 265 321 }); 266 322 … … 293 349 } 294 350 ); 295 296 * 297 */ 298 351 352 */ 299 353 300 354 ///////// ADD functionality 301 /*var customarray = new Array('apple','pear','mango','pineapple',302 'orange','banana','durian', 'jackfruit','etc');303 var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");304 */305 355 306 $('#srquery').autocomplete("/MDService2/static/terms_autocomplete.txt", 307 { delay: 40, 308 cacheLength : 200, 309 maxItemsToShow :10 310 }); 311 ///$('#ccc').autocomplete("/MDService2/static/test.txt"); 312 313 314 $('.cmd_filter').live('click', function(event) { 315 var term = $(this).parent().children('a').attr('href'); 316 $('#srquery').val($(this).parent().children('a').attr('href')); 356 $('#components .cmd_filter').live('click', function(event) { 357 var term = $(this).prev().text(); 358 if ($('.searchtype_text','#search').size()> 0 ) { 359 var t = $('#query_area').text(); 360 $('#query_area').val(t + " " + term); 361 } else { 362 searchclauseset.updatedata(term); 363 //$('.focused','#searchclauselist').find('.index_input').val(term); 364 } 365 //$('#srquery').val($(this).parent().children('a').attr('href')); 317 366 }); 318 367 … … 320 369 $('#terms .cmd_filter').live('click', function(event) { 321 370 var term = $(this).parent().find('span.term_detail_caller a').text(); 322 $('#srquery').val(term); 371 if ($('.searchtype_text','#search').size()> 0 ) { 372 var t = $('#query_area').text(); 373 $('#query_area').val(t + " " + term); 374 } else { 375 searchclauseset.updatedata(term); 376 377 } 378 //$('#srquery').val(term); 323 379 }); 324 380 /* … … 380 436 381 437 // RECORDSET searchRetrieve 382 $('#searchretrieve').submit( function(event) { 438 $('#searchretrieve').submit( function(event) { 383 439 event.preventDefault(); 384 var collections = ""; 385 var length = $('#searchretrieve_collection_selection option').size(); 386 $('#searchretrieve_collection_selection option').each(function(index){ 387 collections = collections + this.textContent; 388 if (index < length - 1) { 389 collections = collections + ","; 390 }; 391 }); 392 submit_query (collections,$('#srquery').attr('value')); 440 searchclauseset.buildsctext(); 441 submit_query ($('#collection_list').attr("value"),searchclauseset.sctext); 393 442 }); 394 443 … … 409 458 $(this).toggleClass('cmd_down cmd_up'); 410 459 }); 411 412 460 $('.cmd_sc_delete').live('click', function(event) { 461 var i = $(this).closest('.sc-i').attr('id'); 462 var j = $(this).closest('.sc-j').attr('id'); 463 //console.log(i + j,'debug'); 464 searchclauseset.removesearchclause(i,j); 465 466 }); 467 $('.cmd_add_and').live('click', function(event) { 468 //showTermDetail($(this).parent().text()); 469 //$(this).next().hide(); 470 $(this).attr("value","AND"); 471 var searchclause = new SearchClause("","",""); 472 var i = $(this).closest('.sc-i').attr('id'); 473 var j = $(this).closest('.sc-j').attr('id'); 474 //console.log(i + j,'debug'); 475 searchclauseset.addsearchclause(searchclause,"and",i,j); 476 477 }); 478 $('.cmd_add_or').live('click', function(event) { 479 //showTermDetail($(this).parent().text()); 480 //$(this).next().hide(); 481 var i,j; 482 $(this).attr("value","OR"); 483 var searchclause = new SearchClause("","",""); 484 searchclauseset.addsearchclause(searchclause,"or",$(this).closest('.sc-i').attr('id'),$(this).closest('.sc-j').attr('id')); 485 486 }); 413 487 //////////// VISUALS 414 488 … … 437 511 function submit_query (collection, query) { 438 512 notifyUser("processing query"); 439 /* 440 var $treeview = $(".treeview","#collections"); 441 var collection = $("li",$treeview).find("input:checked[child='parent_selection']").next().text(); 442 notifyUser("collection:" + collection,'debug'); 443 */ 513 444 514 var q = new Query(collection, query); //actions.collections.current, query ); 445 515 notifyUser("submit_query:" + q.query_uri(),'debug'); … … 506 576 $("#querylist").prepend(x); 507 577 } 578 function addToSClist (div, i, j, rel) { 579 580 var x; 581 582 //console.log(i + "," + j + "," + rel); 583 if (rel == ""){ 584 x = $('<div />').addClass("sc-i").addClass("and_level"); 585 $(div).appendTo($(x).appendTo($('#searchclauselist'))); 586 $(x).attr("id",i); 587 } else { 588 if (rel == "and") { 589 x = $('<div />').addClass("sc-i").addClass("and_level"); 590 $(x).attr("id",i); 591 $(div).appendTo($(x).appendTo($('#searchclauselist'))); 592 } else { 593 $(div).appendTo($('#searchclauselist').children()[i]); 594 } 595 } 596 597 //$('#searchclauselist').append($(li)); 598 599 } 508 600 509 601 var last_bubble_uri; -
MDService2/trunk/MDService2/WebContent/scripts/mdservice_model.js
r596 r614 4 4 function Query(collection, query ) { 5 5 this.collection = collection; 6 this.query = query; 6 this.query = query; //sctext 7 7 this.listid = ""; 8 8 this.container = {}; … … 12 12 return "?q=" + escape(this.query) + "&collection=" + this.collection; 13 13 //return $.param(this.query); 14 } 14 }; 15 15 16 16 Query.prototype.render = function () { … … 22 22 addToQuerylist(x); 23 23 this.container = $('#' + this.listid ); 24 } 24 }; 25 25 26 26 Query.prototype.submit = function () { … … 38 38 }); 39 39 40 } 40 }; 41 41 42 42 -
MDService2/trunk/MDService2/src/eu/clarin/cmdi/mdservice/action/CompRegistryProxyAction.java
r582 r614 119 119 } 120 120 */ 121 122 MDTransformer.getMDTransformer().setSrcFile(getTargetRequest()); 123 _resultStream = MDTransformer.getMDTransformer().transformXML(_sourceStream, getFullFormat()); 124 121 122 if (getFormat().equals("xml")) { 123 _resultStream = _sourceStream; 124 }else { 125 // set URL as srcFile (for MDTransformer to pass to xsl-scripts) 126 MDTransformer.getMDTransformer().setSrcFile(getTargetRequest()); 127 _resultStream = MDTransformer.getMDTransformer().transformXML(_sourceStream, getFullFormat()); 128 129 } 130 131 Admin.notifyUser(getProxyKey() + " success:" + (_resultStream!=null)); 132 125 133 setSourceStream(_sourceStream); 126 134 setResultStream(_resultStream); 127 135 136 /* 128 137 if (getFormat().equals("txt")) { 129 138 File f=new File(Cache.getCache().formPath("terms_autocomplete.txt")); … … 136 145 Admin.notifyUser("terms_autocomplete.txt"); 137 146 } 138 147 */ 139 148 140 149 } -
MDService2/trunk/MDService2/src/eu/clarin/cmdi/mdservice/model/Query.java
r595 r614 17 17 import java.util.Map; 18 18 19 import org.w3c.dom.*; 20 import javax.xml.parsers.*; 21 22 import org.xml.sax.SAXException; 19 23 import org.z3950.zing.cql.CQLParseException; 20 24 import org.z3950.zing.cql.CQLParser; 21 25 import org.z3950.zing.cql.CQLNode; 22 26 27 import eu.clarin.cmdi.mdservice.action.Admin; 23 28 import eu.clarin.cmdi.mdservice.action.MDTransformer; 24 29 … … 114 119 if (type.equals(RECORDSET)) { 115 120 parse(); 121 //preprocess(); 116 122 } 117 123 … … 199 205 200 206 /** 207 * tries to parse the query_string according the CQL-syntax 208 * if successful returns the root-node of the parse-tree 209 */ 210 public void preprocess() { 211 212 try { 213 Admin.notifyUser(toXCQL()); 214 215 216 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 217 DocumentBuilder builder = factory.newDocumentBuilder(); 218 Document doc = builder.parse(new org.xml.sax.InputSource(new java.io.StringReader(toXCQL()))); 219 220 //Admin.notifyUser("document created"); 221 SearchClauses searchclauses = new SearchClauses(doc); 222 //do the processing 223 searchclauses.process(); 224 String xml_s = searchclauses.toXML(); 225 226 //Admin.notifyUser("AAAA2:" + xml_s); 227 } 228 catch (Exception e) { 229 e.printStackTrace(); 230 } 231 return; 232 } 233 234 235 /** 201 236 * provides a xml-version of the query (if parsed successfully) 202 237 * according to the XCQL-schema defined in the SRU/CQL standard
Note: See TracChangeset
for help on using the changeset viewer.