mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-03 03:04:27 +02:00
makes other vis now too
This commit is contained in:
parent
9173e75c1a
commit
29d401e701
4 changed files with 147 additions and 18 deletions
|
@ -19,7 +19,7 @@ function GitEngine(options) {
|
|||
this.refs = {};
|
||||
this.HEAD = null;
|
||||
this.origin = null;
|
||||
this.localRepo = options.localRepro;
|
||||
this.localRepo = null;
|
||||
|
||||
this.branchCollection = options.branches;
|
||||
this.commitCollection = options.collection;
|
||||
|
@ -49,6 +49,10 @@ GitEngine.prototype.initUniqueID = function() {
|
|||
})();
|
||||
};
|
||||
|
||||
GitEngine.prototype.assignLocalRepo = function(repo) {
|
||||
this.localRepo = repo;
|
||||
};
|
||||
|
||||
GitEngine.prototype.defaultInit = function() {
|
||||
var defaultTree = this.getDefaultTree();
|
||||
this.loadTree(defaultTree);
|
||||
|
@ -80,7 +84,7 @@ GitEngine.prototype.hasOrigin = function() {
|
|||
};
|
||||
|
||||
GitEngine.prototype.isOrigin = function() {
|
||||
return false;
|
||||
return !!this.localRepro;
|
||||
};
|
||||
|
||||
GitEngine.prototype.exportTree = function() {
|
||||
|
@ -192,11 +196,26 @@ GitEngine.prototype.instantiateFromTree = function(tree) {
|
|||
};
|
||||
|
||||
GitEngine.prototype.makeOrigin = function(tree) {
|
||||
this.origin = new GitEngine({
|
||||
if (this.hasOrigin()) {
|
||||
throw new GitError({
|
||||
msg: intl.str('git-error-options')
|
||||
});
|
||||
}
|
||||
|
||||
// this is super super ugly but a necessary hack because of the way LGB was
|
||||
// originally designed. We need to get to the top level visualization from
|
||||
// the git engine -- aka we need to access our own visuals, then the
|
||||
// visualization and ask the main vis to create a new vis/git pair. Then
|
||||
// we grab the gitengine out of that and assign that as our origin repo
|
||||
// which connects the two
|
||||
var masterVis = this.gitVisuals.getVisualization();
|
||||
var originRepo = masterVis.makeOrigin({
|
||||
localRepo: this,
|
||||
// dont let it intercept commands
|
||||
eventBaton: new EventBaton()
|
||||
tree: this.getDefaultTree()
|
||||
});
|
||||
|
||||
this.origin = originRepo;
|
||||
originRepo.assignLocalRepo(this);
|
||||
};
|
||||
|
||||
GitEngine.prototype.getOrMakeRecursive = function(tree, createdSoFar, objID) {
|
||||
|
|
|
@ -18,6 +18,7 @@ var VisEdgeCollection = require('../visuals/visEdge').VisEdgeCollection;
|
|||
function GitVisuals(options) {
|
||||
options = options || {};
|
||||
this.options = options;
|
||||
this.visualization = options.visualization;
|
||||
this.commitCollection = options.commitCollection;
|
||||
this.branchCollection = options.branchCollection;
|
||||
this.visNodeMap = {};
|
||||
|
@ -91,6 +92,10 @@ GitVisuals.prototype.assignGitEngine = function(gitEngine) {
|
|||
this.deferFlush();
|
||||
};
|
||||
|
||||
GitVisuals.prototype.getVisualization = function() {
|
||||
return this.visualization;
|
||||
};
|
||||
|
||||
GitVisuals.prototype.initHeadBranch = function() {
|
||||
// it's unfortaunte we have to do this, but the head branch
|
||||
// is an edge case because it's not part of a collection so
|
||||
|
|
|
@ -49,7 +49,8 @@ var Visualization = Backbone.View.extend({
|
|||
branchCollection: this.branchCollection,
|
||||
paper: this.paper,
|
||||
noClick: this.options.noClick,
|
||||
smallCanvas: this.options.smallCanvas
|
||||
smallCanvas: this.options.smallCanvas,
|
||||
visualization: this
|
||||
});
|
||||
|
||||
var GitEngine = require('../git').GitEngine;
|
||||
|
@ -85,6 +86,24 @@ var Visualization = Backbone.View.extend({
|
|||
this.customEvents.trigger('paperReady');
|
||||
},
|
||||
|
||||
makeOrigin: function(options) {
|
||||
// oh god, here we go. We basically do a bizarre form of composition here,
|
||||
// where this visualization actually contains another one of itself.
|
||||
this.originVis = new Visualization(_.extend(
|
||||
{},
|
||||
// copy all of our options over, except...
|
||||
this.options,
|
||||
{
|
||||
// never accept keyboard input or clicks
|
||||
noKeyboardInput: true,
|
||||
noClick: true,
|
||||
treeString: JSON.stringify(options.tree)
|
||||
}
|
||||
));
|
||||
// return the newly created gitEngine
|
||||
return this.originVis.gitEngine;
|
||||
},
|
||||
|
||||
setTreeIndex: function(level) {
|
||||
$(this.paper.canvas).css('z-index', level);
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue