location_field_plain.html 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <div class="bx-form-input-location-__name__ bx-form-input-location-cont bx-clearfix">
  2. __inputs__
  3. <div class="bx-form-input-location-status-cont bx-def-font-small bx-def-font-grayed bx-def-margin-thd-top bx-clearfix">
  4. <div class="bx-form-input-location-status ok"><i class="sys-icon sys-colored col-green1-dark check-circle"></i> <bx_text:_sys_location_status_ok /></div>
  5. <div class="bx-form-input-location-status fail"><i class="sys-icon sys-colored col-red1-dark times-circle"></i> <bx_text:_sys_location_status_fail /></div>
  6. <div class="bx-form-input-location-status undef"><i class="sys-icon sys-colored question-circle"></i> <bx_text:_sys_location_status_undef /></div>
  7. <div class="bx-form-input-location-status loading"><i class="sys-icon sys-colored sync-alt"></i> <bx_text:_sys_loading /></div>
  8. <div class="bx-form-input-location-copyright"></div>
  9. </div>
  10. </div>
  11. <script>
  12. (function () {
  13. var getLocationString = function () {
  14. var sCountry = $('select[name="__name___country"]').val();
  15. var sZip = $('input[name="__name___zip"]').val();
  16. var sState = $('input[name="__name___state"]').val();
  17. var sCity = $('input[name="__name___city"]').val();
  18. var sStreet = $('input[name="__name___street"]').val();
  19. var sNum = $('input[name="__name___street_number"]').val();
  20. if (!sCountry || !sCountry.length)
  21. return '';
  22. sRet = (sZip.length ? sZip + ', ' : '') + sCountry;
  23. sRet = (sCity.length ? sCity + ', ': '') + (sState.length ? sState + ', ': '') + sRet;
  24. if (sCity.length)
  25. sRet = (sStreet.length && sNum.length ? sNum + ' ' : '') + (sStreet.length ? sStreet + ', ' : '') + sRet;
  26. return sRet;
  27. }
  28. var setLocationStatus = function (s) {
  29. $('.bx-form-input-location-__name__ .bx-form-input-location-status').hide();
  30. $('.bx-form-input-location-__name__ .bx-form-input-location-status.' + s).show();
  31. }
  32. setLocationStatus('undef');
  33. $(document).ready(function () {
  34. $('input[name^="__name__"],select[name^="__name__"]').on('change', function () {
  35. if ('undefined' !== typeof(glBxLocationFieldPlainGeocodingRequest) && glBxLocationFieldPlainGeocodingRequest) { // cancel previous request
  36. clearTimeout(glBxLocationFieldPlainGeocodingRequest);
  37. glBxLocationFieldPlainGeocodingRequest = null;
  38. }
  39. if ('hidden' == this.type)
  40. return;
  41. var s = getLocationString();
  42. if (!s) {
  43. setLocationStatus('undef');
  44. return;
  45. }
  46. glBxLocationFieldPlainGeocodingRequest = setTimeout(function () {
  47. setLocationStatus('loading');
  48. $.getJSON('__nominatim_server__/search/' + encodeURIComponent(s) + '?format=json&limit=1&email=__nominatim_email__', function (oResult) {
  49. glBxLocationFieldPlainGeocodingRequest = false;
  50. if (('object' === typeof oResult) && oResult.length && ('undefined' !== typeof oResult[0].lat) && ('undefined' !== typeof oResult[0].lon)) {
  51. $('input[name="__name___lat"]').val(oResult[0].lat);
  52. $('input[name="__name___lng"]').val(oResult[0].lon);
  53. if ('undefined' !== typeof(oResult[0].licence))
  54. $('.bx-form-input-location-__name__ .bx-form-input-location-copyright').html(oResult[0].licence);
  55. setLocationStatus('ok');
  56. } else {
  57. $('input[name="__name___lat"]').val(0);
  58. $('input[name="__name___lng"]').val(0);
  59. setLocationStatus('fail');
  60. }
  61. });
  62. }, 1500);
  63. });
  64. if (getLocationString()) {
  65. if (parseFloat($('input[name="__name___lat"]').val()) && parseFloat($('input[name="__name___lng"]').val()))
  66. setLocationStatus('ok');
  67. else
  68. setLocationStatus('fail');
  69. }
  70. else {
  71. setLocationStatus('undef');
  72. }
  73. });
  74. })();
  75. </script>