1 2 /** 3 * @fileOverview The file contains app load functionality. The load functions actualy used provides client side model building together with 4 * ui building. The load module is independant from app pane-layout and all ui-layout functionality. 5 * 6 * @author 7 * @version 8 */ 9 10 function loadData(){ 11 //loadWelcomeMessage(); 12 loadTooltiptable(); 13 loadWorkspaceProfiles(); 14 //loadCollections(); // loaded after WorkspaceProfile is loaded 15 //loadTerms(); // loaded after WorkspaceProfile is loaded 16 //loadTermsAutocomplete(); //handleQueryInput(); 17 //createTooltip() 18 19 //loadComponentsRegistry(); 20 //loadDCR(); 21 22 } 23 24 function loadTooltiptable() { 25 26 var uri = window.location.pathname + "static/info.xml"; 27 28 $.get(uri,function(data, textStatus){ 29 $(data).find('#commands').find('dt').each(function(){ 30 tooltiptable[$(this).attr("id")] = $(this).text(); 31 //$(this).next('dd').text(); 32 }); 33 },'html'); 34 35 }; 36 /* 37 function loadAdminFile(){ 38 json_admin = {'Admin':{'maxqid':'0','QueryIndices':'null'}}; 39 40 jQuery.getJSON("/MDService2/workspaceprofile/admin",function(data){ 41 json_admin = preprocessJSON(data); 42 }); 43 } 44 */ 45 function loadWorkspaceProfiles(){ 46 //empty json 47 jsonw = {'WorkspaceProfile':{'CustomTermsets':'null','Termsets':'null','Repositories':'null','Querysets':'null','created':'null','lastchanged':'null','profilename':'null'}}; 48 $('#qts_input').val(""); 49 50 // USER WORKSPACEPROFILE 51 jQuery.getJSON("/MDService2/workspaceprofile/user",function(data){ 52 notifyUser(data['WorkspaceProfile'],'debug'); 53 jsonw = preprocessJSON(data); 54 55 jQuery.getJSON("/MDService2/workspaceprofile/server",function(data){ 56 notifyUser(data['WorkspaceProfile'],'debug'); 57 var json = preprocessJSON(data); 58 $("#serverqs").attr("data",JSON.stringify(json)); 59 loadQuerysets(json["WorkspaceProfile"]["Querysets"],"server"); 60 loadRepositories(json["WorkspaceProfile"]["Repositories"]); 61 loadCollections(true); 62 loadTerms(); 63 loadTermsAutocomplete(); 64 createTooltip(null); 65 66 67 }); 68 69 loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user"); 70 //loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]); 71 createTooltip(this); 72 }); 73 74 75 76 } 77 78 function loadCollections(ini){ 79 var coll_uri = link('collections','htmllist?repository=' + getSelectedRepository()); 80 81 $("#collections").jstree({ 82 "html_data" : { 83 "ajax" : { 84 "url" : coll_uri, 85 "data" : function (n) { 86 return { //id : n.attr ? n.attr("id") : 0 , 87 collection : n.attr ? n.attr("handle") : "", 88 maxdepth : n.attr ? 2 : 1 }; 89 } 90 } 91 }, 92 types : { 93 // the default type 94 "default" : { 95 "max_children" : -1, 96 "max_depth" : -1, 97 "valid_children": "all" 98 99 } 100 }, 101 102 "plugins" : [ "themes", "html_data", "ui" , "checkbox", "types", "search" ] 103 }); 104 105 $('#collections').bind('loaded.jstree reopen.jstree', function(event, data) 106 { 107 if ((event.type == "loaded") &&(ini)) { 108 loadQueryFromUriParams(); 109 } 110 111 var dataelems = data.inst.get_container(); 112 createTooltip($(dataelems)); 113 //data.inst.get_container().unblock(); 114 }); 115 116 $('#collections').bind("change_state.jstree", function (event, data) { 117 var dataelems = data.inst.get_container(); 118 var coll; 119 if (!local_collections){ 120 var collections = []; 121 //collections.splice(0, collections.length); 122 123 $(this).find('.jstree-checked').each(function(index){ 124 if (!($(this).parent().parent().hasClass("jstree-checked")) ) { 125 //notifyUser("selection...:" + index + ":" + String.trim($(this).children('a').text()) + $(this).attr("handle"),'debug'); 126 coll = new Collection($(this).attr("handle"), String.trim($(this).children('a').text())); 127 collections[collections.length] = coll; 128 } 129 }); 130 131 collections_widget.load(collections); 132 } 133 }); 134 135 $('#collections').bind("search.jstree", function (e, data) { 136 137 if (data.rslt.nodes.length > 0){ 138 $('#collections').jstree("checkbox.check_node",data.rslt.nodes[0]); 139 } 140 //alert("Found " + data.rslt.nodes.length + " nodes matching '" + data.rslt.str + "'."); 141 }); 142 143 }; 144 145 function updateCollectionTree(){ 146 /* 147 local_collections = true; 148 var cc = $('#collections').jstree("get_checked"); 149 $('#collections').jstree("uncheck_all"); 150 $.each(collections, function(){ 151 $('#collections').jstree("search",this.name); 152 }); 153 local_collections = false; 154 */ 155 }; 156 157 function loadTerms(){ 158 $('#model_profiles').load(link('terms','htmlselect',actions.terms.current) + '?repository=' + getSelectedRepository()); 159 160 $('#terms-select').live('change', function(event) { 161 //notifyUser(this.value,'debug'); 162 update(link('terms', 'htmllist', this.value)+ '?maxdepth=' + actions.terms.maxdepth + '&repository=' + getSelectedRepository(), 163 '#terms-select', '#model_terms', 164 function() { 165 $("#model_terms .treeview").treeview({ 166 animated: "fast", 167 collapsed: false 168 }); 169 //notifyUser($("#model_terms .treeview"),'debug'); 170 notifyUser("loaded: #model_terms .treeview",'debug'); 171 createTooltip(this); 172 } 173 ); 174 } 175 ); 176 177 $('#terms .cmd_filter').live('click', function(event) { 178 var term = $(this).parent().children('span.data').text(); 179 if ($('.searchtype_text','#search').size()> 0 ) { 180 var t = $('#query_area').text(); 181 $('#query_area').val(t + " " + term); 182 } else { 183 searchclauseset.updatedata(term); 184 185 } 186 }); 187 188 $('#terms .cmd_columns').live('click', function(event) { 189 var term = $(this).parent().children('span.data').text(); 190 columns_widget.add(new ListItem(term)); 191 192 }); 193 194 } 195 196 function loadRepositories(json) { 197 198 var $select; 199 $select = $('#repositories_select'); 200 201 202 $select.find("option").remove(); 203 204 if (String(json) != "null") { 205 206 $.each(json, function(i,item) { 207 $select.append(new Option(this.name, this.id)); 208 }); 209 210 } 211 // select first 212 if (url_params["repository"] != undefined){ 213 var r = parseInt(url_params["repository"])-1; 214 $($select.find("option")[r]).attr("selected","true"); 215 } else { 216 $select.find("option").first().attr("selected","true"); 217 } 218 219 220 $select.change(function(data){ 221 loadCollections(false); 222 loadTerms(); 223 loadTermsAutocomplete(); 224 $('#model_profiles').load(link('terms','htmlselect',actions.terms.current) + '?repository=' + getSelectedRepository()); 225 }); 226 227 } 228 229 function loadTermsAutocomplete(){ 230 231 var elem; 232 $('#terms_autocomplete').children().remove(); 233 $('#terms_autocomplete').css('display','none'); 234 $('#terms_autocomplete').load(link('terms_autocomplete','autocomplete/?q=all&repository='+ getSelectedRepository()),function(){ 235 $(this).find('term').each(function(index){ 236 elem = $(this).attr("name"); 237 element_autocomplete[index] = elem; 238 elements_hashtable[elem] = $(this).html(); 239 }); 240 // add autocomplete 's 241 searchclauseset.initAutocomplete(); 242 columns_widget.initAutocomplete(element_autocomplete); 243 }); 244 }; 245 246 function appendQueryUI(json,i, qs){ 247 var del = ''; 248 var name = ''; 249 //var ul; 250 var id = $(qs).parent().attr('id'); 251 252 if (id == 'userqs') { 253 del = '<span class="cmd cmd_del" ><xsl:text> </xsl:text></span>'; 254 name = '<div class="cmds-elem-prop"><span class="label">name:</span><input type="text" class="input-name" value="' + json.name + '"></div>'; 255 } else { 256 name = '<div class="cmds-elem-prop"><span class="label">name:</span><span class="value">' + json.name + 257 '</span></div>'; 258 } 259 260 var timestr = ""; 261 if (json.time != undefined){ 262 timestr = json.time; 263 } 264 var squery = json.squerystring; 265 if (squery = "[NULL]"){ 266 squery = ""; 267 } 268 var qq = json.querystring; 269 if (qq = "[NULL]"){ 270 qq = ""; 271 } 272 var x = '<div class="cmds-elem-plus" ><span class="cmd cmd_load"></span><span class="detail-caller-inline" ><a href="'+id + '_'+ i+'" >' + 273 json.name + '</a></span>' + 274 del + 275 '<span class="cmd cmd_publish"></span><div class="detail" >' + 276 name + 277 '<div class="cmds-elem-prop"><span class="label">squery:</span><span class="value">' + squery + '</span></div>' + 278 '<div class="cmds-elem-prop"><span class="label">query:</span><span class="value">' + Query.simplequerystring(qq) + '</span></div>' + 279 '<div class="cmds-elem-prop"><span class="label">collections:</span><span class="value">' + Query.collectiontext(json) + '</span></div>' + 280 '<div class="cmds-elem-prop"><span class="label">columns:</span><span class="value">' + Query.columnstext(json) + '</span></div>' + 281 '<div class="cmds-elem-prop"><span class="label">time:</span><span class="value">' + timestr + '</span></div>' + 282 //'<div class="cmds-elem-prop"><span class="label">startItem:</span><span class="value">' + Query.startItem + '</span></div>' + 283 //'<div class="cmds-elem-prop"><span class="label">maxItems:</span><span class="value">' + Query.maximumItems + '</span></div>' + 284 //'<div class="cmds-elem-prop"><span class="label">repository:</span><span class="value">' + Query.repository + '</span></div>' + 285 '<div class="cmds-elem-prop"><span class="label">bookmark:</span><span class="value">' + json.bookmark + '</span></div>' + 286 '<div class="cmds-elem-prop"><span class="label">options:</span><span class="value">' + Query.optionstext(json) + '</span></div>' + 287 '</div>'; 288 289 //dt = Date.parse('2010-10-18, 10:06 AM'); dt.toString('dd/mm/yyyy HH:mm:ss GMT') 290 $(qs).append(x); 291 292 var query = new Query([],"","",""); 293 query.load(json); 294 $(qs).find("[href='"+ id + "_" + i + "']").closest('.cmds-elem-plus').data('query',query); 295 $(qs).find('.detail').css({'z-index' : '1000'}); 296 297 $(qs).find('.input-name').keydown(function(ev){ 298 var evStop = function(){ 299 ev.stopPropagation(); 300 ev.preventDefault(); 301 }; 302 if (ev.which === 13) { 303 var id = parseInt( $("#qts_select option:selected").val()); 304 $(this).parent().parent().parent().find('a').text($(this).val()); 305 var str = $(this).parent().parent().parent().find('a').attr("href"); 306 var iq = parseInt(str.substring(7)); 307 308 jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][iq].name = $(this).val(); 309 //saveWorkspace("USER"); 310 Workspace.save("USER"); 311 evStop(); 312 } 313 }); 314 createTooltip(qs); 315 } 316 317 function createQueriesUI(json, qs){ 318 $(qs).children().remove(); 319 if (json.Queries != "null") { 320 $.each(json.Queries, function(i,item) { 321 if (this != "null"){ 322 appendQueryUI(this,i, qs); 323 } 324 }); 325 } 326 327 } 328 function loadQuerysets(json, type) { 329 330 var $select; 331 if (type == "user") { 332 $select = $('#qts_select'); 333 } else { 334 $select = $('#serverqts_select'); 335 } 336 337 $select.find("option").remove(); 338 339 if (String(json) != "null") { 340 341 $.each(json, function(i,item) { 342 //notifyUser(i + ',' + this.name + ',' + this.created,'debug'); 343 $select.append(new Option(this.name, i)); 344 }); 345 346 347 // find id of selected 348 if ($select.find("option").size() > 0) { 349 $select.find("option").first().attr("selected","true"); 350 var id = parseInt($select.find("option:selected").val()); 351 var jsonq = json[id]; 352 353 if (type == "user") { 354 $('#qts_input').val(jsonq["name"]); 355 qs = $("#userqueries"); 356 } else { 357 qs = $("#serverqueries"); 358 } 359 createQueriesUI(jsonq, qs); 360 } 361 362 $select.change(function(data){ 363 if ($select.find("option").size() > 0) { 364 // find id of selected 365 var id = parseInt($select.find("option:selected").val()); 366 var jsonq = json[id]; 367 368 if (type == "user") { 369 $('#qts_input').val(jsonq["name"]); 370 qs = $("#userqueries"); 371 } else { 372 qs = $("#serverqueries"); 373 } 374 createQueriesUI(jsonq, qs); 375 376 } 377 }); 378 379 } 380 381 } 382 383 384 function preprocessJSON(json){ 385 if (json["Admin"] != undefined) { 386 if (json["Admin"]["QueryIndices"] != undefined){ 387 if (String(json["Admin"]["QueryIndices"]) != "null") { 388 if (json["Admin"].QueryIndices[0] == undefined){ 389 var jj = json["Admin"]["QueryIndices"]["item"]; 390 delete json["Admin"]["QueryIndices"]["item"]; 391 json["Admin"]["QueryIndices"] = [{}]; 392 json["Admin"]["QueryIndices"][0] = jj; 393 } 394 } 395 } 396 } 397 398 399 if (json["WorkspaceProfile"]["CustomTermsets"] != undefined){ 400 401 if (String(json["WorkspaceProfile"]["CustomTermsets"]) != "null") { 402 if (json["WorkspaceProfile"].CustomTermsets[0] == undefined){ 403 var jj = json["WorkspaceProfile"]["CustomTermsets"]["item"]; 404 delete json["WorkspaceProfile"]["CustomTermsets"]["item"]; 405 json["WorkspaceProfile"]["CustomTermsets"] = [{}]; 406 json["WorkspaceProfile"]["CustomTermsets"][0] = jj; 407 } 408 409 410 $.each(json["WorkspaceProfile"]["CustomTermsets"], function(i,item) { 411 if (this.Terms[0] == undefined){ 412 var jj = this["Terms"]["item"]; 413 delete this["Terms"]["item"]; 414 this.Terms = [{}]; 415 this.Terms[0] = jj; 416 } 417 }); 418 } 419 } 420 if (json["WorkspaceProfile"].Querysets[0] == undefined){ 421 var jj = json["WorkspaceProfile"]["Querysets"]["item"]; 422 delete json["WorkspaceProfile"]["Querysets"]["item"]; 423 json["WorkspaceProfile"]["Querysets"] = [{}]; 424 json["WorkspaceProfile"]["Querysets"][0] = jj; 425 } 426 if (String(json["WorkspaceProfile"]["Querysets"]) != "null") { 427 428 $.each(json["WorkspaceProfile"]["Querysets"], function(i,item) { 429 if (this.Queries[0] == undefined){ 430 var jj = this["Queries"]["item"]; 431 delete this["Queries"]["item"]; 432 this.Queries = [{}]; 433 this.Queries[0] = jj; 434 } 435 }); 436 437 $.each(json["WorkspaceProfile"]["Querysets"], function(i,item){ 438 if (String(this.Queries) != "null") { 439 $.each(this.Queries, function(i,item){ 440 if (this.collections != "null") { 441 if (this.collections[0] == undefined){ 442 var jj = this["collections"]["item"]; 443 delete this["collections"]["item"]; 444 this.collections = [{}]; 445 this.collections[0] = jj; 446 } 447 } 448 if (this.columns != "null") { 449 if (this.columns[0] == undefined){ 450 var jj = this["columns"]["item"]; 451 delete this["columns"]["item"]; 452 this.columns = [{}]; 453 this.columns[0] = jj; 454 } 455 } 456 }); 457 } 458 }); 459 } 460 461 return json; 462 463 } 464 465 466 467 468 function saveTermset(id, name, listwidget) { 469 var terms = [{}]; 470 471 $.each(listwidget.widgets,function(i,elem){ 472 terms[i] = elem.name; 473 }); 474 475 var dt = new Date(); 476 var str_time = dateFormat(dt);//dt.toString("dd/mm/yyyy HH:mm:ss"); 477 var jsont = {"name":name, "time" : str_time, "Terms" :terms}; 478 if (jsonw["WorkspaceProfile"]["CustomTermsets"] == "null") { 479 jsonw["WorkspaceProfile"]["CustomTermsets"] = [{}]; 480 if (id == -1) {id = 0;}; 481 } 482 if (id == -1) {id = jsonw["WorkspaceProfile"]["CustomTermsets"].length;}; 483 jsonw["WorkspaceProfile"]["CustomTermsets"][id] = jsont; 484 485 //saveWorkspace("USER"); 486 Workspace.save("USER"); 487 488 }; 489 function removeTermset(id){ 490 var size = jsonw["WorkspaceProfile"]["CustomTermsets"].length; 491 492 for (var i=id;i<size-1;i++){ 493 jsonw["WorkspaceProfile"].CustomTermsets[i] = jsonw["WorkspaceProfile"].CustomTermsets[i+1]; 494 } 495 496 delete jsonw["WorkspaceProfile"].CustomTermsets[size-1]; 497 jsonw["WorkspaceProfile"]["CustomTermsets"].length = size-1; 498 // set null string , if 0 499 if (size == 1) { 500 jsonw["WorkspaceProfile"]["CustomTermsets"] = "null"; 501 } 502 //saveWorkspace("USER"); 503 Workspace.save("USER"); 504 } 505 506 /* 507 function loadWelcomeMessage(){ 508 $('#welcomedetail').load("/MDService2/docs/xml/welcome #welcome", function() { //profile.collections.base_uri, 509 $('#welcome').addClass("ui-helper-reset ui-corner-all ui-widget-content"); 510 }); 511 } 512 */