Sha256: da1b0870e8d56d319a1f1f4161ef4fc8e06c2c04610ab4eb45dd20b358466755

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

$(() => {
  const info = ($target, msg) => {
    const $label = $target.closest("label")
    $label.find(".form-error").remove();
    if (msg) {
      $('<span class="form-error"/>').text(msg).appendTo($label).show();
    }
  };

  const setLocating = ($button, enable) => {
    if (enable) {
      $button.attr("disabled", true);
    } else {
      $button.attr("disabled", false);
    }
  }

  $(".user-device-location button").on("click", (e) => {
    const $this = $(e.target);
    if ($this.is(":disabled")) {
      return;
    }

    const $input = $(`#${e.target.dataset.input}`);
    const errorNoLocation = e.target.dataset.errorNoLocation;
    const errorUnsupported = e.target.dataset.errorUnsupported;
    const url = e.target.dataset.url;

    if (navigator.geolocation) {
      setLocating($this, true);
      navigator.geolocation.getCurrentPosition((position) => {
        const coordinates  = [position.coords.latitude, position.coords.longitude];
        // reverse geolocation
        $.post(url, { latitude: coordinates[0], longitude: coordinates[1] }, (data) => {
          $input.val(data.address)
        })
        setLocating($this, false);
        $input.trigger(
          "geocoder-suggest-coordinates.decidim",
          [coordinates]
        );
      }, (evt) => { 
        info($input, `${errorNoLocation} ${evt.message}`);
        $this.attr("disabled", false);
      }, {
        enableHighAccuracy: true
      });
    } else {
      info($input, errorUnsupported);
    }
  });
});

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-reporting_proposals-0.6.0 app/packs/src/decidim/reporting_proposals/reverse_geocoding.js