$()

in pontoon/teams/static/js/request.js [164:293]


$(function () {
  const container = $('#main .container');
  let type = $('#server').data('locale-projects') ? 'locale-projects' : 'team';

  // Switch between available projects/teams and projects/team to request
  container.on('click', '.controls .request-toggle', function (e) {
    e.stopPropagation();
    e.preventDefault();

    const type_ = $(this).is('.request-pretranslation')
      ? 'pretranslation'
      : type;

    Pontoon.requestItem.toggleItem($(this).is('.back'), type_);
    $(this).siblings('.request-toggle').toggle();
  });

  // Select projects
  container.on('click', '.items td.check', function (e) {
    if ($('.controls .request-toggle').is('.back:visible')) {
      e.stopPropagation();

      const type_ = $('.items').is('.requesting-pretranslation')
        ? 'pretranslation'
        : 'locale-projects';

      $(this).toggleClass('enabled');
      Pontoon.requestItem.toggleButton(true, type_);
    }
  });

  // Radio button hover behavior
  container.on(
    {
      mouseenter: function () {
        $(this).toggleClass('fa-circle fa-dot-circle');
      },
      mouseleave: function () {
        $(this).toggleClass('fa-circle fa-dot-circle');
      },
    },
    '.items td.radio:not(.enabled)',
  );

  // Select team
  container.on('click', '.items td.radio', function (e) {
    if ($('.controls .request-toggle').is('.back:visible')) {
      e.stopPropagation();

      $(this)
        .add('.items td.radio.enabled')
        .toggleClass('fa far fa-circle fa-dot-circle enabled');

      if ($(this).hasClass('enabled')) {
        $(this).toggleClass('fa-circle fa-dot-circle');
      }

      Pontoon.requestItem.toggleButton(true, (type = 'locale-projects'));
    }
  });

  // Prevent openning project page from the request panel
  const menu = container.find('.project .menu');
  menu.find('a').click(function (e) {
    if (menu.find('.search-wrapper > a').is('.back:visible')) {
      e.preventDefault();
    }
  });

  // Enter team details
  container.on(
    'change keyup click',
    '#request-team-form input[type=text]',
    function (e) {
      if ($('.controls .request-toggle').is('.back:visible')) {
        e.stopPropagation();
        Pontoon.requestItem.toggleButton(true, (type = 'team'));
      }
    },
  );

  // Request projects/team
  container.on('click', '.request-item', function (e) {
    e.preventDefault();
    e.stopPropagation();

    let locale = '';

    if ($(this).is('.confirmed')) {
      // Requesting from team page
      if ($('body').hasClass('locale')) {
        const projects = $('.items td.check.enabled')
          .map(function (val, element) {
            return $(element).siblings('.name').data('slug');
          })
          .get();
        locale = $('#server').data('locale') || Pontoon.getSelectedLocale();

        if ($('.items').is('.request')) {
          $(this).html('Request new projects');
          Pontoon.requestItem.requestProjects(locale, projects, 'projects');
        } else if ($('.items').is('.requesting-pretranslation')) {
          $(this).html('Request pretranslation');
          Pontoon.requestItem.requestPretranslation(locale, projects);
        }

        $(this).removeClass('confirmed');
      }

      // Requesting from project page
      else if (type === 'locale-projects' && $('body').hasClass('project')) {
        const project = $('#server').data('project');
        locale = $('.items td.radio.enabled').siblings('.name').data('slug');

        Pontoon.requestItem.requestProjects(locale, [project], 'language');

        $(this).removeClass('confirmed').html('Request new language');
      } else if (type === 'team') {
        locale = $.trim($('#request-team-form #id_name').val());
        const code = $.trim($('#request-team-form #id_code').val());

        Pontoon.requestItem.requestTeam(locale, code);

        $(this).removeClass('confirmed').html('Request new team');
      }
    } else {
      $(this).addClass('confirmed').html('Are you sure?');
    }
  });
});