Changeset 32624 for main/trunk/greenstone3
- Timestamp:
- 2018-11-23T13:40:42+13:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/map-scripts.js
r32607 r32624 479 479 <table id="nearbyDocs">\ 480 480 <tr>\ 481 <th><a href="javascript:sortByDistance();">Distance (km)</a></th><th><a href="javascript:sortAlphabetically();">Document</a></th>\481 <th><a href="javascript:sortByDistance();">Distance</a></th><th><a href="javascript:sortAlphabetically();">Document</a></th>\ 482 482 </tr>\ 483 483 <xsl:apply-templates select="//documentNode"/>\ … … 486 486 \ 487 487 <xsl:template match="documentNode" priority="5">\ 488 <xsl:if test="@nodeID !=\''+id+'\'">\ 488 489 <tr>\ 489 490 <td>___<gsf:metadata name="Latitude"/>______<gsf:metadata name="Longitude"/>___</td>\ 490 <td><gsf:link t ype="document"><gsf:metadata name="Title"/></gsf:link></td>\491 <td><gsf:link title="'+gs.text.doc.nearby_doc_tooltip+'" type="document"><gsf:metadata name="Title"/></gsf:link></td>\ 491 492 </tr>\ 493 </xsl:if>\ 492 494 </xsl:template>'; 493 494 495 496 var url = gs.xsltParams.library_name + "?a=q&s=RawQuery&rt=rd&c=" + gs.cgiParams.c + "&s1.rawquery=" + query + "&excerptid=nearbyDocs&ilt=" + inlineTemplate.replace(/ /, "%20"); 495 497 $.ajax(url) 496 498 .success(function(response) … … 502 504 var lats = new Array(); 503 505 var lngs = new Array(); 504 505 506 var matches = response.match(/___(-?[0-9\.]*)___/g); 506 507 for(var i = 0; i < matches.length; i += 2) … … 511 512 lats.push(matchLatFloat); 512 513 lngs.push(matchLngFloat); 513 514 514 var distance = Math.sqrt(Math.pow(matchLatFloat - parseFloat(lat), 2) + Math.pow(matchLngFloat - parseFloat(lng), 2)) * (40000.0/360.0); 515 var distanceString = "" + distance; 516 distanceString = distanceString.substring(0, 6); 517 515 var distanceString = "" + distance; 516 distanceString = distanceString.substring(0, 6); 518 517 response = response.replace(matches[i] + matches[i+1], distanceString); 519 518 } … … 533 532 var docLinkEnd = response.indexOf("</td>", docLinkStart); 534 533 535 534 var dist = response.substring(distanceStart + 4, distanceEnd); 536 535 var docLink = response.substring(docLinkStart + 4, docLinkEnd); 537 536 538 _nearbyDocs.push({title:docLink, distance:dist, lat:lats[i], lng:lngs[i++]}); 537 _nearbyDocs.push({title:docLink, distance:dist, lat:lats[i], lng:lngs[i++]}); 539 538 540 539 index = docLinkEnd; 541 540 } 542 541 543 sortByDistance();542 sortByDistance(lat,lng); 544 543 545 544 var toggle = $("#nearbyDocumentsToggle"); … … 549 548 } 550 549 551 function sortByDistance() 552 { 553 var sortedTable = '<table id="nearbyDocs"><tr><th><a href="javascript:;">Distance (km)</a></th><th><a href="javascript:sortAlphabetically();">Document</a></th></tr>'; 550 var map_centering_timeout = null; 551 function recenterMapF(lat, lng) 552 { 553 return function() { 554 _map.setCenter(new google.maps.LatLng(lat, lng)); 555 } 556 } 557 function recenterMap(lat, lng) 558 { 559 560 _map.setCenter(new google.maps.LatLng(lat, lng)); 561 562 } 563 function sortByDistance(base_lat,base_lng) 564 { 565 var sortedTable = '<table id="nearbyDocs" onmouseleave="clearTimeout(map_centering_timeout); recenterMap('+base_lat+','+base_lng+');"><tr><th><a href="javascript:;">Distance</a></th><th><a href="javascript:sortAlphabetically('+base_lat+', '+base_lng+');">Document</a></th></tr>'; 554 566 _nearbyDocs.sort(function(a, b){return (a.distance - b.distance);}); 555 567 for(var i = 0; i < _nearbyDocs.length; i++) 556 { 557 sortedTable += "<tr><td>" + _nearbyDocs[i].distance + '</td><td onmouseover="_map.setCenter(new google.maps.LatLng(' + _nearbyDocs[i].lat + ',' + _nearbyDocs[i].lng + '))">' + _nearbyDocs[i].title + "</td></tr>"; 568 { 569 570 sortedTable += "<tr><td>" + prettifyDistance(_nearbyDocs[i].distance) + '</td><td onmouseover="clearTimeout(map_centering_timeout); map_centering_timeout = setTimeout(recenterMapF(' + _nearbyDocs[i].lat + ',' + _nearbyDocs[i].lng + '), 900)" >' + _nearbyDocs[i].title + "</td></tr>"; 558 571 } 559 572 sortedTable += "</table>"; … … 561 574 $("#nearbyDocuments").html(sortedTable); 562 575 } 563 564 function sortAlphabetically() 565 { 566 var sortedTable = '<table id="nearbyDocs"><tr><th><a href="javascript:sortByDistance();">Distance (km)</a></th><th><a href="javascript:;">Document</a></th></tr>'; 576 function prettifyDistance(distance) { 577 578 var new_distance; 579 if (distance < 1) { 580 new_distance = (distance * 1000); 581 // Round to nearest whole number - don't need to show points of metres.. 582 new_distance = Math.round(new_distance); 583 new_distance += " m"; 584 } 585 else { 586 new_distance = distance +" km"; 587 588 } 589 return new_distance; 590 } 591 592 593 594 function sortAlphabetically(base_lat, base_lng) 595 { 596 var sortedTable = '<table id="nearbyDocs" onmouseleave="clearTimeout(map_centering_timeout); recenterMap('+base_lat+','+base_lng+');"><tr><th><a href="javascript:sortByDistance('+base_lat+', '+base_lng+');">Distance</a></th><th><a href="javascript:;">Document</a></th></tr>'; 567 597 _nearbyDocs.sort(function(a, b) 568 598 { … … 577 607 for(var i = 0; i < _nearbyDocs.length; i++) 578 608 { 579 sortedTable += "<tr><td>" + _nearbyDocs[i].distance + '</td><td onmouseover=" _map.setCenter(new google.maps.LatLng(' + _nearbyDocs[i].lat + ',' + _nearbyDocs[i].lng + '))">' + _nearbyDocs[i].title + "</td></tr>";609 sortedTable += "<tr><td>" + _nearbyDocs[i].distance + '</td><td onmouseover="clearTimeout(map_centering_timeout); map_centering_timeout = setTimeout(recenterMapF(' + _nearbyDocs[i].lat + ',' + _nearbyDocs[i].lng + '), 900)">' + _nearbyDocs[i].title + "</td></tr>"; 580 610 } 581 611 sortedTable += "</table>";
Note:
See TracChangeset
for help on using the changeset viewer.