| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | window.common = (function(global) { | 
					
						
							|  |  |  |   const { | 
					
						
							|  |  |  |     $, | 
					
						
							| 
									
										
										
										
											2016-01-19 21:11:20 -05:00
										 |  |  |     moment, | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  |     ga = (() => {}), | 
					
						
							| 
									
										
										
										
											2016-02-03 11:33:30 -08:00
										 |  |  |     common = { init: [] } | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  |   } = global; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |   function submitChallengeHandler(e) { | 
					
						
							|  |  |  |     e.preventDefault(); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-08 13:52:03 -08:00
										 |  |  |     var solution = common.editor.getValue(); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |     $('#submit-challenge') | 
					
						
							|  |  |  |       .attr('disabled', 'true') | 
					
						
							|  |  |  |       .removeClass('btn-primary') | 
					
						
							|  |  |  |       .addClass('btn-warning disabled'); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |     var $checkmarkContainer = $('#checkmark-container'); | 
					
						
							|  |  |  |     $checkmarkContainer.css({ height: $checkmarkContainer.innerHeight() }); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |     $('#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(); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |     let timezone = 'UTC'; | 
					
						
							|  |  |  |     try { | 
					
						
							|  |  |  |       timezone = moment.tz.guess(); | 
					
						
							|  |  |  |     } catch (err) { | 
					
						
							|  |  |  |       err.message = `
 | 
					
						
							| 
									
										
										
										
											2016-02-03 11:33:30 -08:00
										 |  |  |           known bug, see: https://github.com/moment/moment-timezone/issues/294:
 | 
					
						
							|  |  |  |           ${err.message} | 
					
						
							|  |  |  |         `;
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |       console.error(err); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     const data = JSON.stringify({ | 
					
						
							|  |  |  |       id: common.challengeId, | 
					
						
							|  |  |  |       name: common.challengeName, | 
					
						
							|  |  |  |       challengeType: +common.challengeType, | 
					
						
							|  |  |  |       solution, | 
					
						
							|  |  |  |       timezone | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-02-10 22:10:06 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |     $.ajax({ | 
					
						
							| 
									
										
										
										
											2016-02-10 22:10:06 -08:00
										 |  |  |         url: '/completed-challenge/', | 
					
						
							|  |  |  |         type: 'POST', | 
					
						
							|  |  |  |         data, | 
					
						
							|  |  |  |         contentType: 'application/json', | 
					
						
							|  |  |  |         dataType: 'json' | 
					
						
							|  |  |  |       }) | 
					
						
							| 
									
										
										
										
											2016-02-12 19:20:35 -08:00
										 |  |  |       .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); | 
					
						
							| 
									
										
										
										
											2015-11-17 21:25:16 -08:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return common; | 
					
						
							|  |  |  | }(window)); |