diff options
Diffstat (limited to 'new-reality/public/assets/js/lib')
| -rw-r--r-- | new-reality/public/assets/js/lib/_router.js | 78 | ||||
| -rw-r--r-- | new-reality/public/assets/js/lib/nav/DesktopNav.js | 83 | ||||
| -rw-r--r-- | new-reality/public/assets/js/lib/nav/MobileNav.js | 32 | ||||
| -rw-r--r-- | new-reality/public/assets/js/lib/view/AboutView.js | 28 | ||||
| -rw-r--r-- | new-reality/public/assets/js/lib/view/HomeView.js | 28 |
5 files changed, 249 insertions, 0 deletions
diff --git a/new-reality/public/assets/js/lib/_router.js b/new-reality/public/assets/js/lib/_router.js new file mode 100644 index 0000000..443b65a --- /dev/null +++ b/new-reality/public/assets/js/lib/_router.js @@ -0,0 +1,78 @@ +var SiteRouter = Router.extend({ + + el: 'body', + routeByHash: false, + + routes: { + '/': 'home', + '/about': 'about', + }, + + initialize: function(){ + var fn + for (var route in this.routes) { + fn = this.routes[route] + if (! this[fn]) { + this[fn] = this.default_view(fn) + } + } + }, + + initial_route: null, + launch: function(){ + if (this.initial_route) { + this.parseRoute( this.initial_route ) + } + else { + this.route() + } + this.initial_route = null + }, + + go: function(url){ + if (app.view && app.view.hide) { + app.view.hide() + } + this.pushState(url) + this.parseRoute(url) + }, + + default_view: function(name){ + var fn = function(){ + if (app.view != app.login && app.view != app.signin) { + app.last_view = app.view + } + if (app.view && app.view.hide) { + app.view.hide() + } + if (name.match(/\./)) { + var n = name.split(".") + app.view = app.views[n[0]][n[1]] + } + else { + app.view = app.views[name] + } + app.view.show() + }.bind(this) + return fn + }, + + experimentById: function(id){ + if (app.view && app.view.hide) { + app.view.hide() + } + app.view = app.views.experiments + app.views.experiments.show() + app.views.experiments.load(id) + }, + + projectById: function(id){ + if (app.view && app.view.hide) { + app.view.hide() + } + app.view = app.views.projects + app.views.projects.show() + app.views.projects.load(id) + } +}) + diff --git a/new-reality/public/assets/js/lib/nav/DesktopNav.js b/new-reality/public/assets/js/lib/nav/DesktopNav.js new file mode 100644 index 0000000..24f0f25 --- /dev/null +++ b/new-reality/public/assets/js/lib/nav/DesktopNav.js @@ -0,0 +1,83 @@ +var NavView = View.extend({ + + el: "#nav", + + events: { + "click .logo": "home", + "click li": "go", + "click #corner": "corner", + "mouseenter ul": "show_menu", + "mouseleave ul": "hide_menu", + }, + + initialize: function(){ + }, + + home: function(){ + app.router.go("/") + this.$headings.find(".active").removeClass("active") + if (app.mobile_nav && app.mobile_nav.state.open) { + app.mobile_nav.hamburger() + } + }, + + resetWidths: function(){ + this.$categories.each(function(){ + $(this).width( $(this).data("width") ) + }) + }, + + go: function(e){ + e.preventDefault() + + this.resetWidths() + + var $t = $(e.currentTarget) + this.$("li").removeClass("active") + $t.addClass("active") + + var href = $t.attr("href") + app.router.go(href) + if (is_mobile) { + app.mobile_nav.hamburger() + } + this.after_go() + }, + + after_go: function(){ + + }, + + setActive: function(id){ + var href = '/' + id + var $el = $('[href="' + href + '"]') + this.$('.active').removeClass('active') + if ($el.length) { + $el.addClass('active') + } + }, + + show_menu: function(e){ + var $el = $(e.currentTarget) + $el.addClass("hover") + + // var $parent = $el.parent() + var width = $el.data( "width" ) + $el.width(width) + console.log(width) + }, + + hide_menu: function(e){ + var $el = $(e.currentTarget) + $el.removeClass("hover") + + // var $parent = $el.parent() + var hover_width = $el.data( "hover-width" ) + $el.width(hover_width) + }, + + corner: function(){ + app.view && app.view.corner() + }, + +}); diff --git a/new-reality/public/assets/js/lib/nav/MobileNav.js b/new-reality/public/assets/js/lib/nav/MobileNav.js new file mode 100644 index 0000000..aec7090 --- /dev/null +++ b/new-reality/public/assets/js/lib/nav/MobileNav.js @@ -0,0 +1,32 @@ +var MobileNav = View.extend({ + + el: '#mobile_nav', + + events: { + 'touchstart .logo': 'home', + 'touchstart .hamburger': 'hamburger' + }, + + initialize: function(options){ + options = options || {} + this.state = { + open: false + } + }, + + home: function (){ + app.nav.home() + }, + + hamburger: function (e){ + $('html').toggleClass('navopen') + app.mobile_nav.state.open = ! app.mobile_nav.state.open + if (app.mobile_nav.state.open) { + $(".page-set").on("click", app.mobile_nav.hamburger) + } + else { + $(".page-set").off("click", app.mobile_nav.hamburger) + } + }, + +}) diff --git a/new-reality/public/assets/js/lib/view/AboutView.js b/new-reality/public/assets/js/lib/view/AboutView.js new file mode 100644 index 0000000..c2daf70 --- /dev/null +++ b/new-reality/public/assets/js/lib/view/AboutView.js @@ -0,0 +1,28 @@ +var AboutView = View.extend({ + + el: "#about", + + // template: liquid($('#tmpl-about').html()), + + events: { + }, + + initialize: function(options){ + options = options || {} + var data = this.data = options.data + }, + + render: function(){ + if (this.rendered) return + this.rendered = true + }, + + show: function(){ + document.body.className = "about" + this.render(this.data) + }, + + hide: function(){ + }, + +}) diff --git a/new-reality/public/assets/js/lib/view/HomeView.js b/new-reality/public/assets/js/lib/view/HomeView.js new file mode 100644 index 0000000..b2ceec1 --- /dev/null +++ b/new-reality/public/assets/js/lib/view/HomeView.js @@ -0,0 +1,28 @@ +var HomeView = View.extend({ + + el: "#home", + + // template: liquid($('#tmpl-home').html()), + + events: { + }, + + initialize: function(options){ + options = options || {} + var data = this.data = options.data + }, + + render: function(){ + if (this.rendered) return + this.rendered = true + }, + + show: function(){ + document.body.className = "home" + this.render(this.data) + }, + + hide: function(){ + }, + +}) |
