1 /** 2 * @fileOverview This is the main file, contains main app function (jquery-initialization). 3 * The app main function runs setup functionality, which covers this domains: 4 * <dl> 5 * <dt>the variable initialization<dt> 6 * <dd>functions from mdservice_searchclause.js, mdservice_widget.js, mdservice_ui_helpers.js</dd> 7 * <dt>loadData()</dt> 8 * <dd>loading data from repository and creating particular client-side representations - functions from <a>mdservice_ui_load.js</a></dd> 9 * <dt>creating of ui-layout</dt> 10 * <dd>i.e. split UI to individual panes - functions from mdservice_ui_layout.js</dd> 11 * <dt>addFunctionality()</dt> 12 * <dd>bind handlers to events of ui-elements (function directly in mdservice_ui.js)</dd> 13 * </dl> 14 * @author 15 * @version 16 */ 17 18 $(function(){ 19 // turn on debugging (see jquery.xslTransform.js) 20 var DEBUG = false; 21 22 // check for jQuery and Sarissa 23 try{ 24 jQuery; 25 }catch(e){ 26 alert('You need to include jQuery!'); 27 } 28 29 /////// INIT VARIABLE SETTINGS 30 // get url parameters 31 url_params = getUrlVars(); 32 // create searchclauses 33 //searchclauseset.addsearchclause(new SearchClause("","",""),"",0,0); 34 // load query if exists params 35 //loadQueryFromUriParams(); 36 // create widgets 37 columns_widget = new ListWidget($('#columns-widget'), "columns"); 38 collections_widget = new ListWidget($('#collections-widget'), "collections"); 39 listwidgetset.add(columns_widget); 40 listwidgetset.add(collections_widget); 41 //createInfos(); 42 43 //////////// LOAD DATA 44 loadData(); 45 //handleBubble(); 46 47 addFunctionality(); 48 //addVisuals(); 49 50 //queryuriparams loaded after collections and workspaceprofile are loaded 51 //loadQueryFromUriParams(); 52 53 ////////////// CREATE UI-LAYOUT 54 createBlock('base',''); 55 //jQuery.each(blocks_settings,function(index,block){ 56 // jQuery.each(block.sublayouts,function(index,name){ 57 // createLayouts(name); 58 // }); 59 //}); 60 createLayouts('base'); 61 62 initDetailFloat(); 63 // autocomplete correction 64 searchclauseset.addsearchclause(new SearchClause("","",""),"",0,0); 65 createInfos(); 66 67 detailcaller.calldetail(undefined, "info"); 68 69 }); 70 71 function createInfos(){ 72 var info = "<span class='cmd cmd_info'></span>"; 73 $('.cmds-ui-block').children('.header').append(info); 74 createTooltip($('.cmds-ui-block').children('.header')); 75 76 $('.cmds-ui-block').children('.header').children('.cmd_info').click(function(){ 77 //var a = $(this).parent().next().attr('id'); 78 //var uri = window.location.pathname + "static/info.xml"; 79 //$.get(uri,{"id":a}, showDetail,'html'); 80 detailcaller.calldetail($(this)); 81 return false; 82 }); 83 } 84 85 86 function getSelectedRepository(){ 87 //var id = parseInt($('#repositories_select').find("option:selected").val()); 88 return $('#repositories_select').find("option:selected").text();//val(); 89 90 } 91 92 /** 93 * This function is called during the initialization sequence and binds event-handlers to events of ui-elements. 94 * @function 95 */ 96 function addFunctionality(){ 97 // DEL COMMAND 98 /* 99 $('.ui-dialog-titlebar .cmd_del').live('click',function(){ 100 var did; 101 if ($(this).closest('.ui-dialog').length > 0){ 102 did = $(this).closest('.ui-dialog').find('.detail-wrapper').attr('id'); 103 } 104 if (did != undefined){ 105 detail = detailcaller.getdetail(did); 106 detail.close(); 107 } 108 $(this).closest('.ui-dialog').hide(); 109 }) 110 */ 111 /** 112 * Remove a query from queryset 113 * FIXME: shouldn't this primarily delete the query-object from the queryset? 114 * @event 115 * @name clickQueryremove 116 */ 117 $('.query_header .cmd_del').live('click', function(){ 118 $(this).closest('.query_wrapper').remove(); 119 }); 120 121 //TODO dialog 122 $('.detail-header .cmd_del').live('click', function(){ 123 var did, detail; 124 125 if ($(this).parent().hasClass('detail-header')){ 126 var dw = $(this).closest('.detail-wrapper'); 127 did = dw.attr('id'); 128 dw.hide(); 129 } 130 else { 131 if ($(this).parent().siblings('.ui-dialog-content').length > 0){ 132 did = $(this).parent().siblings('.ui-dialog-content').find('.detail-wrapper').attr('id'); 133 } 134 } 135 if (did != undefined){ 136 detail = detailcaller.getdetail(did); 137 detail.close(); 138 } 139 }); 140 141 // DETAIL-CALLER 142 /* 143 $('.detail-caller, .cmd_detail').live('click', function(event) { 144 $(this).parent().children('.detail').toggle(); 145 $(this).children('.cmd_down, .cmd_up').toggleClass('cmd_down cmd_up'); 146 }); 147 */ 148 $('.detail-caller a').live('click', function(event) { 149 event.preventDefault(); 150 }); 151 // open detail (from result-set, but also already within detail-view (ResourceRef, IsPartOf) 152 $('.result a.internal, .mdrecord-detail a.internal').live('click', function(event) { 153 event.preventDefault(); 154 155 var uri = $(this).attr('href'); // + " body"; 156 //notifyUser('internal-link: ' + uri,'debug' ); 157 //$.get(uri, showDetail,'html'); 158 detailcaller.calldetail(undefined, "record", uri); 159 }); 160 161 $('.detail-content a').live('click', function(event) { 162 163 if ($(this).attr("target") == "_blank"){ 164 return true; 165 } else { 166 event.preventDefault(); 167 var uri = $(this).attr('href'); // + " body"; 168 if ($(this).attr("class") == "query"){ 169 var urlparams = getUrlVars(uri); 170 loadQueryFromUriParams(urlparams); 171 } else { 172 var type; 173 if ($(this).attr("class") == "bookmark"){ 174 type = "record"; 175 } else { 176 type = $(this).parents('.detail-wrapper').attr("id"); 177 type = type.substring(7,type.length); 178 } 179 // $.get(uri, showDetail,'html'); */ 180 detailcaller.calldetail(undefined, type, uri); 181 } 182 } 183 }); 184 $('.result a.external, .mdrecord-detail a.external').live('click', function(event) { 185 186 //event.preventDefault(); 187 var uri = $(this).attr('href'); // + " body"; 188 notifyUser('resource-link: ' + uri,'debug' ); 189 // $.get(uri, showDetail,'html'); */ 190 }); 191 /* 192 $('.result .cmd_detail').live('click', function(event) { 193 //var qid = $(this).closest('.query_wrapper').attr('id'); 194 //var query = queryset.getQuery(qid); 195 196 var uri = $(this).parent().find("a").attr('href'); // + " body"; 197 $.get(uri, showDetail,'html'); 198 }); 199 */ 200 $(".detail-caller, .cmd_detail").live('click',function(event) { 201 event.preventDefault(); 202 detailcaller.calldetail($(this)); 203 204 }); 205 $(".detail-caller-inline").live('click',function(event) { 206 event.preventDefault(); 207 $(this).parent().children('.detail').toggle(); 208 $(this).children('.cmd_down, .cmd_up').toggleClass('cmd_down cmd_up'); 209 210 }); 211 212 // cmd_up cmd_down 213 $('.cmd_up').live('click', function(event) { 214 if ($(this).closest('.detail-wrapper').length > 0 ) { 215 $(this).closest('.detail-wrapper').find('.detail-content').hide(); 216 } else { 217 $(this).closest('.query_wrapper').find('.result').hide(); 218 } 219 $(this).toggleClass('cmd_down cmd_up'); 220 }); 221 $('.cmd_down').live('click', function(event) { 222 if ($(this).closest('.detail-wrapper').length > 0 ) { 223 $(this).closest('.detail-wrapper').find('.detail-content').show(); 224 } else { 225 $(this).closest('.query_wrapper').find('.result').show(); 226 } 227 $(this).toggleClass('cmd_down cmd_up'); 228 }); 229 230 $('.cmd_publish').live('click', function(event){ 231 var query = $(this).parent().data('query'); 232 query.publish(); 233 }); 234 235 ////////////////////////////////////////////// 236 $('#searchretrieve').submit( function(event) { 237 event.preventDefault(); 238 //hideWelcomeMessage(); 239 searchclauseset.buildsctext(); 240 notifyUser(searchclauseset.sctext,'debug'); 241 242 //submit_query (columns_widget.getColumnsListText(),searchclauseset.sctext, $('#input-simplequery').attr("value"), $('#input-withsummary').attr("checked")); 243 244 var query = searchclauseset.sctext; 245 var squery = $('#input-simplequery').attr("value"); 246 // TODO we dont use columns-widget 247 var columns = "";//columns_widget.getColumnsListText(); 248 var collections = collections_widget.widgets; //searchclauseset.sctext; 249 var ws = $('#input-withsummary').attr("checked"); 250 251 notifyUser("processing query"); 252 253 if (jQuery.trim(query).length == 0){ 254 query = null; 255 } 256 if (jQuery.trim(squery).length == 0){ 257 squery = null; 258 } 259 260 var q = new Query(collections, columns, query, squery); //actions.collections.current, query ); 261 q.repository = getSelectedRepository(); 262 if (ws) { 263 q.options = "withSummary"; 264 } 265 notifyUser("submit_query:" + q.query_uri(),'debug'); 266 queryset.addquery(q); 267 }); 268 269 $('.autocomplete-select-caller').live('click', function(event) { 270 271 $(this).closest(".index-context").prev().parent().find(".autocomplete-input").val($(this).text()).change(); 272 $(this).closest(".index-context").hide(); 273 }); 274 $('.autocomplete-select-caller a').live('click', function(event) { 275 event.preventDefault(); 276 }); 277 278 279 $('.comp_detail input').live('keyup', function(event) { 280 $('#srquery').val( 281 $(this).parent().children('span.cmdelem_name').text() 282 + "=" + $(this).val() ); 283 }); 284 285 286 $('a.open-in-context').live('click', function(event) { 287 event.preventDefault(); 288 var uri = $(this).attr('href'); 289 /* notifyUser("open_incontext:" + uri); 290 $(this).after("<div class='ui-context-dialog cmds-ui-block' ></div>"); 291 var trg = $(this).next(".ui-context-dialog"); 292 trg.show(); 293 $(trg).load(uri); //function(event) { } */ 294 var contextual_uri = uri.replace('htmlpage','htmldetail'); 295 296 $.get(contextual_uri, showDetail,'html'); 297 }); 298 299 // RECORDSET searchRetrieve 300 /* 301 $('#searchretrieve').submit( function(event) { 302 event.preventDefault(); 303 //hideWelcomeMessage(); 304 searchclauseset.buildsctext(); 305 notifyUser(searchclauseset.sctext,'debug'); 306 //submit_query ($('#columns_list').attr("value"),searchclauseset.sctext, $('#input-simplequery').attr("value")); 307 submit_query (columns_widget.getColumnsListText(),searchclauseset.sctext, $('#input-simplequery').attr("value"), $('#input-withsummary').attr("checked")); 308 }); 309 */ 310 $('#columns-widget .cmd_save').click(function(event) { 311 var terms = [{}]; 312 313 var id = $("#ts_select option").size(); 314 var name = "termset_" + id; 315 316 columns_widget.getListWidget().find('.list-item').each(function(i,elem){ 317 terms[i] = $(elem).text(); 318 }); 319 320 var dt = new Date(); 321 var str_time = dateFormat(dt);//dt.toString("dd/mm/yyyy HH:mm:ss"); 322 var jsont = {"name":name, "time" : str_time, "Terms" :terms}; 323 if (jsonw["WorkspaceProfile"]["CustomTermsets"] == undefined) { 324 jsonw["WorkspaceProfile"]["CustomTermsets"] = [{}]; 325 } 326 jsonw["WorkspaceProfile"]["CustomTermsets"][id] = jsont; 327 328 //saveWorkspace("USER"); 329 Workspace.save("USER"); 330 loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]); 331 //createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms')); 332 $("#ts_select option").removeAttr("selected"); 333 $("#ts_select option").last().attr("selected","selected"); 334 $('#ts_input').attr("value",name); 335 createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms')); 336 }); 337 338 /* 339 $('#querylist .query_header').find('.cmd_del').live('click', function(event) { 340 //showTermDetail($(this).parent().text()); 341 342 queryset.removequery($(this).closest('.query_wrapper').attr('id')); 343 344 }); 345 */ 346 /* 347 $('#querylist .cmd_up').live('click', function(event) { 348 $(this).closest('.query_wrapper').find('.result').hide(); 349 $(this).toggleClass('cmd_down cmd_up'); 350 }); 351 352 */ 353 354 $('#detail_query .cmds .cmd_save').live('click', function(event) { 355 qid = $(this).data('query').listid; 356 notifyUser("here I would save query: " + qid, "debug"); 357 $(this).data('query').save(); 358 //Workspace.saveQuery($(this).data('query')); 359 }); 360 361 /** 362 * FIXME: this should only invoke appropriate query-function storing the query to workspaceprofile 363 */ 364 $('#querylist .cmd_save').live('click', function(event) { 365 366 var qid = ""; 367 var qstring = ""; 368 var json_coll = "null"; 369 var json_cols = "null"; 370 var squery = ""; 371 var bookmark = "0"; 372 var json_options = "null"; 373 374 if ($(this).parents('.result').length > 0){ 375 qstring = $(this).parent().find("a").attr('href'); 376 qstring = qstring.substring(18,qstring.length); 377 bookmark = "1"; 378 } else { 379 qid = $(this).closest('.query_wrapper').attr("id"); 380 qstring = queryset.getquerystring(qid); 381 json_coll = queryset.getcollections(qid); 382 json_cols = queryset.getcolumns(qid); 383 squery = queryset.getsquery(qid); 384 json_options = queryset.getoptions(qid); 385 } 386 notifyUser("saving query: " + qid, "debug"); 387 // JSON conversion 388 if (qstring.length == 0){ 389 qstring = "[NULL]"; 390 } 391 if (squery.length == 0){ 392 squery = "[NULL]"; 393 } 394 395 var id = parseInt($("#qts_select option:selected").val()); 396 var iq = $('#userqueries').children().size(); 397 398 if (iq == 0){ 399 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"] = [{}]; 400 } 401 var dt = new Date(); 402 var str_time = dateFormat(dt);//dt.toString("dd/mm/yyyy HH:mm:ss"); 403 var jsonq = {"name":"", "squerystring":squery, "querystring":qstring,"searchclauses":"null" , "collections" : json_coll, "columns" : json_cols, "options" : json_options, "bookmark" : bookmark, "time" : str_time}; 404 405 var name; 406 if (bookmark == "1") { 407 qstring = Url.decode(qstring); 408 var s = qstring.split(':'); 409 name = s[s.length - 2] + ":" + s[s.length - 1]; 410 } else { 411 name = Query.fullformatstring(jsonq); 412 } 413 jsonq.name = name; 414 415 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][iq] = jsonq; 416 //saveWorkspace("USER"); 417 Workspace.save("USER"); 418 appendQueryUI(jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][iq],iq, $('#userqueries')); 419 420 //$("#qs_select").append(new Option(Query.simplequerystring(qstring),iq)); 421 }); 422 /* 423 $('#querylist .cmd-xml').live('click', function(event) { 424 var qid = $(this).closest('.query_wrapper').attr("id"); 425 426 queryset.getQuery(qid).open('xml'); 427 }); 428 $('#querylist .cmd-page').live('click', function(event) { 429 var qid = $(this).closest('.query_wrapper').attr("id"); 430 431 queryset.getQuery(qid).open('htmlpage'); 432 }); 433 */ 434 /* 435 $('#querylist .cmd-link').live('click', function(event) { 436 /* var qid = $(this).closest('.query_wrapper').attr("id"); 437 var qstring = queryset.getquerystring(qid); 438 var json_coll = queryset.getcollections(qid); 439 var json_cols = queryset.getcolumns(qid); 440 var squery = queryset.getsquery(qid); 441 // JSON conversion 442 if (qstring.length == 0){ 443 qstring = "[NULL]"; 444 } 445 if (squery.length == 0){ 446 squery = "[NULL]"; 447 } 448 var jsonq = {"squerystring":squery, "querystring":qstring,"searchclauses":"null" , "collections" : json_coll, "columns" : json_cols}; 449 /// 450 451 queryset.getQuery(qid).open(); 452 }); 453 */ 454 /* 455 $('.cmd_select').live('click', function(event) { 456 var qid = $(this).closest('.query_wrapper').attr("id"); 457 458 searchclauseset.sctext = queryset.getquerystring(qid); 459 searchclauseset.buildfromquerystring(); 460 }); 461 */ 462 /** 463 * FIXME: this looks like a typo: #queryslist -> #querylist 464 */ 465 $('#queryslist .cmd_reload').live('click', function(event) { 466 var qid = $(this).closest('.query_wrapper').attr("id"); 467 468 queryset.resubmit(qid); 469 470 }); 471 472 473 474 $('.cmd_sc_delete').live('click', function(event) { 475 var i = $(this).closest('.sc-i').attr('id'); 476 var j = $(this).closest('.sc-j').attr('id'); 477 //notifyUser(i + j,'debug'); 478 searchclauseset.removesearchclause(i,j); 479 480 }); 481 $('.cmd_add_and').live('click', function(event) { 482 //showTermDetail($(this).parent().text()); 483 //$(this).next().hide(); 484 $(this).attr("value","AND"); 485 var searchclause = new SearchClause("","",""); 486 var i = $(this).closest('.sc-i').attr('id'); 487 var j = $(this).closest('.sc-j').attr('id'); 488 //notifyUser(i + j,'debug'); 489 searchclauseset.addsearchclause(searchclause,"and",i,j); 490 491 }); 492 $('.cmd_add_or').live('click', function(event) { 493 //showTermDetail($(this).parent().text()); 494 //$(this).next().hide(); 495 var i,j; 496 $(this).attr("value","OR"); 497 var searchclause = new SearchClause("","",""); 498 searchclauseset.addsearchclause(searchclause,"or",$(this).closest('.sc-i').attr('id'),$(this).closest('.sc-j').attr('id')); 499 500 }); 501 502 ///// datasets/queries 503 $('#qts_save').click(function(){ 504 var id = $("#qts_select option:selected").val(); 505 //notifyUser($('#qts_input').val() + $('#qts_input').text(),'debug'); 506 jsonw["WorkspaceProfile"]["Querysets"][id]["name"] = $('#qts_input').val(); 507 508 $("#qts_select option:selected").text( $('#qts_input').val()); 509 //saveWorkspace("USER"); 510 Workspace.save("USER"); 511 }); 512 $('#qts_add').click(function(){ 513 var new_name = "new_queryset"; 514 515 var id = $('#qts_select option').size(); 516 var dt = new Date(); 517 var str_time = dateFormat(dt);//dt.toString("yyyy-MM-dd HH:mm:ss"); 518 519 if (id == 0){ 520 jsonw["WorkspaceProfile"]["Querysets"] = [{}]; 521 } 522 523 jsonw["WorkspaceProfile"]["Querysets"][id] = {"name":new_name,"created":str_time , "Queries" : "null"}; 524 525 //saveWorkspace("USER"); 526 Workspace.save("USER"); 527 //todo 528 529 //loadWorkspace(jsonw["WorkspaceProfile"]["Querysets"]); 530 $("#qts_select").append(new Option(new_name, id)); 531 $("#qts_select").find('option').attr("selected","false"); 532 $("#qts_select").find('option').last().attr("selected","true"); 533 $('#qts_input').val(new_name); 534 }); 535 $('#qts_delete').click(function(){ 536 var count = $("#qts_select option").size(); 537 538 //if (count > 1){ 539 var id = parseInt($("#qts_select option:selected").val()); 540 var size = jsonw["WorkspaceProfile"].Querysets.length; 541 542 for (var i=id;i<size-1;i++){ 543 jsonw["WorkspaceProfile"].Querysets[i] = jsonw["WorkspaceProfile"].Querysets[i+1]; 544 } 545 546 delete jsonw["WorkspaceProfile"].Querysets[size-1]; 547 jsonw["WorkspaceProfile"]["Querysets"].length = size-1; 548 // set null string , if 0 querysets 549 if (count == 1) { 550 jsonw["WorkspaceProfile"]["Querysets"] = "null"; 551 } 552 //saveWorkspace("USER"); 553 Workspace.save("USER"); 554 //$("#qts_select option").remove(); 555 loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user"); 556 557 //} 558 }); 559 560 $('#ts_save').click(function(){ 561 var id = $("#ts_select option:selected").val(); 562 //notifyUser($('#qts_input').val() + $('#qts_input').text(),'debug'); 563 jsonw["WorkspaceProfile"]["CustomTermsets"][id]["name"] = $('#ts_input').val(); 564 565 $("#ts_select option:selected").text( $('#ts_input').val()); 566 //saveWorkspace("USER"); 567 Workspace.save("USER"); 568 }); 569 $('#ts_add').click(function(){ 570 var new_name = "new_termset"; 571 572 var id = $('#ts_select option').size(); 573 var dt = new Date(); 574 var str_time = dateFormat(dt);//dt.toString("yyyy-MM-dd HH:mm:ss"); 575 576 if (id == 0){ 577 jsonw["WorkspaceProfile"]["CustomTermsets"] = [{}]; 578 } 579 580 jsonw["WorkspaceProfile"]["CustomTermsets"][id] = {"name":new_name,"created":str_time , "Terms" : "null"}; 581 582 //saveWorkspace("USER"); 583 Workspace.save("USER"); 584 //todo 585 586 //loadWorkspace(jsonw["WorkspaceProfile"]["Querysets"]); 587 $("#ts_select").append(new Option(new_name, id)); 588 $("#ts_select").find('option').attr("selected","false"); 589 $("#ts_select").find('option').last().attr("selected","true"); 590 $('#ts_input').val(new_name); 591 createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms')); 592 }); 593 $('#ts_delete').click(function(){ 594 var count = $("#ts_select option").size(); 595 596 //if (count > 1){ 597 var id = parseInt($("#ts_select option:selected").val()); 598 var size = jsonw["WorkspaceProfile"].CustomTermsets.length; 599 600 for (var i=id;i<size-1;i++){ 601 jsonw["WorkspaceProfile"].CustomTermsets[i] = jsonw["WorkspaceProfile"].CustomTermsets[i+1]; 602 } 603 604 delete jsonw["WorkspaceProfile"].CustomTermsets[size-1]; 605 jsonw["WorkspaceProfile"]["CustomTermsets"].length = size-1; 606 // set null string , if 0 termsets 607 if (count == 1) { 608 jsonw["WorkspaceProfile"]["CustomTermsets"] = "null"; 609 } 610 //saveWorkspace("USER"); 611 Workspace.save("USER"); 612 loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]); 613 }); 614 615 $('#userterms .cmd_load').live('click',function(event){ 616 var term = String.trim($(this).parent().find('a').text()); 617 columns_widget.add(new ListItem(term)); 618 619 }); 620 $('#userterms .cmd_del').live('click', function(event){ 621 var id = parseInt($("#ts_select option:selected").val()); 622 var str = $(this).parent().find('a').attr("href"); 623 var iq = parseInt(str.substring(10)); 624 var size = jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"].length; 625 626 for (var i=iq;i<size-1;i++){ 627 jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][i] = jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][i+1]; 628 } 629 630 delete jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][size-1]; 631 jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"].length = size-1; 632 633 if (size == 1){ 634 jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"] = "null"; 635 } 636 637 //saveWorkspace("USER"); 638 Workspace.save("USER"); 639 loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]); 640 //$("#ts_select option").remove(); 641 //$("#ts_select option").first().attr("selected","true"); 642 }); 643 644 645 $('#collections .cmd_load').live('click',function(event){ 646 //hideWelcomeMessage(); 647 var collection_text = ""; 648 var coll = $(this).parent(); 649 var collections = []; 650 //collections.splice(0, collections.length); 651 collections[0] = new Collection($(coll).attr("handle"), String.trim($(coll).children('a').text())); 652 var columns = columns_widget.getListText();//$('#columns_list').attr("value"); 653 //var collections = collections_widget.getListText(); 654 var query = new Query(collections,columns,"",""); 655 query.repository = getSelectedRepository(); 656 657 //searchclauseset.clear(); 658 queryset.addquery(query); 659 //$('#collection_list').attr("value",query.getcollectiontext("name")); 660 collections_widget.load(query.collection); 661 662 }); 663 $('#serverqueries .cmd_load').live('click',function(event){ 664 665 var id = parseInt( $("#serverqts_select option:selected").val()); 666 var str = $(this).parent().find('a').attr("href"); 667 var iq = parseInt(str.substring(9)); 668 var json = jQuery.parseJSON($("#serverqs").attr("data")); 669 var q = json["WorkspaceProfile"]["Querysets"][id]["Queries"][iq]; 670 671 loadQuery(q); 672 }); 673 $('#userqueries .cmd_load').live('click',function(event){ 674 675 var id = parseInt( $("#qts_select option:selected").val()); 676 var str = $(this).parent().find('a').attr("href"); 677 var iq = parseInt(str.substring(7)); 678 var q = jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][iq]; 679 680 loadQuery(q); 681 }); 682 $('#userqueries .cmd_del').live('click', function(event){ 683 //var count = $("#userqueries li").size(); 684 var id = parseInt($("#qts_select option:selected").val()); 685 var str = $(this).parent().find('a').attr("href"); 686 var iq = parseInt(str.substring(7)); 687 var size = jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"].length; 688 689 for (var i=iq;i<size-1;i++){ 690 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][i] = jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][i+1]; 691 } 692 693 delete jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][size-1]; 694 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"].length = size-1; 695 696 if (size == 1){ 697 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"] = "null"; 698 } 699 700 //saveWorkspace("USER"); 701 Workspace.save("USER"); 702 loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user"); 703 //$("#qs_select option").remove(); 704 //$("#qs_select option").first().attr("selected","true"); 705 }); 706 707 708 $('.ui-dialog-titlebar-del').live('click', function(event){ 709 //$('#detail-float').dialog('close'); 710 var t = $(this).parents('.ui-widget').children('.ui-dialog-content'); 711 $(t).dialog('close'); 712 }); 713 714 $('.ui-dialog-titlebar-up').live('click', function(event){ 715 var t = $(this).parents('.ui-widget').children('.ui-dialog-content'); 716 717 $(this).parents('.ui-widget').attr("tempheight",$(this).parents('.ui-widget').height()); 718 //notifyUser("up(height):" + $(this).parents('.ui-widget').height(),'debug'); 719 $(this).parents('.ui-widget').height(30); 720 //notifyUser("up(tempheight):" + $(this).parents('.ui-widget').attr("tempheight"),'debug'); 721 722 723 //$(t).find(".ui-dialog-buttonpane:first, .ui-dialog-content").stop({clearQueue:true}).fadeOut(300); 724 //$(t).stop({clearQueue:true}).animate({height:'0px'},300); 725 726 $(this).removeClass('cmd_up ui-dialog-titlebar-up'); 727 $(this).addClass('cmd_down ui-dialog-titlebar-down'); 728 }); 729 $('.ui-dialog-titlebar-down').live('click', function(event){ 730 var t = $(this).parents('.ui-widget').children('.ui-dialog-content'); 731 732 var h = $(this).parents('.ui-widget').attr("tempheight"); 733 //notifyUser("down(tempheight):" + h,'debug'); 734 $(this).parents('.ui-widget').height(parseInt(h)); 735 //notifyUser("down(height):" + $(this).parents('.ui-widget').height(),'debug'); 736 737 738 //$(this).parents('.ui-widget').attr("tempheight",$(this).parents('.ui-widget').height()); 739 //$(t).find(".ui-dialog-content, .ui-dialog-buttonpane:first").stop({clearQueue:true}).fadeIn(800) 740 //.end().stop({clearQueue:true}).animate({height:'100%'},300); 741 742 $(this).removeClass('cmd_down ui-dialog-titlebar-down'); 743 $(this).addClass('cmd_up ui-dialog-titlebar-up'); 744 }); 745 746 } 747 748 function initDetailFloat(){ 749 $("#detail-float").dialog({ autoOpen: false}); 750 $("#detail-float").dialog(); 751 $("#detail-float").tabs(); 752 }; 753 function submit_query (columns, query, squery, ws) { 754 notifyUser("processing query"); 755 756 if (jQuery.trim(query).length == 0){ 757 query = null; 758 } 759 if (jQuery.trim(squery).length == 0){ 760 squery = null; 761 } 762 763 var q = new Query(collections, columns, query, squery); //actions.collections.current, query ); 764 q.repository = getSelectedRepository(); 765 if (ws) { 766 q.options = "withSummary"; 767 } 768 notifyUser("submit_query:" + q.query_uri(),'debug'); 769 queryset.addquery(q); 770 //notifyUser("container" + q.container.attr('id')); 771 //$("#querylist").append("sdfdsf"); 772 } 773 774 /** 775 * allows to add ui-containers into the detail-pane. 776 * 777 * Most of it is just to ensure a defined ordering: 778 * 1. info, 2. index, 3. query, 4. record 779 */ 780 function addToDetailList(elem, did){ 781 var exists = false; 782 var index_elem = undefined; 783 var query_elem = undefined; 784 var record_elem = undefined; 785 var info_elem = undefined; 786 787 $('#detailblock').children('.content').children().each(function(){ 788 if ($(this).attr("id") == did){ 789 exists = true; 790 } 791 if ($(this).attr("id") == "detail_index"){ 792 index_elem = this; 793 } 794 if ($(this).attr("id") == "detail_query"){ 795 query_elem = this; 796 } 797 if ($(this).attr("id") == "detail_record"){ 798 record_elem = this; 799 } 800 if ($(this).attr("id") == "detail_info"){ 801 info_elem = this; 802 } 803 }); 804 if (!exists) { 805 if (did == "detail_record") { 806 $('#detailblock').children('.content').append(elem); 807 } else { 808 if (did == "detail_info") { 809 $('#detailblock').children('.content').prepend(elem); 810 } else { 811 if (did == "detail_index") { 812 if (info_elem != undefined) { 813 $(info_elem).after(elem); 814 } else { 815 if (record_elem != undefined) { 816 $(record_elem).before(elem); 817 } else { 818 $('#detailblock').children('.content').prepend(elem); 819 } 820 } 821 } else { 822 if (did == "detail_query") { 823 if (index_elem != undefined) { 824 $(index_elem).after(elem); 825 } else { 826 if (record_elem != undefined) { 827 $(record_elem).before(elem); 828 } else { 829 $('#detailblock').children('.content').append(elem); 830 } 831 } 832 } else { 833 $('#detailblock').children('.content').append(elem); 834 } 835 } 836 } 837 } 838 839 } else { 840 $('#detailblock').children('.content').children().each(function(){ 841 if ($(this).attr("id") == did){ 842 $(this).show(); 843 } 844 }); 845 } 846 } 847 848 function addToSClist (div, i, j, rel) { 849 850 var x; 851 852 //notifyUser(i + "," + j + "," + rel); 853 if (rel == ""){ 854 x = $('<div />').addClass("sc-i").addClass("and_level"); 855 $(div).appendTo($(x).appendTo($('#searchclauselist'))); 856 $(x).attr("id",i); 857 } else { 858 if (rel == "and") { 859 x = $('<div />').addClass("sc-i").addClass("and_level"); 860 $(x).attr("id",i); 861 $(div).appendTo($(x).appendTo($('#searchclauselist'))); 862 } else { 863 $(div).appendTo($('#searchclauselist').children()[i]); 864 } 865 } 866 867 //$('#searchclauselist').append($(li)); 868 869 } 870 871 function addToQuerylist (x) { 872 $("#querylist").prepend(x); 873 } 874 875 function addToNotifylist (x) { 876 $("#notifylist").prepend(x); 877 } 878 879 function createTooltip(parentwidget) { 880 881 var ccmd; 882 if (parentwidget == null) { 883 ccmd = $('.cmd'); 884 } else { 885 ccmd = $(parentwidget).find('.cmd'); 886 } 887 $(ccmd).mouseover(function(){ 888 // command name 889 var cmd = $(this).attr("class"); 890 cmd = cmd.substring(cmd.indexOf("cmd_")); 891 cmd = cmd.split(" ")[0]; 892 893 // command place 894 var place = ""; 895 if ($(this).parents('.content').length > 0) { 896 place = $(this).parents('.content').attr("id") + "."; 897 } 898 if ($(this).parents('.block').length > 0) { 899 place = $(this).parents('.block').attr("id") + "."; 900 } 901 902 903 // find tho tooltiptext 904 var a = place + cmd; 905 906 if (tooltiptable[a] != null) { 907 s = tooltiptable[a]; 908 } else { 909 if (tooltiptable[cmd] != null) { 910 s = tooltiptable[cmd]; 911 } else { 912 s = a; 913 } 914 } 915 tooltip.show(s); 916 }); 917 $(ccmd).mouseout(function(){ 918 tooltip.hide(); 919 }); 920 921 }; 922 923 function loadQuery(q){ 924 if (q["bookmark"] == "1") { 925 var uri = "/MDService2/record/htmldetail/" + q["querystring"]; 926 detailcaller.calldetail(undefined, "record", uri); 927 //var uri = "/MDService2/record/htmldetail/" + q["querystring"]; 928 //showDetail(null,'html'); 929 //$.get(uri, showDetail,'html'); 930 } else { 931 //hideWelcomeMessage(); 932 var query = new Query([],"","",""); 933 query.load(q); 934 query.repository = getSelectedRepository(); 935 queryset.addquery(query); 936 937 searchclauseset.sctext = query.query; 938 notifyUser(searchclauseset.sctext,'debug'); 939 searchclauseset.buildfromquerystring(); 940 941 //collections = query.collection; 942 collections_widget.load(query.collection); 943 columns_widget.load(query.columns.split(',')); 944 $('#input-simplequery').attr("value",query.squery); 945 $('#input-withsummary').attr("checked",(query.options != null)); 946 updateCollectionTree(); 947 } 948 949 } 950 951 function loadQueryFromUriParams(local_uri){ 952 var url; 953 954 if (local_uri == undefined){ 955 url = url_params; 956 } else { 957 url = local_uri; 958 } 959 var q = url["q"]; 960 var squery = url["squery"]; 961 var collection = url["collection"]; 962 var startItem = url["startItem"]; 963 var maximumItems = url["maximumItems"]; 964 var repository = url["repository"]; 965 var columns = url["columns"]; 966 if ((q != undefined) || (squery != undefined) || (collection != undefined)) { 967 if (q == undefined) { 968 q = ""; 969 } else { 970 q = Url.decode(q); 971 } 972 if (squery == undefined) { 973 squery = ""; 974 } 975 if (columns == undefined) { 976 columns = ""; 977 } 978 if (startItem == undefined) { 979 startItem = 1; 980 } 981 if (maximumItems == undefined) { 982 maximumItems = 10; 983 } 984 if (repository == undefined) { 985 repository = getSelectedRepository(); 986 } 987 if (collection == undefined){ 988 collection = ""; 989 } 990 var collections = []; 991 if (collection.length > 0 ){ 992 var coll = collection.split(","); 993 $.each(coll,function(i,item){ 994 var n; 995 n = $('#collections').find(".folder:[handle='"+item+"']").text(); 996 var simple_collection = new Collection(item, n); 997 collections[i] = simple_collection; 998 }); 999 } 1000 1001 var query = new Query(collections, columns, q, squery); 1002 query.startItem = startItem; 1003 query.maximumItems = maximumItems; 1004 query.repository = repository; 1005 1006 1007 queryset.addquery(query); 1008 1009 searchclauseset.sctext = query.query; 1010 notifyUser(searchclauseset.sctext,'debug'); 1011 searchclauseset.buildfromquerystring(); 1012 1013 //collections = query.collection; 1014 collections_widget.load(query.collection); 1015 columns_widget.load(query.columns.split(',')); 1016 $('#input-simplequery').attr("value",query.squery); 1017 $('#input-withsummary').attr("checked",(query.options != null)); 1018 updateCollectionTree(); 1019 /* 1020 1021 searchclauseset.sctext = query.query; 1022 notifyUser(searchclauseset.sctext,'debug'); 1023 1024 searchclauseset.buildfromquerystring(); 1025 1026 $('#collection_list').attr("value",query.getcollectiontext("name")); 1027 1028 columns_widget.load(query.columns.split(',')); 1029 //$('#columns_list').attr("value",query.columns); 1030 $('#input-simplequery').attr("value",query.squery); 1031 1032 $('#query-input').show(); 1033 1034 //hideWelcomeMessage(); 1035 */ 1036 } 1037 1038 } 1039 1040 1041