From caff4dda4644342de6bc002516f2e555ba5b6523 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 5 Aug 2015 11:02:14 +0200 Subject: [PATCH 01/11] Update Ember to 1.13.6 --- bower.json | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bower.json b/bower.json index 4562f880..8e938bf4 100644 --- a/bower.json +++ b/bower.json @@ -3,16 +3,16 @@ "dependencies": { "handlebars": "2.0.0", "jquery": "^1.11.1", - "ember": "1.13.3", + "ember": "1.13.6", "ember-data": "1.0.0-beta.16.1", "ember-resolver": "~0.1.15", "loader.js": "ember-cli/loader.js#1.0.1", "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", "ember-cli-test-loader": "ember-cli/ember-cli-test-loader#0.1.0", "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4", - "ember-qunit": "0.4.0", + "ember-qunit": "0.4.9", "ember-qunit-notifications": "0.0.5", - "qunit": "~1.17.1", + "qunit": "~1.18.0", "visibilityjs": "~1.2.1", "JavaScript-MD5": "~1.1.0", "moment": "~2.9.0", diff --git a/package.json b/package.json index dd69ed6e..14b008e8 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "devDependencies": { "broccoli-asset-rev": "^2.0.2", "broccoli-sass": "0.6.5", - "ember-cli": "^1.13.1", + "ember-cli": "1.13.7", "ember-cli-app-version": "0.4.0", "ember-cli-autoprefixer": "^0.3.0", "ember-cli-babel": "5.0.0", @@ -35,7 +35,7 @@ "ember-cli-inject-live-reload": "^1.3.0", "ember-cli-inline-images": "^0.0.4", "ember-cli-pretender": "0.3.1", - "ember-cli-qunit": "0.3.15", + "ember-cli-qunit": "0.3.20", "ember-cli-release": "0.2.3", "ember-cli-sauce": "^1.1.0", "ember-cli-uglify": "1.0.1", From 23c51613653c09dff1e7883fe697e6223241e84a Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 5 Aug 2015 11:06:08 +0200 Subject: [PATCH 02/11] Bump brocolli-sass to 0.6.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 14b008e8..ba38bc94 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "license": "MIT", "devDependencies": { "broccoli-asset-rev": "^2.0.2", - "broccoli-sass": "0.6.5", + "broccoli-sass": "0.6.6", "ember-cli": "1.13.7", "ember-cli-app-version": "0.4.0", "ember-cli-autoprefixer": "^0.3.0", From 58a817ee8d844da3ed6a5b402bcff36a5e343b98 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 5 Aug 2015 11:07:09 +0200 Subject: [PATCH 03/11] Try 0.12.x node version on heroku --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ba38bc94..974b3fbf 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "repository": "", "engines": { - "node": "0.10.32" + "node": "0.12.x" }, "author": "", "license": "MIT", From 759e56d7ba03c3e8d201d9ab6dbbd3f3d99017ee Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 5 Aug 2015 13:11:57 +0200 Subject: [PATCH 04/11] Change repos-list into a component --- app/components/repo-show-tabs.coffee | 54 +++++++++++++ app/components/repos-list-item.coffee | 29 +++++++ app/components/repos-list.coffee | 6 ++ app/controllers/repos.coffee | 13 +-- app/routes/main-tab.coffee | 8 +- app/templates/components/repo-show-tabs.hbs | 83 ++++++++++++++++++++ app/templates/components/repos-list-item.hbs | 35 +++++++++ app/templates/components/repos-list.hbs | 7 ++ app/templates/repo.hbs | 2 +- app/templates/repos.hbs | 45 +---------- app/templates/repos/show/tabs.hbs | 82 ------------------- 11 files changed, 228 insertions(+), 136 deletions(-) create mode 100644 app/components/repo-show-tabs.coffee create mode 100644 app/components/repos-list-item.coffee create mode 100644 app/components/repos-list.coffee create mode 100644 app/templates/components/repo-show-tabs.hbs create mode 100644 app/templates/components/repos-list-item.hbs create mode 100644 app/templates/components/repos-list.hbs diff --git a/app/components/repo-show-tabs.coffee b/app/components/repo-show-tabs.coffee new file mode 100644 index 00000000..aa15b348 --- /dev/null +++ b/app/components/repo-show-tabs.coffee @@ -0,0 +1,54 @@ +`import Ember from 'ember'` + +RepoShowTabsComponent = Ember.Component.extend + # hrm. how to parametrize bind-attr? + classCurrent: (-> + 'active' if @get('tab') == 'current' + ).property('tab') + + classBuilds: (-> + 'active' if @get('tab') == 'builds' + ).property('tab') + + classPullRequests: (-> + 'active' if @get('tab') == 'pull_requests' + ).property('tab') + + classBranches: (-> + 'active' if @get('tab') == 'branches' + ).property('tab') + + classEvents: (-> + 'active' if @get('tab') == 'events' + ).property('tab') + + classBuild: (-> + tab = @get('tab') + classes = [] + classes.push('active') if tab == 'build' + classes.push('display-inline') if tab == 'build' || tab == 'job' + classes.join(' ') + ).property('tab') + + # TODO: refactor tabs, most of the things here are not really DRY + classJob: (-> + 'active' if @get('tab') == 'job' + ).property('tab') + + classRequests: (-> + 'active' if @get('tab') == 'requests' + ).property('tab') + + classCaches: (-> + 'active' if @get('tab') == 'caches' + ).property('tab') + + classSettings: (-> + 'active' if @get('tab') == 'settings' + ).property('tab') + + classRequest: (-> + 'active' if @get('tab') == 'request' + ).property('tab') + +`export default RepoShowTabsComponent` diff --git a/app/components/repos-list-item.coffee b/app/components/repos-list-item.coffee new file mode 100644 index 00000000..1d620188 --- /dev/null +++ b/app/components/repos-list-item.coffee @@ -0,0 +1,29 @@ +`import Ember from 'ember'` +`import Polling from 'travis/mixins/polling'` +`import { colorForState } from 'travis/utils/helpers'` + +ReposListItemComponent = Ember.Component.extend Polling, + tagName: 'li' + + pollModels: 'repo' + + classNames: ['repo'] + classNameBindings: ['color', 'selected'] + selected: (-> + @get('repo') == @get('selectedRepo') + ).property('selectedRepo') + + color: (-> + colorForState(@get('repo.lastBuildState')) + ).property('repo.lastBuildState') + + scrollTop: (-> + if (window.scrollY > 0) + $('html, body').animate({scrollTop: 0}, 200) + ) + + click: -> + @scrollTop() + @get('controller').transitionToRoute('/' + @get('repo.slug')) + +`export default ReposListItemComponent` diff --git a/app/components/repos-list.coffee b/app/components/repos-list.coffee new file mode 100644 index 00000000..3dcf8f8c --- /dev/null +++ b/app/components/repos-list.coffee @@ -0,0 +1,6 @@ +`import Ember from 'ember'` + +ReposListComponent = Ember.Component.extend + tagName: 'ul' + +`export default ReposListComponent` diff --git a/app/controllers/repos.coffee b/app/controllers/repos.coffee index bce174fa..dcf43dda 100644 --- a/app/controllers/repos.coffee +++ b/app/controllers/repos.coffee @@ -2,7 +2,8 @@ `import limit from 'travis/utils/computed-limit'` `import Repo from 'travis/models/repo'` -Controller = Ember.ArrayController.extend +Controller = Ember.Controller.extend + contentBinding: 'repos' actions: activate: (name) -> @activate(name) @@ -29,7 +30,7 @@ Controller = Ember.ArrayController.extend if @get('tab') == 'owned' && @get('isLoaded') && @get('length') == 0 @container.lookup('router:main').send('redirectToGettingStarted') - isLoadedBinding: 'content.isLoaded' + isLoadedBinding: 'repos.isLoaded' needs: ['currentUser', 'repo', 'runningJobs', 'queue'] currentUserBinding: 'controllers.currentUser.model' selectedRepo: (-> @@ -57,8 +58,8 @@ Controller = Ember.ArrayController.extend ).property() updateTimes: -> - if content = @get('content') - content.forEach (r) -> r.updateTimes() + if repos = @get('repos') + repos.forEach (r) -> r.updateTimes() activate: (tab, params) -> @set('sortProperties', ['sortOrder']) @@ -66,7 +67,7 @@ Controller = Ember.ArrayController.extend this["view_#{tab}".camelize()](params) viewOwned: -> - @set('content', @get('userRepos')) + @set('repos', @get('userRepos')) viewRunning: -> @@ -79,7 +80,7 @@ Controller = Ember.ArrayController.extend viewSearch: (phrase) -> @set('search', phrase) - @set('content', Repo.search(@store, phrase)) + @set('repos', Repo.search(@store, phrase)) searchObserver: (-> search = @get('search') diff --git a/app/routes/main-tab.coffee b/app/routes/main-tab.coffee index bbc1d4da..6cf21fb6 100644 --- a/app/routes/main-tab.coffee +++ b/app/routes/main-tab.coffee @@ -12,15 +12,17 @@ Route = TravisRoute.extend @controllerFor('repos').activate(@get('reposTabName')) @currentRepoDidChange() - @controllerFor('repos').addObserver('firstObject', this, 'currentRepoDidChange') + if repos = @controllerFor('repos').get('repos') + repos.addObserver('firstObject', this, 'currentRepoDidChange') deactivate: -> - @controllerFor('repos').removeObserver('firstObject', this, 'currentRepoDidChange') + if repos = @controllerFor('repos').get('repos') + repos.removeObserver('firstObject', this, 'currentRepoDidChange') @_super.apply(this, arguments) currentRepoDidChange: -> - if repo = @controllerFor('repos').get('firstObject') + if repo = @controllerFor('repos').get('repos.firstObject') @controllerFor('repo').set('repo', repo) actions: diff --git a/app/templates/components/repo-show-tabs.hbs b/app/templates/components/repo-show-tabs.hbs new file mode 100644 index 00000000..670869db --- /dev/null +++ b/app/templates/components/repo-show-tabs.hbs @@ -0,0 +1,83 @@ +
+
    +
  • + {{#if repo.slug}} + {{#link-to "repo" repo current-when="repo.index"}} + Current + {{/link-to}} + {{/if}} +
  • +
  • + {{#if repo.slug}} + {{#link-to "branches" repo}} + Branches + {{/link-to}} + {{/if}} +
  • +
  • + {{#if repo.slug}} + {{#link-to "builds" repo}} + Build History + {{/link-to}} + {{/if}} +
  • +
  • + {{#if repo.slug}} + {{#link-to "pullRequests" repo}} + Pull Requests + {{/link-to}} + {{/if}} +
  • +
  • + {{#if build.id}} + {{#if repo.slug}} + {{#link-to "build" repo build}} + Build #{{build.number}} + {{/link-to}} + {{/if}} + {{/if}} +
  • +
  • + {{#if job.id}} + {{#if repo.slug}} + {{#link-to "job" repo job}} + Job #{{job.number}} + {{/link-to}} + {{/if}} + {{/if}} +
  • +
  • + {{#if repo.slug}} + {{#link-to "settings" repo}} + Settings + {{/link-to}} + {{/if}} +
  • +
  • + {{#if repo.slug}} + {{#link-to "requests" repo}} + Requests + {{/link-to}} + {{/if}} +
  • + {{#if config.caches_enabled}} +
  • + {{#if repo.slug}} + {{#link-to "caches" repo}} + Caches + {{/link-to}} + {{/if}} +
  • + {{/if}} + +
  • + {{#if request.id}} + {{#if repo.slug}} + {{#link-to "request" repo request}} + Request #{{request.id}} + {{/link-to}} + {{/if}} + {{/if}} +
  • +
+
diff --git a/app/templates/components/repos-list-item.hbs b/app/templates/components/repos-list-item.hbs new file mode 100644 index 00000000..8b7f4b97 --- /dev/null +++ b/app/templates/components/repos-list-item.hbs @@ -0,0 +1,35 @@ +
+

+ {{#if repo.slug}} + + {{#link-to "repo" repo class="slug"}}{{repo.slug}}{{/link-to}} + {{/if}} +

+ {{#with repo.lastBuildHash as lastBuild}} + {{#if repo.slug}} + {{#if lastBuild.id}} +

+ + {{#link-to "build" repo lastBuild.id + class="last_build"}}{{lastBuild.number}}{{/link-to}} +

+ {{/if}} + {{/if}} + {{/with}} + +

+ + Duration: + + {{format-duration repo.lastBuildDuration}} + +

+ +

+ + Finished: + + {{format-time repo.lastBuildFinishedAt}} + +

+
diff --git a/app/templates/components/repos-list.hbs b/app/templates/components/repos-list.hbs new file mode 100644 index 00000000..faf4b471 --- /dev/null +++ b/app/templates/components/repos-list.hbs @@ -0,0 +1,7 @@ +{{#each repos as |repo|}} + {{repos-list-item repo=repo selectedRepo=selectedRepo}} +{{else}} +

{{noReposMessage}}

+{{/each}} + + diff --git a/app/templates/repo.hbs b/app/templates/repo.hbs index 59131043..75e135c8 100644 --- a/app/templates/repo.hbs +++ b/app/templates/repo.hbs @@ -20,7 +20,7 @@
{{view 'repo-show-tools'}} - {{view 'repo-show-tabs'}} + {{repo-show-tabs repo=repo tab=tab}}
{{outlet}} diff --git a/app/templates/repos.hbs b/app/templates/repos.hbs index 7bf3f1d4..6ffa6c76 100644 --- a/app/templates/repos.hbs +++ b/app/templates/repos.hbs @@ -19,50 +19,7 @@ {{else}}