diff --git a/assets/scripts/app/controllers.coffee b/assets/scripts/app/controllers.coffee index 85a32233..f1b4f520 100644 --- a/assets/scripts/app/controllers.coffee +++ b/assets/scripts/app/controllers.coffee @@ -57,8 +57,6 @@ require 'controllers/job' require 'controllers/profile' require 'controllers/repos' require 'controllers/repo' -#require 'controllers/running_jobs' -#require 'controllers/sidebar' require 'controllers/stats' require 'controllers/current_user' require 'controllers/account_index' diff --git a/assets/scripts/app/controllers/running_jobs.coffee b/assets/scripts/app/controllers/running_jobs.coffee deleted file mode 100644 index 4d81a0e8..00000000 --- a/assets/scripts/app/controllers/running_jobs.coffee +++ /dev/null @@ -1,103 +0,0 @@ -Travis.RunningJobsController = Em.ArrayProxy.extend - Group: Em.Object.extend - slug: (-> @get('jobs.firstObject.repoSlug') ).property('jobs.firstObject.repoSlug') - - init: -> - @_super.apply this, arguments - @set 'jobs', [] - - @set 'sortedJobs', Em.ArrayProxy.extend(Em.SortableMixin, - sortProperties: ['number'] - ).create(content: @get('jobs')) - - willDestroy: -> - @get('sortedJobs').destroy() - - add: (job) -> - @get('jobs').pushObject(job) unless @get('jobs').contains job - @attach() - - remove: (job) -> - @get('jobs').removeObject(job) - @clean() - - attach: -> - @get('parent').addGroup(this) - - clean: -> - @get('parent').removeGroup(this) if @get('isEmpty') - - isEmpty: (-> - @get('jobs.length') == 0 - ).property('jobs.length') - - groups: [] - sortedGroups: (-> - Em.ArrayProxy.extend(Em.SortableMixin, - sortProperties: ['slug'] - ).create(content: @get('groups')) - ).property() - - groupsBySlug: {} - - init: -> - @_super.apply this, arguments - - jobs = Travis.Job.running() - @set 'content', jobs - @addedJobs jobs - - contentArrayWillChange: (array, index, removedCount, addedCount) -> - @_super.apply this, arguments - - if removedCount - @removedJobs array.slice(index, index + removedCount) - - contentArrayDidChange: (array, index, removedCount, addedCount) -> - @_super.apply this, arguments - - if addedCount - @addedJobs array.slice(index, index + addedCount) - - addedJobs: (jobs) -> - self = this - jobs.forEach (job) -> - self.waitForSlug(job, 'addJob') - - removedJobs: (jobs) -> - self = this - jobs.forEach (job) -> - self.waitForSlug(job, 'removeJob') - - addJob: (job) -> - slug = job.get('repoSlug') - group = @groupForSlug(slug) - group.add(job) - - removeJob: (job) -> - slug = job.get('repoSlug') - group = @groupForSlug(slug) - group.remove(job) - - waitForSlug: (job, callbackName) -> - callback = @[callbackName] - self = this - if job.get('repoSlug')? - callback.call self, job - else - observer = -> - if job.get('repoSlug')? - callback.call self, job - job.removeObserver 'repoSlug', observer - job.addObserver 'repoSlug', observer - - groupForSlug: (slug) -> - @groupsBySlug[slug] ||= @Group.create(slug: slug, parent: this) - - addGroup: (group) -> - @get('groups').pushObject group unless @get('groups').contains group - - removeGroup: (group) -> - @get('groups').removeObject group - delete @groupsBySlug[group.get('slug')] - group.destroy() diff --git a/assets/scripts/app/controllers/sidebar.coffee b/assets/scripts/app/controllers/sidebar.coffee deleted file mode 100644 index 4673e14c..00000000 --- a/assets/scripts/app/controllers/sidebar.coffee +++ /dev/null @@ -1,41 +0,0 @@ -Travis.reopen - SidebarController: Em.ArrayController.extend - needs: ['runningJobs'] - jobsBinding: 'controllers.runningJobs' - - init: -> - @_super.apply this, arguments - - QueuesController: Em.ArrayController.extend - init: -> - @_super.apply this, arguments - - queues = for queue in Travis.QUEUES - Travis.LimitedArray.create - content: Travis.Job.queued(queue.name), limit: 20 - id: "queue_#{queue.name}" - name: queue.display - @set 'content', queues - - showAll: (queue) -> - queue.showAll() - - WorkersController: Em.ArrayController.extend - init: -> - @_super.apply this, arguments - @set 'content', Travis.Worker.find() - - groups: (-> - if content = @get 'arrangedContent' - groups = {} - for worker in content.toArray() - host = worker.get('host') - unless groups[host] - groups[host] = Em.ArrayProxy.extend(Em.SortableMixin, - content: [], - sortProperties: ['nameForSort'] - ).create() - groups[host].pushObject(worker) - - $.values(groups) - ).property('length') diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index fc7df98a..cbda6284 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -103,18 +103,15 @@ require 'travis/model' ).property('state') @Travis.Job.reopenClass - queued: (queue) -> + queued: -> filtered = Ember.FilteredRecordArray.create( modelClass: Travis.Job filterFunction: (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) - + ['created', 'queued'].indexOf(job.get('state')) != -1 filterProperties: ['state', 'queue'] ) - @fetch(state: 'started').then (array) -> + @fetch().then (array) -> filtered.updateFilter() filtered.set('isLoaded', true) diff --git a/assets/scripts/app/templates/jobs/running.hbs b/assets/scripts/app/templates/jobs/running.hbs deleted file mode 100644 index 6be98a9a..00000000 --- a/assets/scripts/app/templates/jobs/running.hbs +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/assets/scripts/app/templates/jobs/running/group.hbs b/assets/scripts/app/templates/jobs/running/group.hbs deleted file mode 100644 index eef5813f..00000000 --- a/assets/scripts/app/templates/jobs/running/group.hbs +++ /dev/null @@ -1,15 +0,0 @@ - - {{slug}} ({{jobs.length}}) - - - diff --git a/assets/scripts/app/views.coffee b/assets/scripts/app/views.coffee index 1d61aea1..ae5928c1 100644 --- a/assets/scripts/app/views.coffee +++ b/assets/scripts/app/views.coffee @@ -54,7 +54,6 @@ require 'views/job' require 'views/log' require 'views/repo' require 'views/profile' -require 'views/sidebar' require 'views/stats' require 'views/signin' require 'views/top' diff --git a/assets/scripts/app/views/sidebar.coffee b/assets/scripts/app/views/sidebar.coffee deleted file mode 100644 index 5fe8bc26..00000000 --- a/assets/scripts/app/views/sidebar.coffee +++ /dev/null @@ -1,87 +0,0 @@ -@Travis.reopen - SidebarView: Travis.View.extend - templateName: 'layouts/sidebar' - - didInsertElement: -> - @_super.apply this, arguments - - #@activate('jobs') - - activate: (name) -> - console.log - return if @get('activeTab') == name - @set('activeTab', name) - @connectOutlet 'pane', Travis.SidebarView["#{name.capitalize()}View"].create(controller: @get('controller')) - - classQueues: (-> - 'active' if @get('activeTab') == 'queues' - ).property('activeTab') - - classWorkers: (-> - 'active' if @get('activeTab') == 'workers' - ).property('activeTab') - - classJobs: (-> - 'active' if @get('activeTab') == 'jobs' - ).property('activeTab') - - QueuesView: Em.View.extend - templateName: 'queues/list' - init: -> - @_super.apply this, arguments - @set 'controller', @get('controller').container.lookup('controller:queues') - - WorkersView: Travis.View.extend - toggleWorkers: -> - handle = $(event.target).toggleClass('open') - if handle.hasClass('open') - $('#workers li').addClass('open') - else - $('#workers li').removeClass('open') - - WorkersListView: Travis.View.extend - toggle: -> - this.$().find('> li').toggleClass('open') - - WorkersItemView: Travis.View.extend - classNameBindings: ['worker.state'] - - display: (-> - name = (@get('worker.name') || '').replace('travis-', '') - state = @get('worker.state') - - if state == 'working' - "#{name}: #{@get('worker.repoSlug')} ##{@get('worker.jobNumber')}".htmlSafe() - else - "#{name}: #{state}" - ).property('worker.state') - - QueueItemView: Travis.View.extend - tagName: 'li' - -Travis.SidebarView.reopenClass - WorkersView: Em.View.extend - templateName: 'workers/list' - init: -> - @_super.apply this, arguments - @set 'controller', @get('controller').container.lookup('controller:workers') - - JobsView: Em.View.extend - templateName: 'jobs/running' - elementId: 'running-jobs' - init: -> - @_super.apply this, arguments - @set 'controller', @get('controller').container.lookup('controller:runningJobs') - - groupsBinding: 'controller.sortedGroups' - jobsBinding: 'controller' - - GroupView: Em.View.extend - templateName: 'jobs/running/group' - tagName: 'li' - contextBinding: 'group' - expanded: false - classNameBindings: ['expanded'] - classNames: ['group'] - toggle: -> - @toggleProperty('expanded') diff --git a/assets/scripts/vendor/ember-model.js b/assets/scripts/vendor/ember-model.js index 8a67eefc..a5eea67b 100644 --- a/assets/scripts/vendor/ember-model.js +++ b/assets/scripts/vendor/ember-model.js @@ -438,6 +438,10 @@ Ember.Model = Ember.Object.extend(Ember.Evented, { init: function() { this._createReference(); this._super(); + + this.one('didLoad', function() { + this.constructor.addToRecordArrays(this); + }); }, _createReference: function() { diff --git a/assets/styles/right.sass b/assets/styles/right.sass index 4d40b06d..a1049a9a 100644 --- a/assets/styles/right.sass +++ b/assets/styles/right.sass @@ -41,22 +41,3 @@ #right .show-more-jobs text-decoration: underline cursor: pointer - -#running-jobs - .jobs - display: none - margin: 5px 0 5px - .job - list-style-type: disc - list-style-position: inside - .expanded .jobs - display: block - .slug - max-width: 150px - overflow: hidden - white-space: nowrap - text-overflow: ellipsis - display: inline-block - display: -moz-inline-stack - .group a - cursor: pointer