From 2c4b89f3788b04e80a1a4360f0c1937a8a4069f6 Mon Sep 17 00:00:00 2001 From: Buddy Sandidge Date: Mon, 16 Feb 2015 17:33:51 -0800 Subject: [PATCH] Can get the results of running the code --- assets/app/app.js | 3 ++ assets/app/widgets/slide/results.js | 27 ++++++++++++ assets/app/widgets/slide/template.hbs | 11 ++++- assets/app/widgets/slide/view.js | 38 +++++++++++++++- assets/index.html | 2 +- assets/style/main.scss | 19 +++++++- bin/deck | 63 +++++++++++++++++++++++++++ 7 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 assets/app/widgets/slide/results.js diff --git a/assets/app/app.js b/assets/app/app.js index 47312e0..0f1f249 100644 --- a/assets/app/app.js +++ b/assets/app/app.js @@ -1,4 +1,5 @@ define([ + 'jquery', 'underscore', 'backbone', 'marionette', @@ -7,6 +8,7 @@ define([ 'widgets/slide/view', 'widgets/slide/model' ], function AppDefine( + $, _, Backbone, Marionette, @@ -68,6 +70,7 @@ define([ }, onSlideChange: function onSlideChange(num) { + $('body').removeClass().addClass('page-' + num); this.model.set('id', num); this.model.fetch(); } diff --git a/assets/app/widgets/slide/results.js b/assets/app/widgets/slide/results.js new file mode 100644 index 0000000..cb640de --- /dev/null +++ b/assets/app/widgets/slide/results.js @@ -0,0 +1,27 @@ +define(['underscore', 'core/model'], function CodeResultsDefine(_, Model) { + 'use strict'; + + function ResultsModel() { + Model.apply(this, arguments); + } + + ResultsModel.prototype = new Model(); + + _.extend(ResultsModel.prototype, { + defaults: function defaults() { + return {id: 0, env: ''}; + }, + + url: function url() { + var id = this.get('id'); + var env = this.get('env'); + if (id < 10) { + return '/results/' + env + '/0' + id; + } else { + return '/results/' + env + '/' + id; + } + } + }); + + return ResultsModel; +}); diff --git a/assets/app/widgets/slide/template.hbs b/assets/app/widgets/slide/template.hbs index 6f67725..4d8a8f1 100644 --- a/assets/app/widgets/slide/template.hbs +++ b/assets/app/widgets/slide/template.hbs @@ -1,4 +1,11 @@ -
+
-
+ {{#code}} +
+ + + +
+
+ {{/code}}
diff --git a/assets/app/widgets/slide/view.js b/assets/app/widgets/slide/view.js index 53aff7a..cc9a5cc 100644 --- a/assets/app/widgets/slide/view.js +++ b/assets/app/widgets/slide/view.js @@ -1,10 +1,20 @@ define([ + 'jquery', 'underscore', 'marionette', 'lib/markdown', 'lib/syntax', + 'widgets/slide/results', 'widgets/slide/template' -], function AppSlideWidget(_, Marionette, markdown, syntax, template) { +], function AppSlideWidget( + $, + _, + Marionette, + markdown, + syntax, + ResultsModel, + template +) { 'use strict'; var SlideView = Marionette.ItemView.extend({ @@ -12,7 +22,14 @@ define([ ui: { copy: '.copy', - code: '.language-javascript' + code: '.language-javascript', + button: '.request', + stdout: '.stdout', + stderr: '.stderr' + }, + + events: { + 'click @ui.button': 'onRequestResult' }, modelEvents: { @@ -28,6 +45,23 @@ define([ if (code) { this.ui.code.html(syntax(code)); } + }, + + onRequestResult: function onRequestResult(event) { + event.preventDefault(); + var env = $(event.target).data('env'); + var results = new ResultsModel({id: this.model.get('id'), env: env}); + var $stdout = this.ui.stdout; + var $stderr = this.ui.stderr; + results.fetch({ + success: function () { + $stdout.text(results.get('stdout')); + $stderr.text(results.get('stderr')); + }, + error: function () { + $stdout.text('error'); + } + }); } }); diff --git a/assets/index.html b/assets/index.html index bacf589..af13442 100644 --- a/assets/index.html +++ b/assets/index.html @@ -10,7 +10,7 @@ -
+