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 @@
-
+