From f0e95ddd3f28d2e151802579f84b55ab8cd69dcc Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 19 Feb 2013 03:21:43 +0100 Subject: [PATCH] Main view mostly works on new router --- assets/scripts/app/app.coffee | 60 --------- assets/scripts/app/controllers.coffee | 18 +-- assets/scripts/app/controllers/build.coffee | 11 ++ assets/scripts/app/controllers/flash.coffee | 9 +- assets/scripts/app/controllers/repo.coffee | 9 +- assets/scripts/app/controllers/repos.coffee | 2 +- assets/scripts/app/models/job.coffee | 13 +- assets/scripts/app/pusher.coffee | 1 + assets/scripts/app/routes.coffee | 65 ++++++--- assets/scripts/app/store.coffee | 3 +- assets/scripts/app/store/rest_adapter.coffee | 4 +- assets/scripts/app/templates/builds/show.hbs | 104 +++++++------- assets/scripts/app/templates/repos/list.hbs | 2 +- assets/scripts/app/templates/repos/show.hbs | 6 +- assets/scripts/app/views/application.coffee | 2 +- assets/scripts/app/views/build.coffee | 10 +- assets/scripts/app/views/repo/list.coffee | 6 +- assets/scripts/app/views/repo/show.coffee | 16 +-- assets/scripts/app/views/sidebar.coffee | 13 +- assets/scripts/app/views/top.coffee | 4 +- assets/scripts/lib/travis/ajax.coffee | 2 +- .../scripts/lib/travis/limited_array.coffee | 2 +- assets/scripts/lib/travis/model.coffee | 11 +- assets/scripts/travis.coffee | 127 ++++++++++-------- public/index.html | 1 - 25 files changed, 245 insertions(+), 256 deletions(-) create mode 100644 assets/scripts/app/controllers/build.coffee diff --git a/assets/scripts/app/app.coffee b/assets/scripts/app/app.coffee index a8a50350..42641989 100644 --- a/assets/scripts/app/app.coffee +++ b/assets/scripts/app/app.coffee @@ -1,64 +1,4 @@ -require 'auth' -require 'controllers' -require 'helpers' -require 'models' -require 'pusher' -require 'routes' -require 'slider' -require 'store' -require 'tailing' -require 'templates' -require 'views' - -require 'config/locales' -require 'data/sponsors' - -require 'travis/instrumentation' # $.mockjaxSettings.log = false # Ember.LOG_BINDINGS = true # Ember.ENV.RAISE_ON_DEPRECATION = true # Pusher.log = -> console.log(arguments) - -Travis.reopen - App: Em.Application.extend - autoinit: false - currentUserBinding: 'auth.user' - authStateBinding: 'auth.state' - - init: -> - @_super.apply this, arguments - - @store = Travis.Store.create() - @store.loadMany(Travis.Sponsor, Travis.SPONSORS) - - @slider = new Travis.Slider() - @pusher = new Travis.Pusher(Travis.config.pusher_key) - @tailing = new Travis.Tailing() - - @set('auth', Travis.Auth.create(app: this, endpoint: Travis.config.api_endpoint)) - - storeAfterSignInPath: (path) -> - @get('auth').storeAfterSignInPath(path) - - autoSignIn: (path) -> - @get('auth').autoSignIn() - - signIn: -> - @get('auth').signIn() - - signOut: -> - @get('auth').signOut() - @get('router').send('afterSignOut') - - receive: -> - @store.receive.apply(@store, arguments) - - toggleSidebar: -> - $('body').toggleClass('maximized') - # TODO gotta force redraws here :/ - element = $('') - $('#top .profile').append(element) - Em.run.later (-> element.remove()), 10 - element = $('') - $('#repo').append(element) - Em.run.later (-> element.remove()), 10 diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index f0e1d3ac..ac84eb2c 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -1,19 +1,19 @@ require 'helpers' require 'travis/ticker' -Travis.reopen - Controller: Em.Controller.extend() - - TopController: Em.Controller.extend +Travis.Controller = Em.Controller.extend() +Travis.TopController = Em.Controller.extend userBinding: 'Travis.app.currentUser' - ApplicationController: Em.Controller.extend() - MainController: Em.Controller.extend() - StatsLayoutController: Em.Controller.extend() - ProfileLayoutController: Em.Controller.extend() - AuthLayoutController: Em.Controller.extend() +Travis.ApplicationController = Em.Controller.extend() +Travis.MainController = Em.Controller.extend() +Travis.StatsLayoutController = Em.Controller.extend() +Travis.ProfileLayoutController = Em.Controller.extend() +Travis.AuthLayoutController = Em.Controller.extend() +Travis.CurrentUserController = Em.ObjectController.extend() require 'controllers/accounts' +require 'controllers/build' require 'controllers/builds' require 'controllers/flash' require 'controllers/home' diff --git a/assets/scripts/app/controllers/build.coffee b/assets/scripts/app/controllers/build.coffee new file mode 100644 index 00000000..4b303f57 --- /dev/null +++ b/assets/scripts/app/controllers/build.coffee @@ -0,0 +1,11 @@ +Travis.BuildController = Ember.Controller.extend + needs: ['repo'] + repoBinding: 'controllers.repo.repo' + buildBinding: 'controllers.repo.build' + commitBinding: 'build.commit' + + currentItemBinding: 'build' + + loading: (-> + !@get('build.isLoaded') + ).property('build.isLoaded') diff --git a/assets/scripts/app/controllers/flash.coffee b/assets/scripts/app/controllers/flash.coffee index 20e5b8a5..006af592 100644 --- a/assets/scripts/app/controllers/flash.coffee +++ b/assets/scripts/app/controllers/flash.coffee @@ -1,5 +1,8 @@ Travis.FlashController = Ember.ArrayController.extend - broadcastBinding: 'Travis.app.currentUser.broadcasts' + needs: ['currentUser'] + currentUserBinding: 'controllers.currentUser' + + broadcastBinding: 'currentUser.broadcasts' init: -> @set('flashes', Ember.A()) @@ -14,8 +17,8 @@ Travis.FlashController = Ember.ArrayController.extend ).property('broadcasts.isLoaded', 'broadcasts.length') broadcasts: (-> - if Travis.app.get('currentUser') then Travis.Broadcast.find() else Ember.A() - ).property('Travis.app.currentUser') + if @get('currentUser') then Travis.Broadcast.find() else Ember.A() + ).property('currentUser') loadFlashes: (msgs) -> for msg in msgs diff --git a/assets/scripts/app/controllers/repo.coffee b/assets/scripts/app/controllers/repo.coffee index 671d0f70..144ba3e8 100644 --- a/assets/scripts/app/controllers/repo.coffee +++ b/assets/scripts/app/controllers/repo.coffee @@ -1,5 +1,6 @@ Travis.RepoController = Travis.Controller.extend bindings: [] + needs: ['repos'] init: -> @_super.apply this, arguments @@ -33,7 +34,7 @@ Travis.RepoController = Travis.Controller.extend this["view#{$.camelize(action)}"]() viewIndex: -> - @_bind('repo', 'controllers.reposController.firstObject') + @_bind('repo', 'controllers.repos.firstObject') @_bind('build', 'repo.lastBuild') @connectTab('current') @@ -77,7 +78,7 @@ Travis.RepoController = Travis.Controller.extend Travis["#{$.camelize(name)}View"] @set('tab', tab) - @connectOutlet(outletName: 'pane', controller: this, viewClass: viewClass) + #@connectOutlet(outletName: 'pane', controller: this, viewClass: viewClass) _bind: (to, from) -> @bindings.push Ember.oneWay(this, to, from) @@ -85,3 +86,7 @@ Travis.RepoController = Travis.Controller.extend _unbind: -> binding.disconnect(this) for binding in @bindings @bindings.clear() + + urlGithub: (-> + Travis.Urls.githubRepo(@get('repo.slug')) + ).property('repo.slug'), diff --git a/assets/scripts/app/controllers/repos.coffee b/assets/scripts/app/controllers/repos.coffee index 06445ebd..89f212de 100644 --- a/assets/scripts/app/controllers/repos.coffee +++ b/assets/scripts/app/controllers/repos.coffee @@ -6,6 +6,7 @@ Travis.ReposController = Ember.ArrayController.extend init: -> Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes) + @_super.apply this, arguments updateTimes: -> if content = @get('content') @@ -27,7 +28,6 @@ Travis.ReposController = Ember.ArrayController.extend ) limit: 30 @set('content', content) - # @set('content', Travis.Repo.find()) viewOwned: -> @set('content', Travis.Repo.accessibleBy(Travis.app.get('currentUser.login'))) diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index 40313156..83117f68 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -17,6 +17,7 @@ require 'travis/model' repo: DS.belongsTo('Travis.Repo', key: 'repository_id') build: DS.belongsTo('Travis.Build', key: 'build_id') commit: DS.belongsTo('Travis.Commit', key: 'commit_id') + commits: DS.belongsTo('Travis.Commit', key: 'commit_id') log: ( -> Travis.Artifact.create(job: this) ).property() @@ -76,11 +77,11 @@ require 'travis/model' subscribe: -> if id = @get('id') - Travis.app.pusher.subscribe "job-#{id}" + Travis.pusher.subscribe "job-#{id}" onStateChange: (-> - if @get('state') == 'finished' && Travis.app - Travis.app.pusher.unsubscribe "job-#{@get('id')}" + if @get('state') == 'finished' && Travis.pusher + Travis.pusher.unsubscribe "job-#{@get('id')}" ).observes('state') isAttributeLoaded: (key) -> @@ -98,16 +99,16 @@ require 'travis/model' @Travis.Job.reopenClass queued: (queue) -> @find() - Travis.app.store.filter this, (job) -> + Travis.store.filter this, (job) -> queued = ['created', 'queued'].indexOf(job.get('state')) != -1 # TODO: why queue is sometimes just common instead of build.common? queued && (!queue || job.get('queue') == "builds.#{queue}" || job.get('queue') == queue) running: -> @find(state: 'started') - Travis.app.store.filter this, (job) -> + Travis.store.filter this, (job) -> job.get('state') == 'started' findMany: (ids) -> - Travis.app.store.findMany this, ids + Travis.store.findMany this, ids diff --git a/assets/scripts/app/pusher.coffee b/assets/scripts/app/pusher.coffee index daa054ca..2c5c757f 100644 --- a/assets/scripts/app/pusher.coffee +++ b/assets/scripts/app/pusher.coffee @@ -35,6 +35,7 @@ $.extend Travis.Pusher.prototype, "#{Travis.Pusher.CHANNEL_PREFIX}#{channel}" receive: (event, data) -> + return return if event.substr(0, 6) == 'pusher' data = @normalize(event, data) if data.id diff --git a/assets/scripts/app/routes.coffee b/assets/scripts/app/routes.coffee index c0cd5130..9882c66e 100644 --- a/assets/scripts/app/routes.coffee +++ b/assets/scripts/app/routes.coffee @@ -1,10 +1,10 @@ -require 'travis/location' - -Ember.Route.reopen - enter: (router) -> - @_super(router) - _gaq.push(['_trackPageview', @absoluteRoute(router)]) if @get('isLeafRoute') && _gaq? - +#require 'travis/location' +# +#Ember.Route.reopen +# enter: (router) -> +# @_super(router) +# _gaq.push(['_trackPageview', @absoluteRoute(router)]) if @get('isLeafRoute') && _gaq? +# defaultRoute = Ember.Route.extend route: '/' index: 1000 @@ -17,26 +17,26 @@ lineNumberRoute = Ember.Route.extend dynamicSegmentPattern: "([0-9]+)" -Travis.Router = Ember.Router.extend +Travis.OldRouter = Ember.Object.extend location: 'travis' # enableLogging: true enableLogging: false initialState: 'loading' - showRoot: Ember.Route.transitionTo('root.home.show') - showStats: Ember.Route.transitionTo('root.stats') - - showRepo: Ember.Route.transitionTo('root.home.repo.show') - showBuilds: Ember.Route.transitionTo('root.home.repo.builds.index') - showBuild: Ember.Route.transitionTo('root.home.repo.builds.show') - showPullRequests: Ember.Route.transitionTo('root.home.repo.pullRequests') - showBranches: Ember.Route.transitionTo('root.home.repo.branches') - showEvents: Ember.Route.transitionTo('root.home.repo.events') - showJob: Ember.Route.transitionTo('root.home.repo.job') - - showProfile: Ember.Route.transitionTo('root.profile') - showAccount: Ember.Route.transitionTo('root.profile.account') - showUserProfile: Ember.Route.transitionTo('root.profile.account.profile') + # showRoot: Ember.Route.transitionTo('root.home.show') + # showStats: Ember.Route.transitionTo('root.stats') + # + # showRepo: Ember.Route.transitionTo('root.home.repo.show') + # showBuilds: Ember.Route.transitionTo('root.home.repo.builds.index') + # showBuild: Ember.Route.transitionTo('root.home.repo.builds.show') + # showPullRequests: Ember.Route.transitionTo('root.home.repo.pullRequests') + # showBranches: Ember.Route.transitionTo('root.home.repo.branches') + # showEvents: Ember.Route.transitionTo('root.home.repo.events') + # showJob: Ember.Route.transitionTo('root.home.repo.job') + # + # showProfile: Ember.Route.transitionTo('root.profile') + # showAccount: Ember.Route.transitionTo('root.profile.account') + # showUserProfile: Ember.Route.transitionTo('root.profile.account.profile') saveLineNumberHash: (path) -> Ember.run.next this, -> @@ -372,3 +372,24 @@ Travis.Router = Ember.Router.extend job.removeObserver('log.id', observer) job.addObserver('log.id', observer) + +Ember.Router.reopen + location: Ember.HistoryLocation.create() + +Travis.Router.map -> + +Travis.IndexRoute = Ember.Route.extend + renderTemplate: -> + $('body').attr('id', 'home') + + @render 'repos', outlet: 'left' + @render 'sidebar', outlet: 'right' + @render 'top', outlet: 'top' + @render 'flash', outlet: 'flash' + @render 'repo' + @render 'build', outlet: 'pane', into: 'repo' + + setupController: (controller)-> + @container.lookup('controller:repos').activate() + @container.lookup('view:application').connectLayout 'home' + @container.lookup('controller:repo').activate('index') diff --git a/assets/scripts/app/store.coffee b/assets/scripts/app/store.coffee index 2ad698cb..64f836ea 100644 --- a/assets/scripts/app/store.coffee +++ b/assets/scripts/app/store.coffee @@ -5,7 +5,7 @@ DATA_PROXY = @savedData[name] Travis.Store = DS.Store.extend - revision: 4 + revision: 11 adapter: Travis.RestAdapter.create() init: -> @@ -71,6 +71,7 @@ Travis.Store = DS.Store.extend !!@typeMapFor(type).idToCid[id] receive: (event, data) -> + console.log event, data [name, type] = event.split(':') mappings = @adapter.get('mappings') diff --git a/assets/scripts/app/store/rest_adapter.coffee b/assets/scripts/app/store/rest_adapter.coffee index 66aaba02..e797bfb3 100644 --- a/assets/scripts/app/store/rest_adapter.coffee +++ b/assets/scripts/app/store/rest_adapter.coffee @@ -1,7 +1,7 @@ require 'travis/ajax' require 'models' -@Travis.RestAdapter = DS.RESTAdapter.extend +Travis.RestAdapter = DS.RESTAdapter.extend mappings: broadcasts: Travis.Broadcast repositories: Travis.Repo @@ -38,3 +38,5 @@ require 'models' return else @_super.apply this, arguments + +Travis.RestAdapter.map 'Travis.Commit', {} diff --git a/assets/scripts/app/templates/builds/show.hbs b/assets/scripts/app/templates/builds/show.hbs index 03c48b71..19744f4c 100644 --- a/assets/scripts/app/templates/builds/show.hbs +++ b/assets/scripts/app/templates/builds/show.hbs @@ -1,55 +1,53 @@ -{{#with view}} - {{#if loading}} - Loading +{{#if loading}} + Loading +{{else}} +
+
+
{{t builds.name}}
+
+ + {{#with build}} + {{number}} + {{/with}} +
+
{{t builds.state}}
+
{{capitalize build.state}}
+
{{t builds.finished_at}}
+
{{formatTime build.finishedAt}}
+
{{t builds.duration}}
+
{{formatDuration build.duration}}
+
+ +
+
{{t builds.commit}}
+
{{formatCommit build.commit}}
+ {{#if commit.compareUrl}} +
{{t builds.compare}}
+
{{pathFrom build.commit.compareUrl}}
+ {{/if}} + {{#if commit.authorName}} +
{{t builds.author}}
+
{{build.commit.authorName}}
+ {{/if}} + {{#if commit.committerName}} +
{{t builds.committer}}
+
{{build.commit.committerName}}
+ {{/if}} +
+ +
{{t builds.message}}
+
{{{formatMessage build.commit.message}}}
+ + {{#unless isMatrix}} +
{{t builds.config}}
+
{{formatConfig build.config}}
+ {{/unless}} +
+ + {{#if build.isMatrix}} + {{view Travis.JobsView jobsBinding="build.requiredJobs" required="true"}} + {{view Travis.JobsView jobsBinding="build.allowedFailureJobs"}} {{else}} -
-
-
{{t builds.name}}
-
- - {{#with build}} - {{number}} - {{/with}} -
-
{{t builds.state}}
-
{{capitalize build.state}}
-
{{t builds.finished_at}}
-
{{formatTime build.finishedAt}}
-
{{t builds.duration}}
-
{{formatDuration build.duration}}
-
- -
-
{{t builds.commit}}
-
{{formatCommit build.commit}}
- {{#if commit.compareUrl}} -
{{t builds.compare}}
-
{{pathFrom build.commit.compareUrl}}
- {{/if}} - {{#if commit.authorName}} -
{{t builds.author}}
-
{{build.commit.authorName}}
- {{/if}} - {{#if commit.committerName}} -
{{t builds.committer}}
-
{{build.commit.committerName}}
- {{/if}} -
- -
{{t builds.message}}
-
{{{formatMessage build.commit.message}}}
- - {{#unless isMatrix}} -
{{t builds.config}}
-
{{formatConfig build.config}}
- {{/unless}} -
- - {{#if build.isMatrix}} - {{view Travis.JobsView jobsBinding="build.requiredJobs" required="true"}} - {{view Travis.JobsView jobsBinding="build.allowedFailureJobs"}} - {{else}} - {{view Travis.LogView contextBinding="build.jobs.firstObject"}} - {{/if}} + {{view Travis.LogView contextBinding="build.jobs.firstObject"}} {{/if}} -{{/with}} +{{/if}} diff --git a/assets/scripts/app/templates/repos/list.hbs b/assets/scripts/app/templates/repos/list.hbs index 1a1eca71..03fb08ab 100644 --- a/assets/scripts/app/templates/repos/list.hbs +++ b/assets/scripts/app/templates/repos/list.hbs @@ -5,7 +5,7 @@ {{view Travis.ReposListTabsView}}
- {{#collection Travis.ReposListView contentBinding="controller"}} + {{#collection Travis.ReposListView contentBinding="this"}} {{#with view.repo}}
diff --git a/assets/scripts/app/templates/repos/show.hbs b/assets/scripts/app/templates/repos/show.hbs index 00d52e5b..f43d47ed 100644 --- a/assets/scripts/app/templates/repos/show.hbs +++ b/assets/scripts/app/templates/repos/show.hbs @@ -2,10 +2,10 @@ {{#if view.isEmpty}} {{view Travis.ReposEmptyView}} {{else}} - {{#if view.repo.isLoaded}} - {{#with view.repo}} + {{#if repo.isLoaded}} + {{#with repo}}

- {{slug}} + {{slug}}

{{description}}

diff --git a/assets/scripts/app/views/application.coffee b/assets/scripts/app/views/application.coffee index f738ccb4..5142c518 100644 --- a/assets/scripts/app/views/application.coffee +++ b/assets/scripts/app/views/application.coffee @@ -1,4 +1,4 @@ -@Travis.reopen +Travis.reopen ApplicationView: Travis.View.extend templateName: 'layouts/home' classNames: ['application'] diff --git a/assets/scripts/app/views/build.coffee b/assets/scripts/app/views/build.coffee index 47c76690..1d6f77bc 100644 --- a/assets/scripts/app/views/build.coffee +++ b/assets/scripts/app/views/build.coffee @@ -53,15 +53,7 @@ elementId: 'build' classNameBindings: ['color', 'loading'] - repoBinding: 'controller.repo' - buildBinding: 'controller.build' - commitBinding: 'build.commit' - - currentItemBinding: 'build' - - loading: (-> - !@get('build.isLoaded') - ).property('build.isLoaded') + loadingBinding: 'controller.loading' color: (-> Travis.Helpers.colorForState(@get('build.state')) diff --git a/assets/scripts/app/views/repo/list.coffee b/assets/scripts/app/views/repo/list.coffee index b4f5ae26..e64fd0a4 100644 --- a/assets/scripts/app/views/repo/list.coffee +++ b/assets/scripts/app/views/repo/list.coffee @@ -22,6 +22,8 @@ ReposListTabsView: Travis.View.extend templateName: 'repos/list/tabs' tabBinding: 'controller.tab' + needs: ['currentUser'] + currentUserBinding: 'controllers.currentUser' activate: (event) -> @get('controller').activate(event.target.name) @@ -33,9 +35,9 @@ classOwned: (-> classes = [] classes.push('active') if @get('tab') == 'owned' - classes.push('display-inline') if Travis.app.get('currentUser') + classes.push('display-inline') if @get('currentUser') classes.join(' ') - ).property('tab', 'Travis.app.currentUser') + ).property('tab', 'currentUser') classSearch: (-> 'active' if @get('tab') == 'search' diff --git a/assets/scripts/app/views/repo/show.coffee b/assets/scripts/app/views/repo/show.coffee index b9ede214..765281a6 100644 --- a/assets/scripts/app/views/repo/show.coffee +++ b/assets/scripts/app/views/repo/show.coffee @@ -2,21 +2,15 @@ RepoView: Travis.View.extend templateName: 'repos/show' - reposBinding: 'controller.repos' - repoBinding: 'controller.repo' + classNameBindings: ['loading:isLoaded'] - class: (-> - 'loading' unless @get('repo.isLoaded') - ).property('repo.isLoaded') + isLoadedBinding: 'controller.repo.isLoaded' + reposBinding: 'controllers.repos' isEmpty: (-> @get('repos.isLoaded') && @get('repos.length') == 0 ).property('repos.isLoaded', 'repos.length') - urlGithub: (-> - Travis.Urls.githubRepo(@get('repo.slug')) - ).property('repo.slug'), - RepoShowStatsView: Travis.View.extend templateName: 'repos/show/stats' repoBinding: 'parentView.repo' @@ -208,6 +202,6 @@ ).property('tab') hasPermission: (-> - if permissions = Travis.app.get('currentUser.permissions') + if permissions = Travis.get('currentUser.permissions') permissions.contains @get('repo.id') - ).property('Travis.app.currentUser.permissions.length', 'repo.id') + ).property('Travis.currentUser.permissions.length', 'repo.id') diff --git a/assets/scripts/app/views/sidebar.coffee b/assets/scripts/app/views/sidebar.coffee index dbee7c7c..b8c9b550 100644 --- a/assets/scripts/app/views/sidebar.coffee +++ b/assets/scripts/app/views/sidebar.coffee @@ -9,9 +9,10 @@ didInsertElement: -> controller = @get 'controller' - unless controller.get('content') - Travis.app.get('router.sidebarController').tickables.push(controller) - controller.set 'content', Travis.Sponsor.decks() + # TODO: move this stuff to controller + #unless controller.get('content') + #Travis.app.get('router.sidebarController').tickables.push(controller) + #controller.set 'content', Travis.Sponsor.decks() @_super.apply this, arguments LinksView: Em.View.extend @@ -21,9 +22,9 @@ didInsertElement: -> controller = @get 'controller' - unless controller.get('content') - controller.set 'content', Travis.Sponsor.links() - Travis.app.get('router.sidebarController').tickables.push(controller) + #unless controller.get('content') + # controller.set 'content', Travis.Sponsor.links() + # Travis.app.get('router.sidebarController').tickables.push(controller) @_super.apply this, arguments WorkersView: Em.View.extend diff --git a/assets/scripts/app/views/top.coffee b/assets/scripts/app/views/top.coffee index a3049dc7..bb674845 100644 --- a/assets/scripts/app/views/top.coffee +++ b/assets/scripts/app/views/top.coffee @@ -25,9 +25,9 @@ classProfile: (-> classes = ['profile menu'] classes.push('active') if @get('tab') == 'profile' - classes.push(Travis.app.get('authState')) + classes.push(Travis.get('authState')) classes.join(' ') - ).property('tab', 'Travis.app.authState') + ).property('tab', 'Travis.authState') showProfile: -> $('#top .profile ul').show() diff --git a/assets/scripts/lib/travis/ajax.coffee b/assets/scripts/lib/travis/ajax.coffee index 5af00cfd..e7561db7 100644 --- a/assets/scripts/lib/travis/ajax.coffee +++ b/assets/scripts/lib/travis/ajax.coffee @@ -1,6 +1,6 @@ jQuery.support.cors = true -@Travis.ajax = Em.Object.create +Travis.ajax = Em.Object.create DEFAULT_OPTIONS: accepts: json: 'application/vnd.travis-ci.2+json' diff --git a/assets/scripts/lib/travis/limited_array.coffee b/assets/scripts/lib/travis/limited_array.coffee index b9f1a6d8..c6baaddc 100644 --- a/assets/scripts/lib/travis/limited_array.coffee +++ b/assets/scripts/lib/travis/limited_array.coffee @@ -54,7 +54,7 @@ Travis.LimitedArray = Em.ArrayProxy.extend if addedCount if index < limit addedObjects = array.slice(index, index + addedCount) - @replaceContent(index, 0, addedObjects) + @get('arrangedContent').replace(index, 0, addedObjects) @balanceArray() diff --git a/assets/scripts/lib/travis/model.coffee b/assets/scripts/lib/travis/model.coffee index dada8467..11e2ee42 100644 --- a/assets/scripts/lib/travis/model.coffee +++ b/assets/scripts/lib/travis/model.coffee @@ -1,7 +1,4 @@ @Travis.Model = DS.Model.extend - primaryKey: 'id' - id: DS.attr('number') - init: -> @loadedAttributes = [] @_super.apply this, arguments @@ -58,15 +55,15 @@ @Travis.Model.reopenClass find: -> if arguments.length == 0 - Travis.app.store.findAll(this) + Travis.store.findAll(this) else @_super.apply(this, arguments) filter: (callback) -> - Travis.app.store.filter(this, callback) + Travis.store.filter(this, callback) load: (attrs) -> - Travis.app.store.load(this, attrs) + Travis.store.load(this, attrs) select: (id) -> @find().forEach (record) -> @@ -86,7 +83,7 @@ name.replace(/([A-Z])/g, '_$1').toLowerCase().slice(1) pluralName: -> - Travis.app.store.adapter.pluralize(@singularName()) + Travis.store.adapter.pluralize(@singularName()) isAttribute: (name) -> Ember.get(this, 'attributes').has(name) || diff --git a/assets/scripts/travis.coffee b/assets/scripts/travis.coffee index c8758a01..6dd92a6d 100644 --- a/assets/scripts/travis.coffee +++ b/assets/scripts/travis.coffee @@ -1,18 +1,6 @@ require 'ext/jquery' require 'ext/ember/namespace' -if window.history.state == undefined - window.history.state = {} - oldPushState = window.history.pushState - window.history.pushState = (state, title, href) -> - window.history.state = state - oldPushState.apply this, arguments - - oldReplaceState = window.history.replaceState - window.history.replaceState = (state, title, href) -> - window.history.state = state - oldReplaceState.apply this, arguments - # TODO: how can I put it in Travis namespace and use immediately? Storage = Em.Object.extend init: -> @@ -28,8 +16,62 @@ Storage = Em.Object.extend clear: -> @set('storage', {}) +window.Travis = Em.Application.create Ember.Evented, + autoinit: false + currentUserBinding: 'auth.user' + authStateBinding: 'auth.state' -@Travis = Em.Namespace.create Ember.Evented, + setup: -> + @store = Travis.Store.create( + adapter: Travis.RestAdapter.create(serializer: DS.RESTSerializer) + ) + #@store.loadMany(Travis.Sponsor, Travis.SPONSORS) + + @slider = new Travis.Slider() + @pusher = new Travis.Pusher(Travis.config.pusher_key) + @tailing = new Travis.Tailing() + + @set('auth', Travis.Auth.create(app: this, endpoint: Travis.config.api_endpoint)) + + storeAfterSignInPath: (path) -> + @get('auth').storeAfterSignInPath(path) + + autoSignIn: (path) -> + @get('auth').autoSignIn() + + signIn: -> + @get('auth').signIn() + + signOut: -> + @get('auth').signOut() + @get('router').send('afterSignOut') + + receive: -> + @store.receive.apply(@store, arguments) + + toggleSidebar: -> + $('body').toggleClass('maximized') + # TODO gotta force redraws here :/ + element = $('') + $('#top .profile').append(element) + Em.run.later (-> element.remove()), 10 + element = $('') + $('#repo').append(element) + Em.run.later (-> element.remove()), 10 + + setLocale: (locale) -> + return unless locale + I18n.locale = locale + Travis.set('locale', locale) + + defaultLocale: 'en' + + ready: -> + location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!' + I18n.fallbacks = true + @setLocale 'locale', @get('defaultLocale') + +$.extend Travis, config: api_endpoint: $('meta[rel="travis.api_endpoint"]').attr('href') pusher_key: $('meta[name="travis.pusher_key"]').attr('value') @@ -37,21 +79,6 @@ Storage = Em.Object.extend CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'jdk', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala', 'compiler'] - ROUTES: - 'profile/:login/me': ['profile', 'user'] - 'profile/:login': ['profile', 'hooks'] - 'profile': ['profile', 'hooks'] - 'stats': ['stats', 'show'] - ':owner/:name/jobs/:id/:line': ['home', 'job'] - ':owner/:name/jobs/:id': ['home', 'job'] - ':owner/:name/builds/:id': ['home', 'build'] - ':owner/:name/builds': ['home', 'builds'] - ':owner/:name/pull_requests': ['home', 'pullRequests'] - ':owner/:name/branches': ['home', 'branches'] - ':owner/:name': ['home', 'current'] - '': ['home', 'index'] - '#': ['home', 'index'] - QUEUES: [ { name: 'common', display: 'Common' } { name: 'linux', display: 'Linux' } @@ -60,11 +87,6 @@ Storage = Em.Object.extend INTERVALS: { sponsors: -1, times: -1, updateTimes: 1000 } - setLocale: (locale) -> - return unless locale - I18n.locale = locale - Travis.set('locale', locale) - storage: (-> storage = null try @@ -74,7 +96,7 @@ Storage = Em.Object.extend storage )() - default_locale: 'en' + sessionStorage: (-> storage = null try @@ -88,26 +110,25 @@ Storage = Em.Object.extend storage )() - run: (attrs) -> - location.href = location.href.replace('#!/', '') if location.hash.slice(0, 2) == '#!' - - I18n.fallbacks = true - Travis.setLocale 'locale', @default_locale - - Ember.run.next this, -> - app = Travis.App.create(attrs || {}) - # TODO: router expects the classes for controllers on main namespace, so - # if we want to keep app at Travis.app, we need to copy that, it would - # be ideal to send a patch to ember and get rid of this - $.each Travis, (key, value) -> - app[key] = value if value && value.isClass && key != 'constructor' - - @app = app - @store = app.store - $ => app.initialize() - setupGoogleAnalytics() if Travis.config.ga_code require 'ext/i18n' require 'travis/ajax' -require 'app' +require 'auth' +require 'controllers' +require 'helpers' +require 'models' +require 'pusher' +require 'routes' +require 'slider' +require 'store' +require 'tailing' +require 'templates' +require 'views' + +require 'config/locales' +require 'data/sponsors' + +require 'travis/instrumentation' + +Travis.setup() diff --git a/public/index.html b/public/index.html index fb4970ef..9921d781 100644 --- a/public/index.html +++ b/public/index.html @@ -16,7 +16,6 @@