- Timestamp:
- 08/11/08 16:11:10 (5 months ago)
- Files:
-
- openmrs-modules/addresshierarchy (modified) (1 prop)
- openmrs-modules/addresshierarchy/web/module/addresshierarchyTree.jsp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openmrs-modules/addresshierarchy
- Property svn:ignore set to
dist
build
- Property svn:ignore set to
openmrs-modules/addresshierarchy/web/module/addresshierarchyTree.jsp
r4885 r5238 1 2 1 <%@ include file="/WEB-INF/template/include.jsp"%> 3 4 2 <openmrs:require privilege="Manage Hierarchy" otherwise="/login.htm" redirect="/module/addresshierarchy/addresshierarchyTree.htm" /> 5 3 <%@ include file="/WEB-INF/template/header.jsp"%> 6 4 <openmrs:htmlInclude file="/dwr/interface/AddressHierarchy.js"/> 7 5 <openmrs:htmlInclude file="/moduleResources/addresshierarchy/jquery.js" /> 6 <openmrs:htmlInclude file="/moduleResources/addresshierarchy/thickbox.js" /> 7 <openmrs:htmlInclude file="/moduleResources/addresshierarchy/loadingAnimation.gif" /> 8 <openmrs:htmlInclude file="/moduleResources/addresshierarchy/thickbox.css" /> 9 8 10 <style> 11 12 .cusform { 13 display:none; 14 15 } 16 17 .hid{ 18 display:none; 19 } 20 9 21 .dojoTree { 22 10 23 -x-system-font:caption; 24 11 25 font-family:-moz-use-system-font; 26 12 27 font-size:14px; 28 13 29 font-size-adjust:-moz-use-system-font; 30 14 31 font-stretch:-moz-use-system-font; 32 15 33 font-style:-moz-use-system-font; 34 16 35 font-variant:-moz-use-system-font; 36 17 37 font-weight:normal; 38 18 39 line-height:-moz-use-system-font; 40 19 41 overflow:auto; 42 20 43 } 21 44 </style> 22 45 46 47 23 48 <script type="text/javascript"> 49 24 50 var djConfig = { isDebug: true }; 51 25 52 </script> 26 53 54 55 27 56 <openmrs:htmlInclude file="/scripts/dojo/dojo.js"/> 28 57 29 30 31 32 33 58 <script type="text/javascript"> 59 60 61 var comnode; 62 63 function searchNode(){ 64 65 var x = dojo.widget.manager.getWidgetById("myNewTreeWidget").children; 66 var srch = document.getElementById("srch").value; 67 for(var a = 0; a<x.length;a++) 68 { 69 alert(x[a].locationName); 70 if(x[a].locationName == srch){ 71 x[a].focus(); 72 alert("here"); 73 } 74 else{ 75 76 var x1 = x[a].children; 77 78 for(var b = 0;b<x1.length;b++) 79 { 80 if(x1[b].locationName == srch){ 81 x1[b].focus(); 82 } 83 else{ 84 var x2 = x1[a].children; 85 for(var c = 0;c<x2.length;c++){ 86 if(x2[c].locationName == srch){ 87 x2[c].focus(); 88 } 89 else{ 90 var x3 = x2[c].children; 91 for(var d = 0;d<x3.length;d++){ 92 if(x3[d].locationName == srch){ 93 x3[d].focus(); 94 } 95 else{ 96 var x4 = x3[d].children; 97 for(var e = 0;e<x4.length;e++){ 98 if(x4[e].locationName == srch){ 99 x4[e].focus(); 100 } 101 else{ 102 var x5 = x4.children; 103 for(var f = 0;f<x5.length;f++){ 104 if(x5[f].locationName == srch){ 105 x5[f].focus(); 106 } 107 else{ 108 var x6 = x5.children; 109 for(var g = 0;g<x6.length;g++){ 110 if(x6[g].locationName == srch){ 111 x6[g].focus(); 112 } 113 else{ 114 var x7 = x6.children; 115 for(var h = 0;h<x7.length;h++){ 116 if(x7[h].locationName == srch){ 117 x7[h].focus(); 118 } 119 else{ 120 var x8 = x7.children; 121 for(var i = 0;i<x8.length;i++){ 122 if(x8[i].locationName == srch){ 123 x8[i].focus(); 124 } 125 else{ 126 var x9 = x8.children; 127 for(var j = 0;j<x9.length;j++){ 128 if(x9[j].locationName == srch){ 129 x9[j].focus(); 130 } 131 else{ 132 var x10 = x9.children; 133 for(var k = 0;k<x10.length;k++){ 134 if(x10[k].locationName == srch){ 135 x10[k].focus(); 136 } 137 else{ 138 var x11 = x10.children; 139 for(var l = 0;l<x11.length;l++){ 140 if(x11[l].locationName == srch){ 141 x11[l].focus(); 142 } 143 } 144 } 145 } 146 } 147 } 148 } 149 } 150 } 151 } 152 } 153 } 154 } 155 } 156 } 157 } 158 } 159 } 160 } 161 } 162 } 163 164 } 165 } 166 } 167 } 168 169 function pullOptions(){ 170 AddressHierarchy.getLocationType(function (data){ 171 for (var i=0; i < data.length;++i){ 172 173 addOption(document.getElementById("addaddresstype"), data[i], i); 174 } 175 }); 176 } 177 178 function addOption(selectbox,text,value ) 179 { 180 var optn = document.createElement("OPTION"); 181 optn.text = text; 182 optn.value = value; 183 selectbox.options.add(optn); 184 } 185 186 function added(){ 187 188 var val = document.getElementById("ind").value; 189 //var val = document.getElementById("addaddresstype").options[document.getElementById("addaddresstype").selectedIndex].value; 190 alert(val); 191 var arr=new Array("Country","State/Province","City/Village","Neighborhood/Cell","County/District","Township/Division","Sub Region","Region","Postal Code","Longitude","Latitude"); 192 193 for(var j=0;j<arr.length;j++){ 194 if(val==arr[j]) 195 var ind = j; 196 } 197 alert(ind); 198 var txt = document.getElementById("txt").value; 199 this.controller = dojo.widget.manager.getWidgetById("myTreeController"); 200 if (!comnode.isFolder) { 201 202 comnode.setFolder(); 203 204 } 205 var locationarr = txt.split("\n"); 206 207 var rad = this.controller; 208 for(var i=0;i<locationarr.length;i++){ 209 if(locationarr[i]!=""){ 210 AddressHierarchy.createLocation(locationarr[i],ind,comnode.locationId,function(data){ 211 212 var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 213 214 var dumm = parseInt(data[2]); 215 216 var titl = data[0]+"( "+arr[dumm]+" )"; 217 218 var res = rad.createChild(comnode, 0, { title: titl,locationName:data[0], locationId : data[1],typeId : data[2], parentId : data[3] }); 219 220 }); 221 }} 222 } 223 224 225 function fireEvent(node,obj,evt){ 226 227 228 229 var fireOnThis = obj; 230 if( document.createEvent ) { 231 var evObj = document.createEvent('MouseEvents'); 232 evObj.initEvent( evt, true, false ); 233 fireOnThis.dispatchEvent(evObj); 234 } else if( document.createEventObject ) { 235 fireOnThis.fireEvent(node,'on'+evt); 236 } 237 var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 238 } 239 240 34 241 242 35 243 var TreeBuilder = { 244 36 245 buildTreeNodes:function (dataObjs, treeParentNode){ 246 37 247 var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 38 248 249 250 39 251 for(var i=0; i<dataObjs.length;i++){ 252 40 253 var typ = dataObjs[i].typeId; 254 41 255 var dumm = parseInt(typ); 256 42 257 var titl = dataObjs[i].title+"( "+arr[dumm]+" )"; 258 43 259 var node = dojo.widget.createWidget("TreeNode",{ 260 44 261 title:titl ,locationName:dataObjs[i].title, locationId:dataObjs[i].locationId , typeId:dataObjs[i].typeId , parentId:dataObjs[i].parentId 262 45 263 }); 46 treeParentNode.addChild(node); 47 treeParentNode.registerChild(node,i); 48 if(dataObjs[i].children){ 264 265 266 treeParentNode.addChild(node); 267 268 treeParentNode.registerChild(node,i); 269 270 if(dataObjs[i].children){ 271 49 272 this.buildTreeNodes(dataObjs[i].children, node); 273 50 274 } 51 } 275 276 } 277 52 278 }, 279 53 280 buildTree:function (treeDat){ 281 54 282 myTreeWidget = dojo.widget.createWidget("Tree",{ 283 55 284 widgetId:"myNewTreeWidget" 285 56 286 }); 57 287 288 289 58 290 this.buildTreeNodes(treeDat.treeNodes,myTreeWidget); 291 59 292 var treeContainer = document.getElementById("myWidgetContainer"); 293 60 294 var placeHolder = document.getElementById("treePlaceHolder"); 295 61 296 treeContainer.replaceChild(myTreeWidget.domNode,placeHolder); 297 62 298 DemoTreeManager.init(); 63 299 300 301 64 302 } 303 65 304 305 66 306 }; 307 67 308 309 68 310 var TreeActions = { 311 69 312 addNewNode: function(parent,controllerId){ 313 70 314 this.controller = dojo.widget.manager.getWidgetById(controllerId); 315 71 316 if (!parent.isFolder) { 317 72 318 parent.setFolder(); 73 } 319 320 } 321 74 322 var arr=new Array("Country - 1","State - 2","Sub Location1 - 3","Sub Location2 - 4","Sub Location3 - 5","Sub Location4 - 6","Sub Location5 - 7","Sub Location6 - 8","Postal Code - 9","Longitude - 10","Latitude - 11"); 323 75 324 var typeid = parent.typeId; 325 76 326 var str="Enter corresponding code for the location type \n"; 327 77 328 for(var i=typeid;i<arr.length;i++){ 329 78 330 str = str + arr[i] + "\n"; 331 79 332 } 333 80 334 var dummy = prompt(str,""); 81 82 335 336 337 338 339 83 340 if(dummy>typeid){ 341 84 342 if(dummy<12){ 343 85 344 var titl = prompt("Enter the location name",""); 345 86 346 if(titl==""){ 347 87 348 alert("Enter valid name"); 88 } 349 350 } 351 89 352 else{ 353 90 354 var rad = this.controller; 355 91 356 AddressHierarchy.createLocation(titl,parseInt(dummy)-1,parent.locationId,function(data){ 357 92 358 var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 359 93 360 var dumm = parseInt(data[2]); 361 94 362 var titl = data[0]+"( "+arr[dumm]+" )"; 363 95 364 var res = rad.createChild(parent, 0, { title: titl,locationName:data[0], locationId : data[1],typeId : data[2], parentId : data[3] }); 365 96 366 }) 97 367 368 369 98 370 }} 371 99 372 else{ 373 100 374 alert("Invalid location type"); 101 } 375 376 } 377 102 378 } 379 103 380 else{ 381 104 382 alert("Invalid location type"); 383 105 384 } 106 385 386 387 107 388 }, 389 108 390 removeNode: function(node,controllerId){ 391 109 392 if(node.title!="Start"){ 393 110 394 if (!node) { 395 111 396 alert("Nothing selected to delete"); 397 112 398 return false; 113 } 399 400 } 401 114 402 else{ 403 115 404 var name = node.locationName; 405 116 406 var parid = node.parentId; 407 117 408 this.controller = dojo.widget.manager.getWidgetById(controllerId); 409 118 410 var rad = this.controller; 411 119 412 if(!confirm("Are you sure you want to delete "+name)){ 413 120 414 return false; 121 } 415 416 } 417 122 418 AddressHierarchy.deleteLocation(parid,name,function() { 419 123 420 var res = rad.removeNode(node, dojo.lang.hitch(this)); 421 124 422 }) 125 126 } 423 424 425 426 } 427 127 428 } 429 128 430 else{ 431 129 432 alert("Cannot remove"); 433 130 434 } 435 131 436 }, 437 132 438 editNode: function(node,controllerId){ 439 133 440 if(node.title!="Start"){ 441 134 442 if (!node) { 443 135 444 alert("Nothing selected to edit"); 445 136 446 return false; 137 } 447 448 } 449 138 450 else{ 451 139 452 var oldname = node.locationName; 453 140 454 var parid = node.parentId; 455 141 456 this.controller = dojo.widget.manager.getWidgetById(controllerId); 457 142 458 var rad = this.controller; 459 143 460 var newname = prompt("Enter the location name",oldname); 144 461 462 463 145 464 if(newname!=null){ 465 146 466 AddressHierarchy.editLocation(parid,oldname,newname, function(){ 467 147 468 var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 469 148 470 var dumm = parseInt(node.typeId); 471 149 472 var titl = newname+"( "+arr[dumm]+" )"; 473 150 474 node.edit({title:titl , locationName:newname}); 475 151 476 })} 152 } 477 478 } 479 153 480 } 481 154 482 else{ 483 155 484 alert("Cannot Edit"); 485 156 486 } 487 157 488 }}; 489 158 490 491 159 492 var DemoTreeManager = { 493 160 494 djWdgt: null, 495 161 496 myTreeWidget: null, 497 162 498 addTreeContextMenu: function(){ 499 163 500 501 164 502 var ctxMenu = this.djWdgt.createWidget("TreeContextMenu",{}); 503 165 504 ctxMenu.addChild(this.djWdgt.createWidget( 505 166 506 "TreeMenuItem",{caption:"Add Location Component", 507 167 508 widgetId:"ctxAdd"})); 509 168 510 ctxMenu.addChild(this.djWdgt.createWidget( 511 169 512 "TreeMenuItem",{caption:"Edit Location Component", 513 170 514 widgetId:"ctxEdit"})); 515 171 516 ctxMenu.addChild(this.djWdgt.createWidget( 517 172 518 "TreeMenuItem",{caption:"Delete Location Component", 519 173 520 widgetId:"ctxDelete"})); 521 174 522 document.body.appendChild(ctxMenu.domNode); 523 175 524 /* Bind the context menu to the tree */ 525 176 526 ctxMenu.listenTree(this.myTreeWidget); 527 177 528 }, 529 178 530 531 179 532 addController: function(){ 533 180 534 this.djWdgt.createWidget( 535 181 536 "TreeBasicController", 537 182 538 {widgetId:"myTreeController",DNDController:"create"} 539 183 540 ); 541 184 542 }, 543 185 544 bindEvents: function(){ 545 186 546 /* Bind the functions in the TreeActions object to the 547 187 548 context menu entries */ 549 188 550 dojo.event.topic.subscribe("ctxAdd/engage", 551 189 552 function (menuItem) { 190 TreeActions.addNewNode(menuItem.getTreeNode(), "myTreeController"); } 553 554 this.comnode=menuItem.getTreeNode(); 555 mynode = menuItem.getTreeNode(); 556 alert(mynode); 557 typeid = mynode.typeId; 558 alert(typeid); 559 var i; 560 var selectbox = document.getElementById("addaddresstype"); 561 for(i=selectbox.options.length-1;i>=0;i--) 562 { 563 selectbox.remove(i); 564 } 565 AddressHierarchy.getAddressHierarchyTypeList(typeid,function(data){ 566 var selectbox = document.getElementById("addaddresstype"); 567 var optn = document.createElement("OPTION"); 568 optn.text = "Select one"; 569 optn.value = "Select one"; 570 selectbox.options.add(optn); 571 for (i=0; i < data.length;++i){ 572 var optn = document.createElement("OPTION"); 573 optn.text = data[i]; 574 optn.value = data[i]; 575 //alert(optn); 576 selectbox.options.add(optn); 577 } 578 }); 579 alert("Loaded"); 580 fireEvent(menuItem.getTreeNode(),document.getElementById("linkit"),'click'); 581 } 582 191 583 ); 584 192 585 dojo.event.topic.subscribe("ctxDelete/engage", 586 193 587 function (menuItem) { TreeActions.removeNode(menuItem.getTreeNode(), 588 194 589 "myTreeController"); } 590 195 591 ); 592 196 593 dojo.event.topic.subscribe("ctxEdit/engage", 594 197 595 function (menuItem) { TreeActions.editNode(menuItem.getTreeNode(), 596 198 597 "myTreeController"); } 598 199 599 ); 600 200 601 }, 602 201 603 init: function(){ 604 202 605 /* Initialize this object */ 606 203 607 this.djWdgt = dojo.widget; 204 this.myTreeWidget = this.djWdgt.manager. 205 getWidgetById("myNewTreeWidget"); 608 609 this.myTreeWidget = this.djWdgt.manager.getWidgetById("myNewTreeWidget"); 610 206 611 this.addTreeContextMenu(); 612 207 613 this.addController(); 614 208 615 this.bindEvents(); 616 209 617 } 618 210 619 }; 620 211 621 622 212 623 624 213 625 function loadData(){ 626 214 627 $.getJSON("${pageContext.request.contextPath}/moduleServlet/addresshierarchy/addressTree", 628 215 629 function(data){ 630 216 631 TreeBuilder.buildTree(data); 632 217 633 }); 634 218 635 } 636 219 637 638 220 639 640 221 641 dojo.addOnLoad( function(){ 642 222 643 dojo.require("dojo.lang.*"); 644 223 645 dojo.require("dojo.widget.Tree"); 646 224 647 dojo.require("dojo.io.*"); 648 225 649 dojo.require("dojo.widget.TreeContextMenu"); 650 226 651 loadData(); 652 653 pullOptions(); 654 227 655 228 656 229 657 }); 658 230 659 </script> 231 660 661 662 232 663 <body> 233 664 665 <div> 666 <label>Search</label> 667 <input type="text" name="srch" id="srch" /> 668 <input type="submit" value="Search" onClick='searchNode()' /> 669 </div> 234 670 235 671 <div id="myWidgetContainer"> 672 236 673 <span id="treePlaceHolder" 674 237 675