mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-29 01:10:04 +02:00
awesome hooking everything up
This commit is contained in:
parent
378fcc0377
commit
0735eb3d64
11 changed files with 266 additions and 139 deletions
|
@ -12,6 +12,7 @@ var commandUI;
|
|||
var sandbox;
|
||||
var eventBaton;
|
||||
var levelArbiter;
|
||||
var levelDropdown;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -29,11 +30,15 @@ var init = function() {
|
|||
var Level = require('../level').Level;
|
||||
var EventBaton = require('../util/eventBaton').EventBaton;
|
||||
var LevelArbiter = require('../level/arbiter').LevelArbiter;
|
||||
var LevelDropdownView = require('../views/levelDropdownView').LevelDropdownView;
|
||||
|
||||
eventBaton = new EventBaton();
|
||||
commandUI = new CommandUI();
|
||||
sandbox = new Sandbox();
|
||||
levelArbiter = new LevelArbiter();
|
||||
levelDropdown = new LevelDropdownView({
|
||||
wait: true
|
||||
});
|
||||
|
||||
// we always want to focus the text area to collect input
|
||||
var focusTextArea = function() {
|
||||
|
@ -147,5 +152,9 @@ exports.getLevelArbiter = function() {
|
|||
return levelArbiter;
|
||||
};
|
||||
|
||||
exports.getLevelDropdown = function() {
|
||||
return levelDropdown;
|
||||
};
|
||||
|
||||
exports.init = init;
|
||||
|
||||
|
|
|
@ -6,11 +6,15 @@ var Backbone = require('backbone');
|
|||
var levelSequences = require('../levels').levelSequences;
|
||||
var sequenceInfo = require('../levels').sequenceInfo;
|
||||
|
||||
var Main = require('../app');
|
||||
|
||||
function LevelArbiter() {
|
||||
this.levelMap = {};
|
||||
this.init();
|
||||
// TODO -- local storage sync
|
||||
this.solvedMap = {};
|
||||
|
||||
Main.getEvents().on('levelSolved', this.levelSolved, this);
|
||||
}
|
||||
|
||||
LevelArbiter.prototype.init = function() {
|
||||
|
@ -42,10 +46,13 @@ LevelArbiter.prototype.isLevelSolved = function(id) {
|
|||
if (!this.levelMap[id]) {
|
||||
throw new Error('that level doesnt exist!');
|
||||
}
|
||||
console.log('is it solved', id);
|
||||
return Boolean(this.solvedMap[id]);
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.levelSolved = function(id) {
|
||||
this.solvedMap[id] = true;
|
||||
};
|
||||
|
||||
LevelArbiter.prototype.validateLevel = function(level) {
|
||||
level = level || {};
|
||||
var requiredFields = [
|
||||
|
|
|
@ -258,6 +258,7 @@ var Level = Sandbox.extend({
|
|||
|
||||
levelSolved: function(defer) {
|
||||
this.solved = true;
|
||||
Main.getEvents().trigger('levelSolved', this.level.id);
|
||||
this.hideGoal();
|
||||
|
||||
var nextLevel = Main.getLevelArbiter().getNextLevel(this.level.id);
|
||||
|
|
|
@ -149,6 +149,14 @@ var Sandbox = Backbone.View.extend({
|
|||
deferred.resolve();
|
||||
},
|
||||
|
||||
showLevels: function(command, deferred) {
|
||||
var whenClosed = Q.defer();
|
||||
Main.getLevelDropdown().show(whenClosed);
|
||||
whenClosed.promise.done(function() {
|
||||
command.finishWith(deferred);
|
||||
});
|
||||
},
|
||||
|
||||
processSandboxCommand: function(command, deferred) {
|
||||
var commandMap = {
|
||||
'help': this.helpDialog,
|
||||
|
@ -157,7 +165,8 @@ var Sandbox = Backbone.View.extend({
|
|||
'clear': this.clear,
|
||||
'exit level': this.exitLevel,
|
||||
'level': this.startLevel,
|
||||
'sandbox': this.exitLevel
|
||||
'sandbox': this.exitLevel,
|
||||
'levels': this.showLevels
|
||||
};
|
||||
var method = commandMap[command.get('method')];
|
||||
if (!method) { throw new Error('no method for that wut'); }
|
||||
|
|
|
@ -43,7 +43,8 @@ var regexMap = {
|
|||
'clear': /^clear($|\s)/,
|
||||
'exit level': /^exit level($|\s)/,
|
||||
'sandbox': /^sandbox($|\s)/,
|
||||
'level': /^level\s?([a-zA-Z0-9]*)/
|
||||
'level': /^level\s?([a-zA-Z0-9]*)/,
|
||||
'levels': /^levels($|\s)/
|
||||
};
|
||||
|
||||
var parse = function(str) {
|
||||
|
|
|
@ -34,5 +34,6 @@ $(document).ready(function() {
|
|||
window.eventBaton = toGlobalize.Main.getEventBaton();
|
||||
window.sandbox = toGlobalize.Main.getSandbox();
|
||||
window.modules = toGlobalize;
|
||||
window.levelDropdown = toGlobalize.Main.getLevelDropdown();
|
||||
});
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
options = options || {};
|
||||
this.JSON = {};
|
||||
|
||||
Main.getEvents().on('levelSolved', this.updateSolvedStatus, this);
|
||||
|
||||
this.navEvents = _.clone(Backbone.Events);
|
||||
this.navEvents.on('clickedID', _.debounce(
|
||||
_.bind(this.loadLevelID, this),
|
||||
|
@ -39,6 +41,20 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
}
|
||||
},
|
||||
|
||||
show: function(deferred) {
|
||||
this.showDeferred = deferred;
|
||||
LevelDropdownView.__super__.show.apply(this);
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
if (this.showDeferred) {
|
||||
this.showDeferred.resolve();
|
||||
}
|
||||
this.showDeferred = undefined;
|
||||
|
||||
LevelDropdownView.__super__.hide.apply(this);
|
||||
},
|
||||
|
||||
loadLevelID: function(id) {
|
||||
Main.getEventBaton().trigger(
|
||||
'commandSubmitted',
|
||||
|
@ -105,8 +121,6 @@ var SeriesView = BaseView.extend({
|
|||
},
|
||||
|
||||
click: function(ev) {
|
||||
console.log(ev.srcElement);
|
||||
console.log(ev.srcElement.id);
|
||||
if (!ev || !ev.srcElement || !ev.srcElement.id) {
|
||||
console.warn('wut, no id'); return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue