blob: a2e7e8164d35aa37c6021910f5c9260b1d740ee6 [file] [log] [blame]
/* Copyright 2012 The Go Authors. All rights reserved.
* Use of this source code is governed by a BSD-style
* license that can be found in the LICENSE file.
*/
'use strict';
/* Controllers */
angular.module('tour.controllers', []).
// Navigation controller
controller('EditorCtrl', ['$scope', '$routeParams', '$location', 'TOC', 'I18n', 'Run', 'Fmt',
function($scope, $routeParams, $location, TOC, I18n, Run, Fmt) {
var lessons = [];
TOC.lessons.then(function(v) {
lessons = v;
})
$scope.TOC = TOC;
$scope.lessonId = $routeParams.lessonId;
$scope.curPage = parseInt($routeParams.pageNumber);
$scope.curFile = 0;
$scope.nextPage = function() {
$scope.gotoPage($scope.curPage + 1);
}
$scope.prevPage = function() {
$scope.gotoPage($scope.curPage - 1);
}
$scope.gotoPage = function(page) {
var l = $routeParams.lessonId;
if (page >= 1 && page <= lessons[$scope.lessonId].Pages.length) {
$scope.curPage = page;
} else {
l = (page < 1) ? TOC.prevLesson(l) : TOC.nextLesson(l);
if (l == '') { // If there's not previous or next
$location.path('/list');
return;
}
page = (page < 1) ? lessons[l].Pages.length : 1;
}
$location.path('/' + l + '/' + page);
}
$scope.openFile = function(file) {
$scope.curFile = file;
}
function log(mode, text) {
$(".output.active").html('<pre class="' + mode + '">' + text + '</pre>');
}
function clearOutput() {
$(".output.active").html('');
}
function file() {
return lessons[$scope.lessonId].Pages[$scope.curPage - 1].Files[$scope.curFile];
}
$scope.run = function() {
log('info', I18n.L('waiting'));
var f = file();
Run(f.Content, $(".output.active > pre")[0], {path: f.Name});
};
$scope.format = function() {
log('info', I18n.L('waiting'));
Fmt(file().Content).then(
function(data) {
if (data.data.Error != '') {
log('stderr', data.data.Error);
return
}
clearOutput();
file().Content = data.data.Body;
},
function(error) {
log('stderr', error);
});
};
}
]);