Skip to content
This repository has been archived by the owner on Dec 31, 2020. It is now read-only.

Commit

Permalink
Added run button to compose view
Browse files Browse the repository at this point in the history
  • Loading branch information
prasmussen committed Mar 21, 2013
1 parent 6605c63 commit c3ed3e1
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
30 changes: 29 additions & 1 deletion app/scripts/controllers/compose.js
Expand Up @@ -4,10 +4,14 @@ ComposeController.resolve = {
// Inject language settings
settings: function($route, Settings) {
return Settings.byLanguage($route.current.params.lang);
},

dbInfo: function(Couch) {
return Couch.db("api").info();
}
};

function ComposeController($scope, $routeParams, $location, Snippets, Utils, Segue, Url, settings) {
function ComposeController($scope, $routeParams, $location, Snippets, Runs, Utils, Segue, Url, settings, dbInfo) {
var language = $routeParams.lang;
$scope.language = language;

Expand All @@ -28,12 +32,36 @@ function ComposeController($scope, $routeParams, $location, Snippets, Utils, Seg
$scope.code = Utils.ensureMinLines("", 10);
}

$scope.run = function(code) {
$scope.result = {stdout: "Running..."};

// Check if result already exists in the database
var r = Runs.resultByCode(language, code);

// Result was found
r.success(function(result) {
$scope.result = result;
});

// Result was not found, lets create a run request
r.error(function() {
Runs.create(language, code)
.success(waitForResult);
});
};

$scope.save = function(name, code) {
Snippets.create(language, name, code.trimRight())
.success(saveSuccess)
.error(saveError);
};

function waitForResult(doc) {
Runs.onResult(doc._id, dbInfo.update_seq, function(doc) {
$scope.result = doc.result;
});
}

function saveSuccess(data) {
alertify.success("Snippet saved");
// Redirect to snippet view
Expand Down
8 changes: 7 additions & 1 deletion app/views/compose.html
Expand Up @@ -12,5 +12,11 @@ <h2 contenteditable ng-model="name">Untitled</h2>

<div>
<textarea ui-codemirror="options" ng-model="code"></textarea>
<button class="btn btn-primary" ng-click="save(name, code)"><i class="icon-plus icon-white"></i> Save</button>
<button class="btn btn-primary" ng-click="run(code)"><i class="icon-play icon-white"></i> Run</button>
<button class="btn btn-success" ng-click="save(name, code)"><i class="icon-plus icon-white"></i> Save</button>

<!-- Result output -->
<pre class="prettyprint linenums margin-top-20 result-badge result-badge-stdout" ng-show="result.stdout">{{result.stdout}}</pre>
<pre class="prettyprint linenums margin-top-20 result-badge result-badge-stderr" ng-show="result.stderr">{{result.stderr}}</pre>
<pre class="prettyprint linenums margin-top-20 result-badge result-badge-error" ng-show="result.error">{{result.error}}</pre>
</div>

0 comments on commit c3ed3e1

Please sign in to comment.