Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register
Show
Ignore:
Timestamp:
08/11/08 16:11:10 (5 months ago)
Author:
machosry
Message:

address hierarchy: completed few enhancements suggested in the dev call. still the portlet overriding is not solved yet.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openmrs-modules/addresshierarchy

    • Property svn:ignore set to
      dist
      build
  • openmrs-modules/addresshierarchy/web/module/addresshierarchyTree.jsp

    r4885 r5238  
    1  
    21<%@ include file="/WEB-INF/template/include.jsp"%> 
    3  
    42<openmrs:require privilege="Manage Hierarchy" otherwise="/login.htm" redirect="/module/addresshierarchy/addresshierarchyTree.htm" /> 
    53<%@ include file="/WEB-INF/template/header.jsp"%> 
    64<openmrs:htmlInclude file="/dwr/interface/AddressHierarchy.js"/> 
    75<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 
    810<style> 
     11 
     12.cusform { 
     13        display:none; 
     14 
     15} 
     16 
     17.hid{ 
     18        display:none; 
     19} 
     20 
    921.dojoTree { 
     22 
    1023        -x-system-font:caption; 
     24 
    1125        font-family:-moz-use-system-font; 
     26 
    1227        font-size:14px; 
     28 
    1329        font-size-adjust:-moz-use-system-font; 
     30 
    1431        font-stretch:-moz-use-system-font; 
     32 
    1533        font-style:-moz-use-system-font; 
     34 
    1635        font-variant:-moz-use-system-font; 
     36 
    1737        font-weight:normal; 
     38 
    1839        line-height:-moz-use-system-font; 
     40 
    1941        overflow:auto; 
     42 
    2043} 
    2144</style> 
    2245 
     46 
     47 
    2348<script  type="text/javascript"> 
     49 
    2450        var djConfig = { isDebug: true }; 
     51 
    2552</script> 
    2653 
     54 
     55 
    2756<openmrs:htmlInclude file="/scripts/dojo/dojo.js"/> 
    2857 
    29  
    30  
    31  
    32  
    3358  <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 
    34241   
     242 
    35243 var TreeBuilder = { 
     244 
    36245   buildTreeNodes:function (dataObjs, treeParentNode){ 
     246 
    37247     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 
    39251     for(var i=0; i<dataObjs.length;i++){ 
     252 
    40253        var typ = dataObjs[i].typeId; 
     254 
    41255        var dumm = parseInt(typ); 
     256 
    42257        var titl = dataObjs[i].title+"( "+arr[dumm]+" )";        
     258 
    43259        var node = dojo.widget.createWidget("TreeNode",{ 
     260 
    44261                 title:titl ,locationName:dataObjs[i].title, locationId:dataObjs[i].locationId , typeId:dataObjs[i].typeId , parentId:dataObjs[i].parentId  
     262 
    45263        }); 
    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 
    49272         this.buildTreeNodes(dataObjs[i].children, node); 
     273 
    50274       } 
    51      } 
     275 
     276     } 
     277 
    52278   }, 
     279 
    53280   buildTree:function (treeDat){ 
     281 
    54282     myTreeWidget = dojo.widget.createWidget("Tree",{ 
     283 
    55284       widgetId:"myNewTreeWidget" 
     285 
    56286     }); 
    57       
     287 
     288      
     289 
    58290     this.buildTreeNodes(treeDat.treeNodes,myTreeWidget); 
     291 
    59292     var treeContainer = document.getElementById("myWidgetContainer"); 
     293 
    60294     var placeHolder = document.getElementById("treePlaceHolder"); 
     295 
    61296     treeContainer.replaceChild(myTreeWidget.domNode,placeHolder); 
     297 
    62298     DemoTreeManager.init(); 
    63       
     299 
     300      
     301 
    64302   } 
     303 
    65304    
     305 
    66306 }; 
     307 
    67308  
     309 
    68310 var TreeActions = { 
     311 
    69312   addNewNode: function(parent,controllerId){ 
     313 
    70314     this.controller = dojo.widget.manager.getWidgetById(controllerId); 
     315 
    71316     if (!parent.isFolder) { 
     317 
    72318       parent.setFolder(); 
    73      } 
     319 
     320     } 
     321 
    74322     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 
    75324         var typeid = parent.typeId; 
     325 
    76326         var str="Enter corresponding code for the location type \n"; 
     327 
    77328         for(var i=typeid;i<arr.length;i++){ 
     329 
    78330                str = str + arr[i] + "\n"; 
     331 
    79332         } 
     333 
    80334         var dummy = prompt(str,""); 
    81       
    82       
     335 
     336      
     337 
     338      
     339 
    83340         if(dummy>typeid){ 
     341 
    84342     if(dummy<12){ 
     343 
    85344     var titl = prompt("Enter the location name",""); 
     345 
    86346     if(titl==""){ 
     347 
    87348        alert("Enter valid name"); 
    88      } 
     349 
     350     } 
     351 
    89352     else{ 
     353 
    90354     var rad = this.controller; 
     355 
    91356     AddressHierarchy.createLocation(titl,parseInt(dummy)-1,parent.locationId,function(data){ 
     357 
    92358        var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 
     359 
    93360                var dumm = parseInt(data[2]); 
     361 
    94362        var titl = data[0]+"( "+arr[dumm]+" )"; 
     363 
    95364        var res = rad.createChild(parent, 0, { title: titl,locationName:data[0], locationId : data[1],typeId : data[2], parentId : data[3] }); 
     365 
    96366     }) 
    97       
     367 
     368      
     369 
    98370     }} 
     371 
    99372     else{ 
     373 
    100374        alert("Invalid location type"); 
    101      } 
     375 
     376     } 
     377 
    102378         } 
     379 
    103380         else{ 
     381 
    104382                alert("Invalid location type"); 
     383 
    105384         } 
    106       
     385 
     386      
     387 
    107388   }, 
     389 
    108390   removeNode: function(node,controllerId){ 
     391 
    109392        if(node.title!="Start"){ 
     393 
    110394     if (!node) { 
     395 
    111396       alert("Nothing selected to delete"); 
     397 
    112398       return false; 
    113      } 
     399 
     400     } 
     401 
    114402     else{ 
     403 
    115404     var name = node.locationName; 
     405 
    116406     var parid = node.parentId; 
     407 
    117408     this.controller = dojo.widget.manager.getWidgetById(controllerId); 
     409 
    118410     var rad = this.controller; 
     411 
    119412     if(!confirm("Are you sure you want to delete "+name)){ 
     413 
    120414        return false; 
    121      } 
     415 
     416     } 
     417 
    122418     AddressHierarchy.deleteLocation(parid,name,function() { 
     419 
    123420        var res = rad.removeNode(node, dojo.lang.hitch(this)); 
     421 
    124422     }) 
    125       
    126      } 
     423 
     424      
     425 
     426     } 
     427 
    127428   } 
     429 
    128430   else{ 
     431 
    129432        alert("Cannot remove"); 
     433 
    130434   } 
     435 
    131436   }, 
     437 
    132438   editNode: function(node,controllerId){ 
     439 
    133440        if(node.title!="Start"){ 
     441 
    134442        if (!node) { 
     443 
    135444       alert("Nothing selected to edit"); 
     445 
    136446       return false; 
    137      } 
     447 
     448     } 
     449 
    138450     else{ 
     451 
    139452     var oldname = node.locationName; 
     453 
    140454     var parid = node.parentId; 
     455 
    141456     this.controller = dojo.widget.manager.getWidgetById(controllerId); 
     457 
    142458     var rad = this.controller; 
     459 
    143460     var newname = prompt("Enter the location name",oldname); 
    144       
     461 
     462      
     463 
    145464     if(newname!=null){ 
     465 
    146466     AddressHierarchy.editLocation(parid,oldname,newname, function(){ 
     467 
    147468        var arr=new Array("Start","Country","State","Sub Location1","Sub Location2","Sub Location3","Sub Location4","Sub Location5","Sub Location6","Postal Code","Longitude","Latitude"); 
     469 
    148470                var dumm = parseInt(node.typeId); 
     471 
    149472        var titl = newname+"( "+arr[dumm]+" )"; 
     473 
    150474        node.edit({title:titl , locationName:newname}); 
     475 
    151476     })} 
    152      } 
     477 
     478     } 
     479 
    153480   } 
     481 
    154482   else{ 
     483 
    155484        alert("Cannot Edit"); 
     485 
    156486   } 
     487 
    157488 }}; 
     489 
    158490  
     491 
    159492 var DemoTreeManager = { 
     493 
    160494   djWdgt: null, 
     495 
    161496   myTreeWidget: null, 
     497 
    162498   addTreeContextMenu: function(){ 
     499 
    163500          
     501 
    164502     var ctxMenu = this.djWdgt.createWidget("TreeContextMenu",{}); 
     503 
    165504     ctxMenu.addChild(this.djWdgt.createWidget( 
     505 
    166506       "TreeMenuItem",{caption:"Add Location Component", 
     507 
    167508         widgetId:"ctxAdd"})); 
     509 
    168510     ctxMenu.addChild(this.djWdgt.createWidget( 
     511 
    169512       "TreeMenuItem",{caption:"Edit Location Component", 
     513 
    170514         widgetId:"ctxEdit"})); 
     515 
    171516     ctxMenu.addChild(this.djWdgt.createWidget( 
     517 
    172518       "TreeMenuItem",{caption:"Delete Location Component", 
     519 
    173520         widgetId:"ctxDelete"})); 
     521 
    174522     document.body.appendChild(ctxMenu.domNode); 
     523 
    175524     /* Bind the context menu to the tree */ 
     525 
    176526     ctxMenu.listenTree(this.myTreeWidget); 
     527 
    177528   }, 
     529 
    178530  
     531 
    179532 addController: function(){ 
     533 
    180534     this.djWdgt.createWidget( 
     535 
    181536       "TreeBasicController", 
     537 
    182538       {widgetId:"myTreeController",DNDController:"create"} 
     539 
    183540     ); 
     541 
    184542   }, 
     543 
    185544   bindEvents: function(){ 
     545 
    186546     /* Bind the functions in the TreeActions object to the 
     547 
    187548        context menu entries */ 
     549 
    188550     dojo.event.topic.subscribe("ctxAdd/engage", 
     551 
    189552       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 
    191583     ); 
     584 
    192585     dojo.event.topic.subscribe("ctxDelete/engage", 
     586 
    193587       function (menuItem) { TreeActions.removeNode(menuItem.getTreeNode(), 
     588 
    194589         "myTreeController"); } 
     590 
    195591     ); 
     592 
    196593     dojo.event.topic.subscribe("ctxEdit/engage", 
     594 
    197595       function (menuItem) { TreeActions.editNode(menuItem.getTreeNode(), 
     596 
    198597         "myTreeController"); } 
     598 
    199599     ); 
     600 
    200601   }, 
     602 
    201603   init: function(){ 
     604 
    202605     /* Initialize this object */ 
     606 
    203607     this.djWdgt = dojo.widget; 
    204      this.myTreeWidget = this.djWdgt.manager. 
    205        getWidgetById("myNewTreeWidget"); 
     608 
     609     this.myTreeWidget = this.djWdgt.manager.getWidgetById("myNewTreeWidget"); 
     610 
    206611     this.addTreeContextMenu(); 
     612 
    207613     this.addController(); 
     614 
    208615     this.bindEvents(); 
     616 
    209617   } 
     618 
    210619 }; 
     620 
    211621  
     622 
    212623  
     624 
    213625 function loadData(){ 
     626 
    214627    $.getJSON("${pageContext.request.contextPath}/moduleServlet/addresshierarchy/addressTree", 
     628 
    215629        function(data){ 
     630 
    216631          TreeBuilder.buildTree(data); 
     632 
    217633        }); 
     634 
    218635  } 
     636 
    219637  
     638 
    220639  
     640 
    221641 dojo.addOnLoad( function(){ 
     642 
    222643   dojo.require("dojo.lang.*"); 
     644 
    223645   dojo.require("dojo.widget.Tree"); 
     646 
    224647   dojo.require("dojo.io.*"); 
     648 
    225649   dojo.require("dojo.widget.TreeContextMenu"); 
     650 
    226651   loadData(); 
     652 
     653   pullOptions(); 
     654 
    227655    
    228     
     656 
    229657   }); 
     658 
    230659</script> 
    231660 
     661 
     662 
    232663<body> 
    233664 
     665<div> 
     666<label>Search</label> 
     667<input type="text" name="srch" id="srch" /> 
     668<input type="submit" value="Search" onClick='searchNode()' /> 
     669</div> 
    234670 
    235671  <div  id="myWidgetContainer"> 
     672 
    236673   <span id="treePlaceHolder" 
     674 
    237675