diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index b31884d6..5636edfe 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -43,12 +43,6 @@ Travis.reopen signOut: -> @get('auth').signOut() - @routes.route('') - - render: (name, action, params) -> - layout = @connectLayout(name) - layout.activate(action, params || {}) - $('body').attr('id', name) receive: -> @store.receive.apply(@store, arguments) diff --git a/assets/javascripts/app/controllers.coffee b/assets/javascripts/app/controllers.coffee index 82dfbda1..99830b9b 100644 --- a/assets/javascripts/app/controllers.coffee +++ b/assets/javascripts/app/controllers.coffee @@ -19,6 +19,9 @@ Travis.reopen TopController: Em.Controller.extend userBinding: 'Travis.app.currentUser' ApplicationController: Em.Controller.extend() + MainController: Em.Controller.extend() + StatsLayoutController: Em.Controller.extend() + ProfileLayoutController: Em.Controller.extend() require 'controllers/accounts' require 'controllers/builds' diff --git a/assets/javascripts/app/controllers/accounts.coffee b/assets/javascripts/app/controllers/accounts.coffee index 263dea52..a23d4427 100644 --- a/assets/javascripts/app/controllers/accounts.coffee +++ b/assets/javascripts/app/controllers/accounts.coffee @@ -2,6 +2,7 @@ Travis.AccountsController = Ember.ArrayController.extend defaultTab: 'accounts' init: -> + @_super() @activate(@defaultTab) activate: (tab, params) -> @@ -10,3 +11,6 @@ Travis.AccountsController = Ember.ArrayController.extend viewAccounts: -> @set('content', Travis.Account.filter()) + + findByLogin: (login) -> + @find (account) -> account.get('login') == 'login' diff --git a/assets/javascripts/app/controllers/home.coffee b/assets/javascripts/app/controllers/home.coffee index f4255f5c..c900505b 100644 --- a/assets/javascripts/app/controllers/home.coffee +++ b/assets/javascripts/app/controllers/home.coffee @@ -1,5 +1 @@ -Travis.HomeController = Travis.Controller.extend - name: 'home' - - activate: (action, params) -> - @repositoryController.activate(action, params) +Travis.HomeController = Travis.Controller.extend() diff --git a/assets/javascripts/app/controllers/profile.coffee b/assets/javascripts/app/controllers/profile.coffee index e9b4c59c..b6e18569 100644 --- a/assets/javascripts/app/controllers/profile.coffee +++ b/assets/javascripts/app/controllers/profile.coffee @@ -1,18 +1,11 @@ Travis.ProfileController = Travis.Controller.extend name: 'profile' userBinding: 'Travis.app.currentUser' - - init: -> - @_super() - # @_super('top', 'accounts') - # @connectTop() - # @connectOutlet outletName: 'left', controller: @accountsController, viewClass: Travis.AccountsView - # @connectOutlet(outletName: 'main', controller: this, viewClass: Travis.ProfileView) - # @accounts = @accountsController.get('content') + accountsBinding: 'Travis.app.router.accountsController' account: (-> login = @get('params.login') || Travis.app.get('currentUser.login') - @accounts.toArray().filter((account) -> account if account.get('login') == login)[0] + @get('accounts').filter((account) -> account if account.get('login') == login)[0] ).property('accounts.length', 'params.login') activate: (action, params) -> diff --git a/assets/javascripts/app/routes.coffee b/assets/javascripts/app/routes.coffee index 35faa8bd..1433d51c 100644 --- a/assets/javascripts/app/routes.coffee +++ b/assets/javascripts/app/routes.coffee @@ -4,13 +4,16 @@ Travis.Router = Ember.Router.extend initialState: 'loading' goToRoot: Ember.Route.transitionTo('root.home.show') - goToStats: Ember.Route.transitionTo('root.home.stats') + goToStats: Ember.Route.transitionTo('root.stats') showRepository: Ember.Route.transitionTo('root.home.repository.show') showBuilds: Ember.Route.transitionTo('root.home.repository.builds.index') showBuild: Ember.Route.transitionTo('root.home.repository.builds.show') showPullRequests: Ember.Route.transitionTo('root.home.repository.pullRequests') showBranches: Ember.Route.transitionTo('root.home.repository.branches') showJob: Ember.Route.transitionTo('root.home.repository.job') + showProfile: Ember.Route.transitionTo('root.profile') + showAccount: Ember.Route.transitionTo('root.profile.account') + showUserProfile: Ember.Route.transitionTo('root.profile.account.profile') signedIn: -> !!Travis.app.get('currentUser') @@ -56,25 +59,76 @@ Travis.Router = Ember.Router.extend initialState: 'home' loading: Ember.State.extend() + stats: Ember.Route.extend + route: '/stats' + connectOutlets: (router) -> + router.get('applicationController').connectOutlet 'statsLayout' + $('body').attr('id', 'stats') + router.get('statsLayoutController').connectOutlet 'top', 'top' + router.get('statsLayoutController').connectOutlet 'main', 'stats' + + profile: Ember.Route.extend + initialState: 'index' + route: '/profile' + connectOutlets: (router) -> + router.get('applicationController').connectOutlet 'profileLayout' + $('body').attr('id', 'profile') + router.get('profileLayoutController').connectOutlet 'top', 'top' + router.get('profileLayoutController').connectOutlet 'left', 'accounts' + + index: Ember.Route.extend + route: '/' + connectOutlets: (router) -> + router.get('profileLayoutController').connectOutlet 'main', 'profile' + router.get('profileController').activate 'hooks' + + account: Ember.Route.extend + initialState: 'index' + route: '/:login' + + connectOutlets: (router, account) -> + if account + params = { login: account.get('login') } + router.get('profileController').setParams(params) + else + router.send 'showProfile' + + deserialize: (router, params) -> + router.get('accountsController').findByLogin(params.login) + + serialize: (router, account) -> + if account + { login: account.get('login') } + else + {} + + index: Ember.Route.extend + route: '/' + connectOutlets: (router) -> + router.get('profileController').activate 'hooks' + + profile: Ember.Route.extend + route: '/profile' + + connectOutlets: (router) -> + router.get('profileController').activate 'user' + home: Ember.Route.extend initialState: 'show' route: '/' connectOutlets: (router) -> - router.get('applicationController').connectOutlet 'left', 'repositories' - router.get('applicationController').connectOutlet 'right', 'sidebar' - router.get('applicationController').connectOutlet 'top', 'top' - router.get('applicationController').connectOutlet 'main', 'repository' + router.get('applicationController').connectOutlet 'home' + $('body').attr('id', 'home') + router.get('homeController').connectOutlet 'left', 'repositories' + router.get('homeController').connectOutlet 'right', 'sidebar' + router.get('homeController').connectOutlet 'top', 'top' + router.get('homeController').connectOutlet 'main', 'repository' show: Ember.Route.extend route: '/' connectOutlets: (router) -> router.get('repositoryController').activate('index') - stats: Ember.Route.extend - route: '/stats' - connectOutlets: (router) -> - router.get('applicationController').connectOutlet 'main', 'stats' - repository: Ember.Route.extend initialState: 'show' route: '/:owner/:name' diff --git a/assets/javascripts/app/templates/application.hbs b/assets/javascripts/app/templates/application.hbs index a72508da..c6ff6c5b 100644 --- a/assets/javascripts/app/templates/application.hbs +++ b/assets/javascripts/app/templates/application.hbs @@ -1 +1,6 @@ -heyho +{{! TODO apparently styles assume that there is more divs here... + I should fix that later }} +
+ {{outlet}} +
+ diff --git a/assets/javascripts/app/templates/layouts/home.hbs b/assets/javascripts/app/templates/layouts/home.hbs index 1128d325..8e1dc46b 100644 --- a/assets/javascripts/app/templates/layouts/home.hbs +++ b/assets/javascripts/app/templates/layouts/home.hbs @@ -1,21 +1,17 @@ -{{! TODO apparently styles assume that there is more divs here... - I should fix that later }} -
-
- {{outlet top}} +
+ {{outlet top}} +
+ +
+
+ {{outlet left}}
-
-
- {{outlet left}} -
- -
- {{outlet main}} -
- - +
+ {{outlet main}}
-
+ + +
diff --git a/assets/javascripts/app/templates/layouts/top.hbs b/assets/javascripts/app/templates/layouts/top.hbs index 8b7f33e2..122b65df 100644 --- a/assets/javascripts/app/templates/layouts/top.hbs +++ b/assets/javascripts/app/templates/layouts/top.hbs @@ -18,12 +18,12 @@
  • {{t layouts.top.github_login}} - {{user.name}} + {{user.name}} Signing in

    • - {{t layouts.top.profile}} + {{t layouts.top.profile}}
    • {{t layouts.top.sign_out}} diff --git a/assets/javascripts/app/templates/profile/accounts.hbs b/assets/javascripts/app/templates/profile/accounts.hbs index 68e7778b..1cf10746 100644 --- a/assets/javascripts/app/templates/profile/accounts.hbs +++ b/assets/javascripts/app/templates/profile/accounts.hbs @@ -9,7 +9,7 @@
      {{#collection Travis.AccountsListView contentBinding="controller"}} - {{view.name}} + {{view.name}}

      Repositories: {{view.content.reposCount}} diff --git a/assets/javascripts/app/templates/profile/show.hbs b/assets/javascripts/app/templates/profile/show.hbs index 8974f566..ffaade71 100644 --- a/assets/javascripts/app/templates/profile/show.hbs +++ b/assets/javascripts/app/templates/profile/show.hbs @@ -6,4 +6,3 @@ {{outlet pane}}

      - diff --git a/assets/javascripts/app/templates/profile/tabs.hbs b/assets/javascripts/app/templates/profile/tabs.hbs index 180c0897..05b4bacd 100644 --- a/assets/javascripts/app/templates/profile/tabs.hbs +++ b/assets/javascripts/app/templates/profile/tabs.hbs @@ -1,13 +1,13 @@
      • - Repositories + Repositories
      • {{#if view.displayUser}}
      • - Profile + Profile
      • {{/if}} diff --git a/assets/javascripts/app/views.coffee b/assets/javascripts/app/views.coffee index bfb03ac1..fddc0238 100644 --- a/assets/javascripts/app/views.coffee +++ b/assets/javascripts/app/views.coffee @@ -6,10 +6,10 @@ require 'ext/ember/namespace' $("##{event.target.name}").remove().appendTo('body').toggle() @Travis.reopen - HomeLayout: Travis.View.extend(templateName: 'layouts/home') - ProfileLayout: Travis.View.extend(templateName: 'layouts/profile') - StatsLayout: Travis.View.extend(templateName: 'layouts/simple') - ApplicationView: Travis.View.extend(templateName: 'layouts/home') + HomeView: Travis.View.extend(templateName: 'layouts/home') + ProfileLayoutView: Travis.View.extend(templateName: 'layouts/profile') + StatsLayoutView: Travis.View.extend(templateName: 'layouts/simple') + ApplicationView: Travis.View.extend(templateName: 'application') require 'views/build' require 'views/job' diff --git a/assets/javascripts/app/views/profile.coffee b/assets/javascripts/app/views/profile.coffee index 7084606a..d4837033 100644 --- a/assets/javascripts/app/views/profile.coffee +++ b/assets/javascripts/app/views/profile.coffee @@ -53,13 +53,7 @@ 'active' if @get('tab') == 'user' ).property('tab') - urlAccount: (-> - Travis.Urls.account(@get('controller.account.login')) - ).property('controller.account.login') - - urlUser: (-> - Travis.Urls.user(@get('controller.user.login')) - ).property('controller.user.login') + accountBinding: 'controller.account' displayUser: (-> @get('controller.account.login') == @get('controller.user.login') diff --git a/public/javascripts/application.js b/public/javascripts/application.js index aba646ac..7659fa73 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1 +1 @@ -minispade.register('templates', "(function() {Ember.TEMPLATES['application']=Ember.Handlebars.compile(\"heyho\\n\");Ember.TEMPLATES['builds/list']=Ember.Handlebars.compile(\"{{#if builds.isLoaded}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n {{#each build in builds}}\\n {{#view Travis.BuildsItemView contextBinding=\\\"build\\\"}}\\n \\n \\n \\n \\n \\n \\n \\n {{/view}}\\n {{/each}}\\n \\n
        {{t builds.name}}{{t builds.commit}}{{t builds.message}}{{t builds.duration}}{{t builds.finished_at}}
        \\n \\n {{#if id}}\\n \\n {{number}}\\n \\n {{/if}}\\n \\n \\n {{formatCommit commit}}\\n \\n \\n {{{formatMessage commit.message short=\\\"true\\\"}}}\\n \\n {{formatDuration duration}}\\n \\n {{formatTime finishedAt}}\\n
        \\n

        \\n \\n

        \\n{{else}}\\n
        Loading
        \\n{{/if}}\\n\");Ember.TEMPLATES['builds/show']=Ember.Handlebars.compile(\"{{#with view}}\\n {{#if build.isLoaded}}\\n
        \\n
        \\n
        \\n
        {{t builds.name}}
        \\n
        \\n \\n {{#if build.id}}\\n {{build.number}}\\n {{/if}}\\n
        \\n
        {{t builds.finished_at}}
        \\n
        {{formatTime build.finishedAt}}
        \\n
        {{t builds.duration}}
        \\n
        {{formatDuration build.duration}}
        \\n
        \\n\\n
        \\n
        {{t builds.commit}}
        \\n
        {{formatCommit build.commit}}
        \\n {{#if commit.compareUrl}}\\n
        {{t builds.compare}}
        \\n
        {{pathFrom build.commit.compareUrl}}
        \\n {{/if}}\\n {{#if commit.authorName}}\\n
        {{t builds.author}}
        \\n
        {{build.commit.authorName}}
        \\n {{/if}}\\n {{#if commit.committerName}}\\n
        {{t builds.committer}}
        \\n
        {{build.commit.committerName}}
        \\n {{/if}}\\n
        \\n\\n
        {{t builds.message}}
        \\n
        {{{formatMessage build.commit.message}}}
        \\n\\n {{#unless isMatrix}}\\n
        {{t builds.config}}
        \\n
        {{formatConfig build.config}}
        \\n {{/unless}}\\n
        \\n
        \\n\\n {{#if build.isMatrix}}\\n {{view Travis.JobsView jobsBinding=\\\"build.requiredJobs\\\" required=\\\"true\\\"}}\\n {{view Travis.JobsView jobsBinding=\\\"build.allowedFailureJobs\\\"}}\\n {{else}}\\n {{view Travis.LogView contextBinding=\\\"build.jobs.firstObject\\\"}}\\n {{/if}}\\n {{else}}\\n
        \\n Loading\\n
        \\n {{/if}}\\n{{/with}}\\n\");Ember.TEMPLATES['jobs/list']=Ember.Handlebars.compile(\"{{#if view.jobs.length}}\\n {{#if view.required}}\\n \\n \\n {{else}}\\n
        \\n {{t jobs.build_matrix}}\\n
        \\n \\n {{/if}}\\n \\n \\n {{#each key in view.build.configKeys}}\\n \\n {{/each}}\\n \\n \\n \\n {{#each job in view.jobs}}\\n {{#view Travis.JobsItemView contextBinding=\\\"job\\\"}}\\n \\n \\n \\n {{#each value in configValues}}\\n \\n {{/each}}\\n {{/view}}\\n {{/each}}\\n \\n
        \\n {{t jobs.allowed_failures}}\\n \\n
        {{key}}
        \\n \\n {{#if job.id}}\\n {{number}}\\n {{/if}}\\n \\n {{formatDuration duration}}\\n \\n {{formatTime finishedAt}}\\n {{value}}
        \\n\\n {{#unless view.required}}\\n
        \\n

        {{t \\\"jobs.allowed_failures\\\"}}

        \\n

        \\n Allowed Failures are items in your build matrix that are allowed to\\n fail without causing the entire build to be shown as failed.\\n

        \\n

        \\n You can define allowed failures in the build matrix as follows:\\n

        \\n
        matrix:\\n  allow_failures:\\n    - rvm: ruby-head
        \\n

        \\n This lets you add in experimental and preparatory builds to test against versions or\\n configurations that you are not ready to officially support.\\n

        \\n
        \\n {{/unless}}\\n{{/if}}\\n\");Ember.TEMPLATES['jobs/log']=Ember.Handlebars.compile(\"{{view.logSubscriber}}\\n\\n{{#if log.isLoaded}}\\n
        \\n    \\n    \\n  {{{formatLog log.body}}}
        \\n\\n {{#if sponsor.name}}\\n

        \\n {{t builds.messages.sponsored_by}}\\n {{sponsor.name}}\\n

        \\n {{/if}}\\n\\n To top\\n{{else}}\\n
        \\n Loading\\n
        \\n{{/if}}\\n\");Ember.TEMPLATES['jobs/show']=Ember.Handlebars.compile(\"{{#with view}}\\n {{#if job.isLoaded}}\\n
        \\n
        \\n
        \\n
        Job
        \\n
        \\n {{#if job.id}}\\n {{job.number}}\\n {{/if}}\\n
        \\n
        {{t jobs.finished_at}}
        \\n
        {{formatTime job.finishedAt}}
        \\n
        {{t jobs.duration}}
        \\n
        {{formatDuration job.duration}}
        \\n
        \\n\\n
        \\n
        {{t jobs.commit}}
        \\n
        {{formatCommit commit}}
        \\n {{#if commit.compareUrl}}\\n
        {{t jobs.compare}}
        \\n
        {{pathFrom commit.compareUrl}}
        \\n {{/if}}\\n {{#if commit.authorName}}\\n
        {{t jobs.author}}
        \\n
        {{commit.authorName}}
        \\n {{/if}}\\n {{#if commit.committerName}}\\n
        {{t jobs.committer}}
        \\n
        {{commit.committerName}}
        \\n {{/if}}\\n
        \\n\\n
        {{t jobs.message}}
        \\n
        {{formatMessage commit.message}}
        \\n
        {{t jobs.config}}
        \\n
        {{formatConfig job.config}}
        \\n
        \\n\\n {{view Travis.LogView contextBinding=\\\"job\\\"}}}\\n
        \\n {{else}}\\n
        \\n Loading\\n
        \\n {{/if}}\\n{{/with}}\\n\");Ember.TEMPLATES['layouts/home']=Ember.Handlebars.compile(\"{{! TODO apparently styles assume that there is more divs here...\\n I should fix that later }}\\n
        \\n
        \\n {{outlet top}}\\n
        \\n\\n
        \\n
        \\n {{outlet left}}\\n
        \\n\\n
        \\n {{outlet main}}\\n
        \\n\\n
        \\n {{outlet right}}\\n
        \\n
        \\n
        \\n\");Ember.TEMPLATES['layouts/profile']=Ember.Handlebars.compile(\"
        \\n {{outlet top}}\\n
        \\n\\n
        \\n
        \\n {{outlet left}}\\n
        \\n\\n
        \\n {{outlet main}}\\n
        \\n\\n
        \\n
        \\n
         \\n
        \\n\\n
        \\n

        Getting started?

        \\n

        \\n Please read our guide.\\n It will only take a few minutes :)\\n

        \\n

        \\n You can find detailled docs on our about site.\\n

        \\n

        \\n If you need help please don't hesitate to join\\n #travis on irc.freenode.net\\n or our mailinglist.\\n

        \\n
        \\n
        \\n
        \\n\");Ember.TEMPLATES['layouts/sidebar']=Ember.Handlebars.compile(\"\\n {{t layouts.application.fork_me}}\\n\\n\\n
        \\n
         \\n
        \\n\\n{{outlet decks}}\\n{{outlet workers}}\\n{{outlet queues}}\\n{{outlet links}}\\n\\n
        \\n

        {{t layouts.about.join}}

        \\n \\n
        \\n\");Ember.TEMPLATES['layouts/simple']=Ember.Handlebars.compile(\"
        \\n {{outlet top}}\\n
        \\n\\n
        \\n
        \\n {{outlet main}}\\n
        \\n
        \\n\\n\");Ember.TEMPLATES['layouts/top']=Ember.Handlebars.compile(\"\\n

        Travis

        \\n
        \\n\\n\\n\");Ember.TEMPLATES['profile/accounts']=Ember.Handlebars.compile(\"
        \\n
        \\n\\n\\n\\n
        \\n {{#collection Travis.AccountsListView contentBinding=\\\"controller\\\"}}\\n {{view.name}}\\n

        \\n Repositories:\\n {{view.content.reposCount}}\\n

        \\n {{/collection}}\\n
        \\n\");Ember.TEMPLATES['profile/show']=Ember.Handlebars.compile(\"

        {{view.name}}

        \\n\\n{{view Travis.ProfileTabsView}}\\n\\n
        \\n {{outlet pane}}\\n
        \\n\\n\\n\");Ember.TEMPLATES['profile/tabs']=Ember.Handlebars.compile(\"
          \\n
        • \\n
          \\n Repositories\\n
          \\n
        • \\n {{#if view.displayUser}}\\n
        • \\n
          \\n Profile\\n
          \\n
        • \\n {{/if}}\\n
        \\n\");Ember.TEMPLATES['profile/tabs/hooks']=Ember.Handlebars.compile(\"

        \\n {{{t profiles.show.message.your_repos}}}\\n

        \\n\\n{{#if hooks.isLoaded}}\\n {{#if user.isSyncing}}\\n

        \\n Please wait while we sync from GitHub\\n

        \\n {{else}}\\n

        \\n Last synchronized from GitHub: {{formatTime user.syncedAt}}\\n \\n

        \\n\\n
          \\n {{#each hook in hooks}}\\n
        • \\n {{hook.slug}}\\n

          {{hook.description}}

          \\n\\n
          \\n \\n \\n
          \\n
        • \\n {{else}}\\n
        • \\n You do not seem to have any repositories that we could sync.\\n
        • \\n {{/each}}\\n
        \\n {{/if}}\\n{{else}}\\n

        \\n Loading\\n

        \\n{{/if}}\\n\\n\\n\");Ember.TEMPLATES['profile/tabs/user']=Ember.Handlebars.compile(\"\\n\\n
        \\n
        \\n {{t profiles.show.github}}:\\n
        \\n
        \\n {{user.login}}\\n
        \\n
        \\n {{t profiles.show.email}}:\\n
        \\n
        \\n {{user.email}}\\n
        \\n
        \\n {{t profiles.show.token}}:\\n
        \\n
        \\n {{user.token}}\\n
        \\n
        \\n\\n
        \\n {{view Ember.Select\\n contentBinding=\\\"view.locales\\\"\\n selectionBinding=\\\"user.locale\\\"\\n optionLabelPath=\\\"content.name\\\"\\n optionValuePath=\\\"content.key\\\"}}\\n\\n \\n
        \\n\\n\\n\");Ember.TEMPLATES['queues/list']=Ember.Handlebars.compile(\"
          \\n{{#each queue in controller}}\\n
        • \\n

          {{t queue}}: {{queue.name}}

          \\n \\n
        • \\n{{/each}}\\n
        \\n\");Ember.TEMPLATES['repos/list']=Ember.Handlebars.compile(\"
        \\n {{view Ember.TextField valueBinding=\\\"controller.search\\\"}}\\n
        \\n\\n{{view Travis.ReposListTabsView}}\\n\\n\\n\\n
        \\n {{#collection Travis.RepositoriesListView contentBinding=\\\"controller\\\"}}\\n {{#with view.repository}}\\n
        \\n \\n {{#if slug}}\\n {{slug}}\\n {{/if}}\\n
        \\n {{#if lastBuild.id}}\\n #{{lastBuildNumber}}\\n {{/if}}\\n\\n

        \\n {{t repositories.duration}}:\\n {{formatDuration lastBuildDuration}},\\n {{t repositories.finished_at}}:\\n {{formatTime lastBuildFinishedAt}}\\n

        \\n\\n
        \\n\\n {{#if description}}\\n
        \\n

        {{description}}

        \\n
        \\n {{/if}}\\n {{/with}}\\n {{/collection}}\\n
        \\n\");Ember.TEMPLATES['repos/list/tabs']=Ember.Handlebars.compile(\"\\n\\n\");Ember.TEMPLATES['repos/show']=Ember.Handlebars.compile(\"
        \\n {{#if view.repository.isLoaded}}\\n {{#with view.repository}}\\n

        \\n {{slug}}\\n

        \\n\\n

        {{description}}

        \\n\\n \\n\\n {{view Travis.RepoShowTabsView}}\\n {{view Travis.RepoShowToolsView}}\\n {{/with}}\\n\\n {{else}}\\n Loading\\n {{/if}}\\n\\n
        \\n {{outlet pane}}\\n
        \\n
        \\n\\n\");Ember.TEMPLATES['repos/show/tabs']=Ember.Handlebars.compile(\"\\n\");Ember.TEMPLATES['repos/show/tools']=Ember.Handlebars.compile(\"
        \\n \\n
        \\n

        \\n \\n {{#if view.branches.isLoaded}}\\n {{view Ember.Select contentBinding=\\\"view.branches\\\" selectionBinding=\\\"view.branch\\\" optionLabelPath=\\\"content.commit.branch\\\" optionValuePath=\\\"content.commit.branch\\\"}}\\n {{else}}\\n \\n {{/if}}\\n

        \\n

        \\n \\n \\n

        \\n

        \\n \\n \\n

        \\n

        \\n \\n \\n

        \\n

        \\n \\n \\n

        \\n
        \\n
        \\n\");Ember.TEMPLATES['sponsors/decks']=Ember.Handlebars.compile(\"

        {{t layouts.application.sponsers}}

        \\n\\n
          \\n {{#each deck in controller}}\\n {{#each deck}}\\n
        • \\n \\n \\n \\n
        • \\n {{/each}}\\n {{/each}}\\n
        \\n\\n

        \\n \\n {{{t layouts.application.sponsors_link}}}\\n \\n

        \\n\");Ember.TEMPLATES['sponsors/links']=Ember.Handlebars.compile(\"
        \\n

        {{t layouts.application.sponsers}}

        \\n\\n
          \\n {{#each controller}}\\n
        • \\n {{{link}}}\\n
        • \\n {{/each}}\\n
        \\n\\n

        \\n \\n {{{t layouts.application.sponsors_link}}}\\n \\n

        \\n
        \\n\\n\");Ember.TEMPLATES['stats/show']=Ember.Handlebars.compile(\"
        \\n
        \\n\");Ember.TEMPLATES['workers/list']=Ember.Handlebars.compile(\"{{#view Travis.WorkersView}}\\n

        \\n {{t workers}}\\n \\n

        \\n
          \\n {{#each group in controller.groups}}\\n {{#view Travis.WorkersListView}}\\n
        • \\n
          \\n {{group.firstObject.host}}\\n
          \\n
            \\n {{#each worker in group}}\\n {{#view Travis.WorkersItemView workerBinding=\\\"worker\\\"}}\\n
          • \\n
            \\n {{#if worker.isWorking}}\\n {{#if view.job.id}}\\n \\n {{view.display}}\\n \\n {{/if}}\\n {{else}}\\n {{view.display}}\\n {{/if}}\\n
          • \\n {{/view}}\\n {{/each}}\\n
          \\n
        • \\n {{/view}}\\n {{else}}\\n No workers\\n {{/each}}\\n
        \\n{{/view}}\\n\");\n})();\n//@ sourceURL=templates");minispade.register('app', "(function() {(function() {\nminispade.require('travis');\nminispade.require('auth');\nminispade.require('controllers');\nminispade.require('helpers');\nminispade.require('models');\nminispade.require('pusher');\nminispade.require('routes');\nminispade.require('slider');\nminispade.require('store');\nminispade.require('tailing');\nminispade.require('templates');\nminispade.require('views');\nminispade.require('config/locales');\nminispade.require('data/sponsors');\n\n Travis.reopen({\n App: Em.Application.extend({\n currentUserBinding: 'auth.user',\n accessTokenBinding: 'auth.user.accessToken',\n authStateBinding: 'auth.state',\n init: function() {\n this._super.apply(this, arguments);\n this.store = Travis.Store.create();\n this.store.loadMany(Travis.Sponsor, Travis.SPONSORS);\n this.set('auth', Travis.Auth.create({\n store: this.store,\n endpoint: Travis.config.api_endpoint\n }));\n this.slider = new Travis.Slider();\n this.pusher = new Travis.Pusher();\n return this.tailing = new Travis.Tailing();\n },\n signIn: function() {\n return this.get('auth').signIn();\n },\n signOut: function() {\n this.get('auth').signOut();\n return this.routes.route('');\n },\n render: function(name, action, params) {\n var layout;\n layout = this.connectLayout(name);\n layout.activate(action, params || {});\n return $('body').attr('id', name);\n },\n receive: function() {\n return this.store.receive.apply(this.store, arguments);\n },\n toggleSidebar: function() {\n var element;\n $('body').toggleClass('maximized');\n element = $('');\n $('#top .profile').append(element);\n Em.run.later((function() {\n return element.remove();\n }), 10);\n element = $('');\n $('#repository').append(element);\n return Em.run.later((function() {\n return element.remove();\n }), 10);\n }\n })\n });\n\n}).call(this);\n\n})();\n//@ sourceURL=app");minispade.register('auth', "(function() {(function() {\n\n this.Travis.Auth = Ember.Object.extend({\n iframe: $('