app/assets/javascripts/job.js.erb

Summary

Maintainability
Test Coverage
"use strict";

(function($){
  var setProgressBar = function(val1, val2) {
    var $pb1 = $('#progress-bar-steps');
    $pb1.css('width', val1 + '%');
    $pb1.find('.progress-bar-value').text(val1);
    $pb1.attr('aria-valuenow', val1);
    var $pb2 = $('#progress-bar-current-step');
    $pb2.css('width', val2 + '%');
    $pb2.find('.progress-bar-value').text(val2);
    $pb2.attr('aria-valuenow', val2);
  };

  var progressJob = function() {
    var $el = $('[data-progress-job]');
    if($el.length == 1) {
      var url = $el.data('progress-job');
      $.ajax({
        url: url
      })
      .done(function( datas ) {
        if (datas.redirect) {
          setProgressBar(100, 100);
          window.location.href = datas.redirect;
        } else if (datas.error_code) {
          $('.cvd-JobListActionsBlock').after('<p>Erreur impossible de traiter votre demande : ' + datas.error_code + '</p>');
          $('.cvd-JobListActionsBlock').remove();
          $('.progress').remove();
        } else {
          setProgressBar(datas.steps_percent, datas.current_step_percent);
        }
      });
      window.setTimeout(progressJob, <%= raw ENV['TIMEOUT'] %>);
    }
  };

  var shortUrl = function() {
    var $el = $('[data-shorturl]');
    if($el.length == 1) {
      var url = $el.data('shorturl');
      $.get(url);
      window.setTimeout(shortUrl, <%= raw ENV['TIMEOUT'] %>);
    }
  };

  var waitingStatus = function() {
    var $el = $('[data-statusurl]');
    if($el.length == 1) {
      var url = $el.data('statusurl');
      $.get(url);
      window.setTimeout(waitingStatus, <%= raw ENV['TIMEOUT'] %>);
    }
  };

  var format_switch = function(format) {
    var $el = $('[name="job[iev_action]"]');
    if ($el.length == 1) {
      var val = $el.val();
      if (val == 'convert_job') {
        $('[data-convert-both="gtfs"]').addClass('hide');
        $('[data-convert-input="gtfs"]').addClass('hide');
        $('[data-convert-output="gtfs"]').addClass('hide');

        var format = $('[name="job[format]"]:checked').val();
        var format_convert = $('[name="job[format_convert]"]');

        if (format && format_convert.length > 0) {
          if(format == 'gtfs') {
            $('label[for="job_format_convert_convert_neptune"]').click();
          } else {
            $('label[for="job_format_convert_convert_gtfs"]').click();
          }
          var format_convert = $('[name="job[format_convert]"]:checked').val();
          if (format == 'gtfs') {
            $('[data-convert-both="gtfs"]').removeClass('hide');
            $('[data-convert-input="gtfs"]').removeClass('hide');
          }
          if (format_convert == 'convert_gtfs') {
            $('[data-convert-both="gtfs"]').removeClass('hide');
            $('[data-convert-output="gtfs"]').removeClass('hide');
          }
        }

        if (format == 'gtfs' || format_convert == 'convert_gtfs') {
          $('#cvd-FormBlock-moreOptions-button').show();
        } else {
          $('#cvd-FormBlock-moreOptions-button').hide();
        }
      }
    }
  };

  $(document).on('page:change', function () {
    window.setTimeout(waitingStatus, <%= raw ENV['TIMEOUT'] %>);
    progressJob();
    shortUrl();
    format_switch();
    $('[name="job[format]"]').change( function() {
      format_switch();
    });
    $('[name="job[format_convert]"]').change( function() {
      format_switch();
    });
  });
})(jQuery);