mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-06-27 16:38:50 +02:00
Editing levels in the builder :D Resolves #187
This commit is contained in:
parent
7fc33541cc
commit
0aba56ef15
3 changed files with 30 additions and 14 deletions
|
@ -42,19 +42,31 @@ var parse = util.genParseCommand(regexMap, 'processLevelBuilderCommand');
|
||||||
var LevelBuilder = Level.extend({
|
var LevelBuilder = Level.extend({
|
||||||
initialize: function(options) {
|
initialize: function(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.level = options.level || {};
|
options.level = {};
|
||||||
|
|
||||||
var locale = intl.getLocale();
|
var locale = intl.getLocale();
|
||||||
options.level.startDialog = {};
|
options.level.startDialog = {};
|
||||||
options.level.startDialog[locale] = {
|
options.level.startDialog[locale] = {
|
||||||
childViews: intl.getDialog(require('../dialogs/levelBuilder'))
|
childViews: intl.getDialog(require('../dialogs/levelBuilder'))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// if we are editing a level our behavior is a bit different
|
||||||
|
var editLevelJSON;
|
||||||
|
if (options.editLevel) {
|
||||||
|
editLevelJSON = Main.getLevelArbiter().getLevel(options.editLevel);
|
||||||
|
options.level = editLevelJSON;
|
||||||
|
}
|
||||||
|
|
||||||
LevelBuilder.__super__.initialize.apply(this, [options]);
|
LevelBuilder.__super__.initialize.apply(this, [options]);
|
||||||
|
if (!options.editLevel) {
|
||||||
|
this.startDialogObj = undefined;
|
||||||
|
this.definedGoal = false;
|
||||||
|
} else {
|
||||||
|
this.startDialogObj = editLevelJSON.startDialog[locale];
|
||||||
|
this.definedGoal = true;
|
||||||
|
}
|
||||||
|
|
||||||
this.startDialogObj = undefined;
|
// we wont be using this stuff, and it is deleted to ensure we overwrite all functions that
|
||||||
this.definedGoal = false;
|
|
||||||
|
|
||||||
// we wont be using this stuff, and its to delete to ensure we overwrite all functions that
|
|
||||||
// include that functionality
|
// include that functionality
|
||||||
delete this.treeCompare;
|
delete this.treeCompare;
|
||||||
delete this.solved;
|
delete this.solved;
|
||||||
|
@ -68,9 +80,11 @@ var LevelBuilder = Level.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
initGoalData: function() {
|
initGoalData: function() {
|
||||||
// add some default behavior in the beginning
|
// add some default behavior in the beginning if we are not editing
|
||||||
this.level.goalTreeString = '{"branches":{"master":{"target":"C1","id":"master"},"makeLevel":{"target":"C2","id":"makeLevel"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"makeLevel","id":"HEAD"}}';
|
if (!this.options.editLevel) {
|
||||||
this.level.solutionCommand = 'git checkout -b makeLevel; git commit';
|
this.level.goalTreeString = '{"branches":{"master":{"target":"C1","id":"master"},"makeLevel":{"target":"C2","id":"makeLevel"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"},"C2":{"parents":["C1"],"id":"C2"}},"HEAD":{"target":"makeLevel","id":"HEAD"}}';
|
||||||
|
this.level.solutionCommand = 'git checkout -b makeLevel; git commit';
|
||||||
|
}
|
||||||
LevelBuilder.__super__.initGoalData.apply(this, arguments);
|
LevelBuilder.__super__.initGoalData.apply(this, arguments);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -272,7 +286,7 @@ var LevelBuilder = Level.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
finish: function(command, deferred) {
|
finish: function(command, deferred) {
|
||||||
if (!this.gitCommandsIssued.length || !this.definedGoal) {
|
if (!this.options.editLevel && (!this.gitCommandsIssued.length || !this.definedGoal)) {
|
||||||
command.set('error', new Errors.GitError({
|
command.set('error', new Errors.GitError({
|
||||||
msg: intl.str('solution-empty')
|
msg: intl.str('solution-empty')
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -117,7 +117,7 @@ var regexMap = {
|
||||||
'level': /^level\s?([a-zA-Z0-9]*)/,
|
'level': /^level\s?([a-zA-Z0-9]*)/,
|
||||||
'levels': /^levels($|\s)/,
|
'levels': /^levels($|\s)/,
|
||||||
'mobileAlert': /^mobile alert($|\s)/,
|
'mobileAlert': /^mobile alert($|\s)/,
|
||||||
'build level': /^build +level($|\s)/,
|
'build level': /^build +level\s?([a-zA-Z0-9]*)$/,
|
||||||
'export tree': /^export +tree$/,
|
'export tree': /^export +tree$/,
|
||||||
'importTreeNow': /^importTreeNow($|\s)/,
|
'importTreeNow': /^importTreeNow($|\s)/,
|
||||||
'importLevelNow': /^importLevelNow($|\s)/,
|
'importLevelNow': /^importLevelNow($|\s)/,
|
||||||
|
|
|
@ -194,12 +194,14 @@ var Sandbox = Backbone.View.extend({
|
||||||
this.clear();
|
this.clear();
|
||||||
|
|
||||||
var whenBuilderOpen = Q.defer();
|
var whenBuilderOpen = Q.defer();
|
||||||
|
|
||||||
var LevelBuilder = require('../level/builder').LevelBuilder;
|
var LevelBuilder = require('../level/builder').LevelBuilder;
|
||||||
this.levelBuilder = new LevelBuilder({
|
|
||||||
deferred: whenBuilderOpen
|
|
||||||
});
|
|
||||||
|
|
||||||
|
var regexResults = command.get('regexResults') || [];
|
||||||
|
var toEdit = regexResults[1] || false;
|
||||||
|
this.levelBuilder = new LevelBuilder({
|
||||||
|
deferred: whenBuilderOpen,
|
||||||
|
editLevel: toEdit
|
||||||
|
});
|
||||||
whenBuilderOpen.promise.then(function() {
|
whenBuilderOpen.promise.then(function() {
|
||||||
command.finishWith(deferred);
|
command.finishWith(deferred);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue