mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-07-12 15:44:25 +02:00
Awesome tabs working for the levels
This commit is contained in:
parent
db78bad106
commit
1a3f21175a
10 changed files with 315 additions and 106 deletions
226
build/bundle.js
226
build/bundle.js
|
@ -19768,31 +19768,25 @@ exports.levelSequences = {
|
|||
require('./rebase/manyRebases').level,
|
||||
require('./advanced/multipleParents').level,
|
||||
require('./rebase/selectiveRebase').level
|
||||
],
|
||||
remote: [
|
||||
require('./remote/clone').level,
|
||||
require('./remote/remoteBranches').level,
|
||||
require('./remote/fetch').level,
|
||||
require('./remote/pull').level,
|
||||
require('./remote/fakeTeamwork').level,
|
||||
require('./remote/push').level,
|
||||
require('./remote/fetchRebase').level
|
||||
],
|
||||
remoteAdvanced: [
|
||||
require('./remote/specify').level,
|
||||
require('./remote/pushManyFeatures').level,
|
||||
require('./remote/mergeManyFeatures').level
|
||||
]
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined' && window.location &&
|
||||
window.location.href.indexOf('showRemote') !== -1) {
|
||||
exports.levelSequences = {
|
||||
remote: [
|
||||
require('./remote/clone').level,
|
||||
require('./remote/remoteBranches').level,
|
||||
require('./remote/fetch').level,
|
||||
require('./remote/pull').level,
|
||||
require('./remote/fakeTeamwork').level,
|
||||
require('./remote/push').level,
|
||||
require('./remote/fetchRebase').level
|
||||
],
|
||||
remoteAdvanced: [
|
||||
require('./remote/specify').level,
|
||||
require('./remote/pushManyFeatures').level,
|
||||
require('./remote/mergeManyFeatures').level
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
// there are also cute names and such for sequences
|
||||
exports.sequenceInfo = {
|
||||
var sequenceInfo = exports.sequenceInfo = {
|
||||
intro: {
|
||||
displayName: {
|
||||
'en_US': 'Introduction Sequence',
|
||||
|
@ -19824,6 +19818,7 @@ exports.sequenceInfo = {
|
|||
}
|
||||
},
|
||||
remote: {
|
||||
tab: 'remote',
|
||||
displayName: {
|
||||
'en_US': 'Push & Pull -- Git Remotes!'
|
||||
},
|
||||
|
@ -19832,6 +19827,7 @@ exports.sequenceInfo = {
|
|||
}
|
||||
},
|
||||
remoteAdvanced: {
|
||||
tab: 'remote',
|
||||
displayName: {
|
||||
'en_US': 'To Origin And Beyond -- Advanced Git Remotes!'
|
||||
},
|
||||
|
@ -19887,6 +19883,13 @@ exports.sequenceInfo = {
|
|||
}
|
||||
};
|
||||
|
||||
exports.getTabForSequence = function(sequenceName) {
|
||||
var info = sequenceInfo[sequenceName];
|
||||
return (info.tab) ?
|
||||
info.tab :
|
||||
'main';
|
||||
};
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
@ -24093,14 +24096,31 @@ var ModalTerminal = require('../views').ModalTerminal;
|
|||
var ContainedBase = require('../views').ContainedBase;
|
||||
var BaseView = require('../views').BaseView;
|
||||
|
||||
var LEVELS = require('../../levels');
|
||||
|
||||
var LevelDropdownView = ContainedBase.extend({
|
||||
tagName: 'div',
|
||||
className: 'levelDropdownView box vertical',
|
||||
template: _.template($('#level-dropdown-view').html()),
|
||||
events: {
|
||||
'click div.levelDropdownTab': 'onTabClick'
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
options = options || {};
|
||||
this.JSON = {};
|
||||
var queryParams = util.parseQueryString(
|
||||
window.location.href
|
||||
);
|
||||
this.JSON = {
|
||||
selectedTab: queryParams.defaultTab || 'main',
|
||||
tabs: [{
|
||||
id: 'main',
|
||||
name: intl.todo('Main')
|
||||
}, {
|
||||
id: 'remote',
|
||||
name: intl.todo('Remote')
|
||||
}]
|
||||
};
|
||||
|
||||
this.navEvents = _.clone(Backbone.Events);
|
||||
this.navEvents.on('clickedID', _.debounce(
|
||||
|
@ -24146,6 +24166,21 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
this.buildSequences();
|
||||
},
|
||||
|
||||
onTabClick: function(ev) {
|
||||
var srcElement = ev.target || ev.srcElement;
|
||||
var id = $(srcElement).attr('data-id');
|
||||
if (id === this.JSON.selectedTab) {
|
||||
return;
|
||||
}
|
||||
this.JSON.selectedTab = id;
|
||||
this.render();
|
||||
if (this.selectedID) {
|
||||
this.selectedSequence = this.getSequencesOnTab()[0];
|
||||
this.selectedIndex = 0;
|
||||
this.updateSelectedIcon();
|
||||
}
|
||||
},
|
||||
|
||||
positive: function() {
|
||||
if (!this.selectedID) {
|
||||
return;
|
||||
|
@ -24160,11 +24195,15 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
this.leftOrRight(-1);
|
||||
},
|
||||
|
||||
updateSelectedIcon: function() {
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
},
|
||||
|
||||
leftOrRight: function(delta) {
|
||||
this.deselectIconByID(this.selectedID);
|
||||
this.selectedIndex = this.wrapIndex(this.selectedIndex + delta, this.getCurrentSequence());
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
this.updateSelectedIcon();
|
||||
},
|
||||
|
||||
right: function() {
|
||||
|
@ -24193,8 +24232,7 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
downOrUp: function() {
|
||||
this.selectedIndex = this.boundIndex(this.selectedIndex, this.getCurrentSequence());
|
||||
this.deselectIconByID(this.selectedID);
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
this.updateSelectedIcon();
|
||||
},
|
||||
|
||||
turnOnKeyboardSelection: function() {
|
||||
|
@ -24225,20 +24263,27 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
return index;
|
||||
},
|
||||
|
||||
getSequencesOnTab: function() {
|
||||
return _.filter(this.sequences, function(sequenceName) {
|
||||
var tab = LEVELS.getTabForSequence(sequenceName);
|
||||
return tab === this.JSON.selectedTab;
|
||||
}, this);
|
||||
},
|
||||
|
||||
getNextSequence: function() {
|
||||
var current = this.getSequenceIndex(this.selectedSequence);
|
||||
var desired = this.wrapIndex(current + 1, this.sequences);
|
||||
return this.sequences[desired];
|
||||
var desired = this.wrapIndex(current + 1, this.getSequencesOnTab());
|
||||
return this.getSequencesOnTab()[desired];
|
||||
},
|
||||
|
||||
getPreviousSequence: function() {
|
||||
var current = this.getSequenceIndex(this.selectedSequence);
|
||||
var desired = this.wrapIndex(current - 1, this.sequences);
|
||||
return this.sequences[desired];
|
||||
var desired = this.wrapIndex(current - 1, this.getSequencesOnTab());
|
||||
return this.getSequencesOnTab()[desired];
|
||||
},
|
||||
|
||||
getSequenceIndex: function(name) {
|
||||
var index = this.sequences.indexOf(name);
|
||||
var index = this.getSequencesOnTab().indexOf(name);
|
||||
if (index < 0) { throw new Error('didnt find'); }
|
||||
return index;
|
||||
},
|
||||
|
@ -24248,10 +24293,10 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
},
|
||||
|
||||
selectFirst: function() {
|
||||
var firstID = this.sequenceToLevels[this.sequences[0]][0].id;
|
||||
var firstID = this.sequenceToLevels[this.getSequencesOnTab()[0]][0].id;
|
||||
this.selectIconByID(firstID);
|
||||
this.selectedIndex = 0;
|
||||
this.selectedSequence = this.sequences[0];
|
||||
this.selectedSequence = this.getSequencesOnTab()[0];
|
||||
},
|
||||
|
||||
getCurrentSequence: function() {
|
||||
|
@ -24335,7 +24380,7 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
|
||||
buildSequences: function() {
|
||||
this.seriesViews = [];
|
||||
_.each(this.sequences, function(sequenceName) {
|
||||
_.each(this.getSequencesOnTab(), function(sequenceName) {
|
||||
this.seriesViews.push(new SeriesView({
|
||||
destination: this.$el,
|
||||
name: sequenceName,
|
||||
|
@ -35815,14 +35860,31 @@ var ModalTerminal = require('../views').ModalTerminal;
|
|||
var ContainedBase = require('../views').ContainedBase;
|
||||
var BaseView = require('../views').BaseView;
|
||||
|
||||
var LEVELS = require('../../levels');
|
||||
|
||||
var LevelDropdownView = ContainedBase.extend({
|
||||
tagName: 'div',
|
||||
className: 'levelDropdownView box vertical',
|
||||
template: _.template($('#level-dropdown-view').html()),
|
||||
events: {
|
||||
'click div.levelDropdownTab': 'onTabClick'
|
||||
},
|
||||
|
||||
initialize: function(options) {
|
||||
options = options || {};
|
||||
this.JSON = {};
|
||||
var queryParams = util.parseQueryString(
|
||||
window.location.href
|
||||
);
|
||||
this.JSON = {
|
||||
selectedTab: queryParams.defaultTab || 'main',
|
||||
tabs: [{
|
||||
id: 'main',
|
||||
name: intl.todo('Main')
|
||||
}, {
|
||||
id: 'remote',
|
||||
name: intl.todo('Remote')
|
||||
}]
|
||||
};
|
||||
|
||||
this.navEvents = _.clone(Backbone.Events);
|
||||
this.navEvents.on('clickedID', _.debounce(
|
||||
|
@ -35868,6 +35930,21 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
this.buildSequences();
|
||||
},
|
||||
|
||||
onTabClick: function(ev) {
|
||||
var srcElement = ev.target || ev.srcElement;
|
||||
var id = $(srcElement).attr('data-id');
|
||||
if (id === this.JSON.selectedTab) {
|
||||
return;
|
||||
}
|
||||
this.JSON.selectedTab = id;
|
||||
this.render();
|
||||
if (this.selectedID) {
|
||||
this.selectedSequence = this.getSequencesOnTab()[0];
|
||||
this.selectedIndex = 0;
|
||||
this.updateSelectedIcon();
|
||||
}
|
||||
},
|
||||
|
||||
positive: function() {
|
||||
if (!this.selectedID) {
|
||||
return;
|
||||
|
@ -35882,11 +35959,15 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
this.leftOrRight(-1);
|
||||
},
|
||||
|
||||
updateSelectedIcon: function() {
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
},
|
||||
|
||||
leftOrRight: function(delta) {
|
||||
this.deselectIconByID(this.selectedID);
|
||||
this.selectedIndex = this.wrapIndex(this.selectedIndex + delta, this.getCurrentSequence());
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
this.updateSelectedIcon();
|
||||
},
|
||||
|
||||
right: function() {
|
||||
|
@ -35915,8 +35996,7 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
downOrUp: function() {
|
||||
this.selectedIndex = this.boundIndex(this.selectedIndex, this.getCurrentSequence());
|
||||
this.deselectIconByID(this.selectedID);
|
||||
this.selectedID = this.getSelectedID();
|
||||
this.selectIconByID(this.selectedID);
|
||||
this.updateSelectedIcon();
|
||||
},
|
||||
|
||||
turnOnKeyboardSelection: function() {
|
||||
|
@ -35947,20 +36027,27 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
return index;
|
||||
},
|
||||
|
||||
getSequencesOnTab: function() {
|
||||
return _.filter(this.sequences, function(sequenceName) {
|
||||
var tab = LEVELS.getTabForSequence(sequenceName);
|
||||
return tab === this.JSON.selectedTab;
|
||||
}, this);
|
||||
},
|
||||
|
||||
getNextSequence: function() {
|
||||
var current = this.getSequenceIndex(this.selectedSequence);
|
||||
var desired = this.wrapIndex(current + 1, this.sequences);
|
||||
return this.sequences[desired];
|
||||
var desired = this.wrapIndex(current + 1, this.getSequencesOnTab());
|
||||
return this.getSequencesOnTab()[desired];
|
||||
},
|
||||
|
||||
getPreviousSequence: function() {
|
||||
var current = this.getSequenceIndex(this.selectedSequence);
|
||||
var desired = this.wrapIndex(current - 1, this.sequences);
|
||||
return this.sequences[desired];
|
||||
var desired = this.wrapIndex(current - 1, this.getSequencesOnTab());
|
||||
return this.getSequencesOnTab()[desired];
|
||||
},
|
||||
|
||||
getSequenceIndex: function(name) {
|
||||
var index = this.sequences.indexOf(name);
|
||||
var index = this.getSequencesOnTab().indexOf(name);
|
||||
if (index < 0) { throw new Error('didnt find'); }
|
||||
return index;
|
||||
},
|
||||
|
@ -35970,10 +36057,10 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
},
|
||||
|
||||
selectFirst: function() {
|
||||
var firstID = this.sequenceToLevels[this.sequences[0]][0].id;
|
||||
var firstID = this.sequenceToLevels[this.getSequencesOnTab()[0]][0].id;
|
||||
this.selectIconByID(firstID);
|
||||
this.selectedIndex = 0;
|
||||
this.selectedSequence = this.sequences[0];
|
||||
this.selectedSequence = this.getSequencesOnTab()[0];
|
||||
},
|
||||
|
||||
getCurrentSequence: function() {
|
||||
|
@ -36057,7 +36144,7 @@ var LevelDropdownView = ContainedBase.extend({
|
|||
|
||||
buildSequences: function() {
|
||||
this.seriesViews = [];
|
||||
_.each(this.sequences, function(sequenceName) {
|
||||
_.each(this.getSequencesOnTab(), function(sequenceName) {
|
||||
this.seriesViews.push(new SeriesView({
|
||||
destination: this.$el,
|
||||
name: sequenceName,
|
||||
|
@ -39589,31 +39676,25 @@ exports.levelSequences = {
|
|||
require('./rebase/manyRebases').level,
|
||||
require('./advanced/multipleParents').level,
|
||||
require('./rebase/selectiveRebase').level
|
||||
],
|
||||
remote: [
|
||||
require('./remote/clone').level,
|
||||
require('./remote/remoteBranches').level,
|
||||
require('./remote/fetch').level,
|
||||
require('./remote/pull').level,
|
||||
require('./remote/fakeTeamwork').level,
|
||||
require('./remote/push').level,
|
||||
require('./remote/fetchRebase').level
|
||||
],
|
||||
remoteAdvanced: [
|
||||
require('./remote/specify').level,
|
||||
require('./remote/pushManyFeatures').level,
|
||||
require('./remote/mergeManyFeatures').level
|
||||
]
|
||||
};
|
||||
|
||||
if (typeof window !== 'undefined' && window.location &&
|
||||
window.location.href.indexOf('showRemote') !== -1) {
|
||||
exports.levelSequences = {
|
||||
remote: [
|
||||
require('./remote/clone').level,
|
||||
require('./remote/remoteBranches').level,
|
||||
require('./remote/fetch').level,
|
||||
require('./remote/pull').level,
|
||||
require('./remote/fakeTeamwork').level,
|
||||
require('./remote/push').level,
|
||||
require('./remote/fetchRebase').level
|
||||
],
|
||||
remoteAdvanced: [
|
||||
require('./remote/specify').level,
|
||||
require('./remote/pushManyFeatures').level,
|
||||
require('./remote/mergeManyFeatures').level
|
||||
]
|
||||
};
|
||||
}
|
||||
|
||||
// there are also cute names and such for sequences
|
||||
exports.sequenceInfo = {
|
||||
var sequenceInfo = exports.sequenceInfo = {
|
||||
intro: {
|
||||
displayName: {
|
||||
'en_US': 'Introduction Sequence',
|
||||
|
@ -39645,6 +39726,7 @@ exports.sequenceInfo = {
|
|||
}
|
||||
},
|
||||
remote: {
|
||||
tab: 'remote',
|
||||
displayName: {
|
||||
'en_US': 'Push & Pull -- Git Remotes!'
|
||||
},
|
||||
|
@ -39653,6 +39735,7 @@ exports.sequenceInfo = {
|
|||
}
|
||||
},
|
||||
remoteAdvanced: {
|
||||
tab: 'remote',
|
||||
displayName: {
|
||||
'en_US': 'To Origin And Beyond -- Advanced Git Remotes!'
|
||||
},
|
||||
|
@ -39708,6 +39791,13 @@ exports.sequenceInfo = {
|
|||
}
|
||||
};
|
||||
|
||||
exports.getTabForSequence = function(sequenceName) {
|
||||
var info = sequenceInfo[sequenceName];
|
||||
return (info.tab) ?
|
||||
info.tab :
|
||||
'main';
|
||||
};
|
||||
|
||||
|
||||
});
|
||||
require("/src/levels/index.js");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue