Sha256: 3f8148840e58063bc5704701c4ae22b97903100c5a70a93465a7a35d2eaa3158

Contents?: true

Size: 1.54 KB

Versions: 36

Compression:

Stored size: 1.54 KB

Contents

var mumuki = mumuki || {};

(function (mumuki) {
  var lastSubmission = {};

  function Laboratory(exerciseId){
    this.exerciseId = exerciseId;
  }

  function asString(json){
    return JSON.stringify(json);
  }

  function sameAsLastSolution(newSolution){
    return asString(lastSubmission.content) === asString(newSolution);
  }

  function lastSubmissionFinishedSuccessfully(){
    return lastSubmission.result && lastSubmission.result.status !== 'aborted';
  }

  function sendNewSolution(solution){
    var token = new mumuki.CsrfToken();
    var request = token.newRequest({
      type: 'POST',
      url: window.location.origin + window.location.pathname + '/solutions' + window.location.search,
      data: solution
    });

    return $.ajax(request).done(function (result) {
      lastSubmission = { content: solution, result: result };
    });
  }

  mumuki.load(function () {
    lastSubmission = {};
  });

  Laboratory.prototype = {

    // ==========
    // Public API
    // ==========

    // Runs tests for the current exercise using the given submission
    // content.
    runTests: function(content) {
      return this._submitSolution({ solution: content });
    },

    // ===========
    // Private API
    // ===========

    _submitSolution: function (solution) {
      if(lastSubmissionFinishedSuccessfully() && sameAsLastSolution(solution)){
        return $.Deferred().resolve(lastSubmission.result);
      } else {
        return sendNewSolution(solution);
      }
    },
  };

  mumuki.bridge = {
    Laboratory: Laboratory
  };

}(mumuki));

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
mumuki-laboratory-7.6.2 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.6.1 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.6.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.5.2 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.5.1 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.5.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.4.2 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.4.1 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.4.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.3.1 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.3.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.2.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.1.0 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.12 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.11 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.10 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.9 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.8 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.7 app/assets/javascripts/mumuki_laboratory/application/bridge.js
mumuki-laboratory-7.0.6 app/assets/javascripts/mumuki_laboratory/application/bridge.js