From cb0a492da699ec8af9e01e46ec689cf32fd8d925 Mon Sep 17 00:00:00 2001 From: Peter Cottle Date: Sun, 23 Dec 2012 13:09:49 -0800 Subject: [PATCH] multiveiw work --- build/bundle.js | 114 +++++++++++++++++++++++++++++++++++++- src/index.html | 2 +- src/js/util/debug.js | 3 +- src/js/views/multiView.js | 49 +++++++++++++++- src/style/main.css | 11 ++++ todo.txt | 14 ++++- 6 files changed, 185 insertions(+), 8 deletions(-) diff --git a/build/bundle.js b/build/bundle.js index 468839e2..8bea66d0 100644 --- a/build/bundle.js +++ b/build/bundle.js @@ -13681,6 +13681,68 @@ HeadlessGit.prototype.sendCommand = function(value) { exports.HeadlessGit = HeadlessGit; +}); + +require.define("/src/js/views/multiView.js",function(require,module,exports,__dirname,__filename,process,global){var GitError = require('../util/errors').GitError; +var _ = require('underscore'); +var Q = require('q'); +// horrible hack to get localStorage Backbone plugin +var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone; + +var ModalTerminal = require('../views').ModalTerminal; +var ContainedBase = require('../views').ContainedBase; +var ConfirmCancelView = require('../views').ConfirmCancelView; +var LeftRightView = require('../views').LeftRightView; +var ModalAlert = require('../views').ModalAlert; + +var MultiView = Backbone.View.extend({ + tagName: 'div', + className: 'multiView', + typeToConstructor: { + ModalAlert: ModalAlert + }, + initialize: function(options) { + options = options || {}; + if (!options.childViews) { + options.childViews = [{ + type: 'ModalAlert', + options: { + markdown: 'Woah wtf!!' + } + }, { + type: 'ModalAlert', + options: { + markdown: 'Im second' + } + }]; + } + this.childViewJSONs = options.childViews; + this.childViews = []; + this.render(); + }, + + createChildView: function(viewJSON) { + var type = viewJSON.type; + if (!this.typeToConstructor[type]) { + throw new Error('wut'); + } + var view = new this.typeToConstructor[type](viewJSON.options); + this.childViews.push(view); + view.show(); + }, + + render: function() { + // go through each and render... show the first + _.each(this.childViewJSONs, function(childView) { + this.createChildView(childView); + }, this); + } +}); + +exports.MultiView = MultiView; + + + }); require.define("/src/js/app/index.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore'); @@ -16167,7 +16229,8 @@ var toGlobalize = { HeadLess: require('../git/headless'), Q: { Q: require('q') }, RebaseView: require('../views/rebaseView'), - Views: require('../views') + Views: require('../views'), + MultiView: require('../views/multiView') }; _.each(toGlobalize, function(module) { @@ -16858,18 +16921,63 @@ require("/src/js/views/index.js"); require.define("/src/js/views/multiView.js",function(require,module,exports,__dirname,__filename,process,global){var GitError = require('../util/errors').GitError; var _ = require('underscore'); -var Backbone = require('backbone'); var Q = require('q'); +// horrible hack to get localStorage Backbone plugin +var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone; var ModalTerminal = require('../views').ModalTerminal; var ContainedBase = require('../views').ContainedBase; var ConfirmCancelView = require('../views').ConfirmCancelView; var LeftRightView = require('../views').LeftRightView; +var ModalAlert = require('../views').ModalAlert; var MultiView = Backbone.View.extend({ + tagName: 'div', + className: 'multiView', + typeToConstructor: { + ModalAlert: ModalAlert + }, + initialize: function(options) { + options = options || {}; + if (!options.childViews) { + options.childViews = [{ + type: 'ModalAlert', + options: { + markdown: 'Woah wtf!!' + } + }, { + type: 'ModalAlert', + options: { + markdown: 'Im second' + } + }]; + } + this.childViewJSONs = options.childViews; + this.childViews = []; + this.render(); + }, + + createChildView: function(viewJSON) { + var type = viewJSON.type; + if (!this.typeToConstructor[type]) { + throw new Error('wut'); + } + var view = new this.typeToConstructor[type](viewJSON.options); + this.childViews.push(view); + view.show(); + }, + + render: function() { + // go through each and render... show the first + _.each(this.childViewJSONs, function(childView) { + this.createChildView(childView); + }, this); + } +}); + +exports.MultiView = MultiView; -}) }); require("/src/js/views/multiView.js"); diff --git a/src/index.html b/src/index.html index 5d66e591..c357db2b 100644 --- a/src/index.html +++ b/src/index.html @@ -100,7 +100,7 @@
-
+
diff --git a/src/js/util/debug.js b/src/js/util/debug.js index 686177f8..e5431515 100644 --- a/src/js/util/debug.js +++ b/src/js/util/debug.js @@ -14,7 +14,8 @@ var toGlobalize = { HeadLess: require('../git/headless'), Q: { Q: require('q') }, RebaseView: require('../views/rebaseView'), - Views: require('../views') + Views: require('../views'), + MultiView: require('../views/multiView') }; _.each(toGlobalize, function(module) { diff --git a/src/js/views/multiView.js b/src/js/views/multiView.js index 2c783816..9081218f 100644 --- a/src/js/views/multiView.js +++ b/src/js/views/multiView.js @@ -1,14 +1,59 @@ var GitError = require('../util/errors').GitError; var _ = require('underscore'); -var Backbone = require('backbone'); var Q = require('q'); +// horrible hack to get localStorage Backbone plugin +var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone; var ModalTerminal = require('../views').ModalTerminal; var ContainedBase = require('../views').ContainedBase; var ConfirmCancelView = require('../views').ConfirmCancelView; var LeftRightView = require('../views').LeftRightView; +var ModalAlert = require('../views').ModalAlert; var MultiView = Backbone.View.extend({ + tagName: 'div', + className: 'multiView', + typeToConstructor: { + ModalAlert: ModalAlert + }, + initialize: function(options) { + options = options || {}; + if (!options.childViews) { + options.childViews = [{ + type: 'ModalAlert', + options: { + markdown: 'Woah wtf!!' + } + }, { + type: 'ModalAlert', + options: { + markdown: 'Im second' + } + }]; + } + this.childViewJSONs = options.childViews; + this.childViews = []; + this.render(); + }, + + createChildView: function(viewJSON) { + var type = viewJSON.type; + if (!this.typeToConstructor[type]) { + throw new Error('wut'); + } + var view = new this.typeToConstructor[type](viewJSON.options); + this.childViews.push(view); + view.show(); + }, + + render: function() { + // go through each and render... show the first + _.each(this.childViewJSONs, function(childView) { + this.createChildView(childView); + }, this); + } +}); + +exports.MultiView = MultiView; -}) diff --git a/src/style/main.css b/src/style/main.css index cc164198..9860cbc2 100644 --- a/src/style/main.css +++ b/src/style/main.css @@ -6,6 +6,8 @@ body { margin: 0px; border: 0px; padding: 0px; + -webkit-perspective: 800; + -webkit-perspective-origin: 50% 225px; } html, body { @@ -66,6 +68,14 @@ body, transition: background 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); } +.transitionTransform { + -webkit-transition: -webkit-transform 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -moz-transition: -moz-transform 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -ms-transition: -ms-transform 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + -o-transition: -o-transform 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); + transition: transform 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); +} + .transitionOpacity { -webkit-transition: opacity 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); -moz-transition: opacity 700ms cubic-bezier(0.260, 0.860, 0.440, 0.985); @@ -407,6 +417,7 @@ li.rebaseEntry.notPicked { position: fixed; top: 0px; left: 0px; + -webkit-transform-style: preserve-3d; background: rgba(0, 0, 0, 0.6); -webkit-box-shadow: inset 0px 0px 100px rgba(0, 0, 0, 0.9); diff --git a/todo.txt b/todo.txt index 81b551b3..6014542e 100644 --- a/todo.txt +++ b/todo.txt @@ -4,11 +4,23 @@ Big things: Big Graphic things: ~~~~~~~~~~~~~~~~~~~~~~~~~ -[ ] promise-based dialogs +[.] multiViews with multiple terminals... +[ ] 3d transition between terminals (reveal.JS hakim) Medium things: ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Views +========= +[ ] allow views to have optional "with" view that gets appended afterwards +[ ] multiview makes all these arrow views which fire events +[ ] debounce the forward and back methods +[ ] there! that should be good enough + +Commands +======== +[ ] refactor some kind of + Small things to implement: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~