91 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
window.common = (function(global) {
 | 
						|
  const {
 | 
						|
    $,
 | 
						|
    moment,
 | 
						|
    ga = (() => {}),
 | 
						|
    common = { init: [] }
 | 
						|
  } = global;
 | 
						|
 | 
						|
  function submitChallengeHandler(e) {
 | 
						|
    e.preventDefault();
 | 
						|
 | 
						|
    var solution = common.editor.getValue();
 | 
						|
 | 
						|
    $('#submit-challenge')
 | 
						|
      .attr('disabled', 'true')
 | 
						|
      .removeClass('btn-primary')
 | 
						|
      .addClass('btn-warning disabled');
 | 
						|
 | 
						|
    var $checkmarkContainer = $('#checkmark-container');
 | 
						|
    $checkmarkContainer.css({ height: $checkmarkContainer.innerHeight() });
 | 
						|
 | 
						|
    $('#challenge-checkmark')
 | 
						|
      .addClass('zoomOutUp')
 | 
						|
      // .removeClass('zoomInDown')
 | 
						|
      .delay(1000)
 | 
						|
      .queue(function(next) {
 | 
						|
        $(this).replaceWith(
 | 
						|
          '<div id="challenge-spinner" ' +
 | 
						|
          'class="animated zoomInUp inner-circles-loader">' +
 | 
						|
          'submitting...</div>'
 | 
						|
        );
 | 
						|
        next();
 | 
						|
      });
 | 
						|
 | 
						|
    let timezone = 'UTC';
 | 
						|
    try {
 | 
						|
      timezone = moment.tz.guess();
 | 
						|
    } catch (err) {
 | 
						|
      err.message = `
 | 
						|
          known bug, see: https://github.com/moment/moment-timezone/issues/294:
 | 
						|
          ${err.message}
 | 
						|
        `;
 | 
						|
      console.error(err);
 | 
						|
    }
 | 
						|
    const data = JSON.stringify({
 | 
						|
      id: common.challengeId,
 | 
						|
      name: common.challengeName,
 | 
						|
      challengeType: +common.challengeType,
 | 
						|
      solution,
 | 
						|
      timezone
 | 
						|
    });
 | 
						|
 | 
						|
    $.ajax({
 | 
						|
        url: '/completed-challenge/',
 | 
						|
        type: 'POST',
 | 
						|
        data,
 | 
						|
        contentType: 'application/json',
 | 
						|
        dataType: 'json'
 | 
						|
      })
 | 
						|
      .success(function(res) {
 | 
						|
        if (res) {
 | 
						|
          window.location =
 | 
						|
            '/challenges/next-challenge?id=' + common.challengeId;
 | 
						|
        }
 | 
						|
      })
 | 
						|
      .fail(function() {
 | 
						|
        window.location.replace(window.location.href);
 | 
						|
      });
 | 
						|
  }
 | 
						|
 | 
						|
  common.showCompletion = function showCompletion() {
 | 
						|
 | 
						|
    ga(
 | 
						|
      'send',
 | 
						|
      'event',
 | 
						|
      'Challenge',
 | 
						|
      'solved',
 | 
						|
      common.gaName,
 | 
						|
      true
 | 
						|
    );
 | 
						|
 | 
						|
    $('#complete-courseware-dialog').modal('show');
 | 
						|
    $('#complete-courseware-dialog .modal-header').click();
 | 
						|
 | 
						|
    $('#submit-challenge').off('click');
 | 
						|
    $('#submit-challenge').on('click', submitChallengeHandler);
 | 
						|
  };
 | 
						|
 | 
						|
  return common;
 | 
						|
}(window));
 |