Compare commits

..

88 Commits

Author SHA1 Message Date
Curtis Ekstrom
1f5eb7f525 Revert to old container lookup behavior
This fixes a bug that affected only pro
2016-04-15 05:58:52 +02:00
lislis
812bf1a4f5 update org landing page, fix gigantic number 2016-04-14 17:00:55 +02:00
Justine
b9688352f4 Merge pull request #497 from jtangelder/ansi-contrast
Improve contrast of the highlight ansi colors
2016-04-14 10:24:40 -04:00
Lisa
2701581c12 Merge pull request #499 from travis-ci/lp-updates
Multiple smaller updates
2016-04-14 16:24:05 +02:00
Lisa
1ff47c63c4 Merge pull request #494 from travis-ci/modify_broadcast_copy
Shorten broadcast copy
2016-04-14 16:15:25 +02:00
lislis
dbedf34be1 add title attrs to team flags 2016-04-14 16:04:27 +02:00
lislis
5733d14ae4 fix layout issue with last synced message 2016-04-14 15:44:59 +02:00
lislis
4cb225d578 hide 'signup account' message if on enterprise 2016-04-14 15:29:30 +02:00
lislis
249deb0eff remove case sensitive notice from getting started 2016-04-14 15:24:12 +02:00
Piotr Sarnacki
446a9bc9b1 Merge pull request #498 from travis-ci/remove_moment_deprecation
Remove moment deprecation on builds page
2016-04-14 14:21:42 +02:00
Curtis Ekstrom
ee4b26a7d7
Remove moment deprecation on builds page
See https://github.com/moment/moment/issues/1407 for more details. All that was needed was to manually instantiate a new Date() object
2016-04-14 13:22:15 +02:00
Piotr Sarnacki
7601173aaa Merge pull request #495 from travis-ci/remove_2.2_deprecations
Upgrade Ember to 2.4.5 and remove all application deprecations
2016-04-14 13:09:53 +02:00
Curtis Ekstrom
e74b29c313
Remove getOwner polyfill 2016-04-14 12:25:24 +02:00
Jorik Tangelder
eb7a746549 Improve contrast of the highlight ansi colors
The contrast of the green, red and yellow highlight colors was too low.
2016-04-14 11:54:36 +02:00
Curtis Ekstrom
d85469c98e
Bump Ember to 2.4.5 2016-04-14 09:44:50 +02:00
Curtis Ekstrom
fe8a5a13e1
Remove Ember 2.3 deprecation warnings 2016-04-14 09:38:59 +02:00
Curtis Ekstrom
f8d05dea78
Remove all remaining app deprecations 2016-04-13 18:06:28 +02:00
Curtis Ekstrom
dc34ab38e7
Install polyfill addon until upgraded to Ember 2.3 2016-04-13 18:06:28 +02:00
Curtis Ekstrom
5c3d905424
Remove unnecessary deprecation handlers
These deprecations are no longer being triggered by the application (as
far as I can tell).
2016-04-13 18:05:52 +02:00
Curtis Ekstrom
f00a899e74
Shorten broadcast copy
This shortens the broadcast copy and makes more sense grammatically
2016-04-13 16:03:19 +02:00
Piotr Sarnacki
1c49615a2d Merge pull request #488 from fauxton/ce_upgrade_ember_cli
Upgrade Ember-CLI to 2.4.3
2016-04-13 11:05:00 +02:00
Piotr Sarnacki
d6c4f1beea Merge pull request #489 from travis-ci/remove-sponsors
Remove unused images
2016-04-13 11:03:44 +02:00
Piotr Sarnacki
f459fed279 Merge pull request #492 from travis-ci/adding-igor-carmen-maren-buck
Remove Buck for now
2016-04-13 11:01:17 +02:00
Curtis Ekstrom
8de13d1949
Simplify testem logic and remove console logging 2016-04-12 23:04:08 +02:00
Buck Doyle
35f9d00a7d Remove Buck for now 2016-04-12 18:25:40 +02:00
Buck Doyle
17f200081a Merge pull request #491 from travis-ci/adding-igor-carmen-maren-buck
Adding Igor, Carmen, Maren, and Buck
2016-04-12 17:58:52 +02:00
Buck Doyle
a17556baf6 Remove mistakenly-added line 2016-04-12 17:41:11 +02:00
Buck Doyle
575d78e38d Auto-merged master into adding-igor-carmen-maren-buck on deployment. 2016-04-12 17:02:56 +02:00
Justine Arreche
d6d1b7c738 update bucks gif 2016-04-12 10:54:50 -04:00
Curtis Ekstrom
3fa2fcea93 Auto-merged master into remove-sponsors on deployment. 2016-04-12 16:30:06 +02:00
Buck Doyle
67104fc1f1 Merge pull request #490 from travis-ci/speed_up_production_builds
Exclude emoji images from fingerprinting to speed up production builds
2016-04-12 16:23:06 +02:00
Justine Arreche
ebb451d70c adding in Maren and Buck 2016-04-12 09:54:22 -04:00
Buck Doyle and Curtis Ekstrom
e14003eb53
Exclude emoji images from fingerprinting to speed up production builds 2016-04-12 15:32:15 +02:00
Buck Doyle and Curtis Ekstrom
bc8efb758f Remove unused images 2016-04-12 15:12:46 +02:00
Curtis Ekstrom
8cd14b8952
Upgrade Ember-CLI to 2.4.3
This upgrades several Ember-CLI related packages, but does not change
our Ember/Ember-Data versions (those will require code changes that are
best handled in separate commits).

In addition, Testem can now be dynamically configured, meaning we no longer need
custom scripts to run as part of CI to set dynamic launcher configuration values
based on PR status.
2016-04-12 10:25:44 +02:00
Justine Arreche
f62143217e created dual nationality flag for Igor 2016-04-11 13:38:41 -04:00
Justine Arreche
2c56238de0 Added Igor and Carmen to the team page 2016-04-11 12:59:55 -04:00
lislis
286b59c8ed update user numbers 2016-04-11 12:51:51 -04:00
Sven Fuchs
c5f3cc4873 Merge branch 'te-dev' 2016-04-08 14:42:11 +02:00
Sven Fuchs
36e1f9b30e camelize channelPrefix option 2016-04-08 14:41:22 +02:00
Lisa
7035b3f763 Merge pull request #486 from travis-ci/lp-remove-org-landing-bg
Update org landing page
2016-04-06 15:54:24 +02:00
lislis
862b14bad3 only remove gce notice 2016-04-06 15:15:20 +02:00
lislis
38e45810e9 update org landing 2016-04-06 14:11:16 +02:00
Lisa
bf636b05f2 Merge pull request #483 from mithun/master
fix image format for POD
2016-04-06 12:44:41 +02:00
Lisa
fa000b80c9 Merge pull request #484 from travis-ci/te-dev
pass through Env.pusher.channelPrefix for enterprise
2016-04-06 12:42:31 +02:00
lislis
ae57f3903e make permissions dependend on array.length 2016-04-06 12:38:20 +02:00
Sven Fuchs
6505a058d6 pass through Env.pusher.channelPrefix for enterprise 2016-04-05 18:09:41 +02:00
Lisa
e3efe7d7fc Merge pull request #482 from travis-ci/lp-remove-builds-from-org-landing
Remove builds from org landing
2016-04-05 14:25:47 +02:00
Mithun Ayachit
703cdbd598 fix image format for POD
Some POD parsers recognize only lowercase format names.

For e.g., pod2markdown fails to generate a markdown file with the status image if the format is 'HTML'
2016-04-05 06:31:17 -05:00
lislis
217618ea71 remove build polling logic from home route 2016-04-05 12:29:32 +02:00
lislis
919857dfad update styles for pro pages 2016-04-05 12:23:58 +02:00
lislis
c74fa87016 remove recent builds 2016-04-05 12:03:58 +02:00
lislis
1cfb9d37be fix broadcast display 2016-04-05 11:57:25 +02:00
Piotr Sarnacki
cbd0c46e37 Ensure that permission functions work without a user 2016-03-22 12:43:41 +01:00
lislis
e66efc1cbc check for currentUser in permissions 2016-03-22 12:42:20 +01:00
Lisa P
71c55779a1 import util, coment out dashboard acceptance 2016-03-22 12:41:52 +01:00
Lisa P
fa62539a40 add more tests 2016-03-22 12:41:34 +01:00
Lisa P
26ca2875ae make it a util 2016-03-22 12:41:28 +01:00
Lisa P
65cf81169b add permissions mixin to dashboard row 2016-03-22 12:41:14 +01:00
Lisa P
2220334265 put permissions into a mixin 2016-03-22 12:37:05 +01:00
Konstantin Haase
3618488151 Update team.js 2016-03-22 11:03:31 +01:00
Piotr Sarnacki
ae8092ddc0 Make JSHint happy 2016-03-21 14:02:18 +01:00
lislis
d9c7ada46d fix typo in component 2016-03-21 12:34:37 +01:00
Lisa
e1500d76a1 Merge pull request #479 from travis-ci/MdA_typo_fix
fix typo "annually"
2016-03-16 11:40:42 +01:00
María de Antón
a940e176e7 fix typo "annually"
Thanks to Lachlan who reported the typo
2016-03-16 09:58:56 +01:00
Lisa
381bdc98b5 Merge pull request #477 from travis-ci/ja-fixing-logos
Fixed the full color logo downloads and links
2016-03-14 18:15:04 +01:00
Lisa
2c1c1a000e Merge pull request #476 from travis-ci/lp-decrease
decrease border
2016-03-14 17:47:19 +01:00
Justine Arreche
935092c8d7 Fixed the full color logo downloads and links 2016-03-14 12:44:18 -04:00
Lisa P
fdd07e83b4 try border 2016-03-14 17:24:19 +01:00
Lisa
f482c8be36 Merge pull request #475 from travis-ci/ja-adding-ana-team
Adding Ana to the team page as well as Mexico's flag
2016-03-14 17:04:16 +01:00
Justine Arreche
b859386fda Adding Ana to the team page as well as Mexico's flag 2016-03-14 10:35:07 -04:00
Lisa
07d241bdc2 Merge pull request #474 from travis-ci/lp-fix-env-var
some UI fixes after the update
2016-03-14 13:22:53 +01:00
Lisa P
e35e01747a fix user avatar/ status icon spacing 2016-03-14 13:09:32 +01:00
Lisa P
8c374cde93 fix env var display 2016-03-14 12:38:31 +01:00
Piotr Sarnacki
8fb479c3e0 Turn off API V3 2016-03-09 17:02:38 +01:00
Lisa
c65a88a23a Merge pull request #471 from travis-ci/lp-db-rows
Dashboard styles and cleanup
2016-03-09 11:53:59 +01:00
Lisa P
521fb30b42 fix caches 2016-03-09 11:30:45 +01:00
Lisa P
38398588bb adjust flag icon and notice 2016-03-09 11:19:55 +01:00
Lisa P
79b456e511 dashboard row styles
start row layouting

work on dropup

rearrange markup, make tofu toggle

bäm

use placeholder instead of variable, doh

add border

replace all the icons

adjust icons sizes

use icon classes instead of svg

more icons adjustments

more icon tweaks on caches

update coloring mixins

fix stateMap, update db coloring mixin

cleanup owner page

even more icon fun

popup tweaks

tweak api icon

change to new broadcast icon

change icon path

responsive tweaks

dashboard filter

hack around Safari's not quite standard flexbox behaviour

update row labels and icon spacing

rearrange links in sidebar

make last builds a component, tweak svg stroke-width

more icon tweaks

fiddle around with svg view props

rearrange links in branch-row

tweak request icon

add integration test

more tweaks
2016-03-09 11:05:51 +01:00
Piotr Sarnacki
c6ec02429d Log user out only if necessary on failed user data request 2016-03-08 13:50:49 +01:00
Piotr Sarnacki
fa7c275eaa Clear timers in update-times service
It's mostly relevant in tests, because service is destroyed when test
end and then we don't want to run any timers.
2016-03-08 13:50:49 +01:00
Piotr Sarnacki
bfb1b69374 Merge pull request #473 from travis-ci/acceptance-tests
Acceptance tests
2016-03-07 14:35:19 +01:00
Piotr Sarnacki
5dc64c4937 Fix findRecord to work without passing a snapshot
We use adapter.findRecord to fetch repo by slug. Using it this way was
broken with one of the ember-data releases. This commit brings back the
old behaviour.
2016-03-07 13:32:49 +01:00
Piotr Sarnacki
ab0a2af471 Fix various small issues with test suite 2016-03-07 13:28:51 +01:00
Piotr Sarnacki
7292d6f53e Update ember-cli-mirage to newest beta 2016-03-07 13:28:46 +01:00
Lisa P
de26ed2091 fix error handling for log 2016-03-07 13:27:48 +01:00
Lisa P
0dc7e0e045 Add job page acceptance test 2016-03-07 13:27:47 +01:00
Piotr Sarnacki
725d3b00da Add ember-cli-mirage addon 2016-03-07 13:27:44 +01:00
335 changed files with 4456 additions and 1965 deletions

View File

@ -1,5 +1,6 @@
{ {
"predef": [ "predef": [
"server",
"document", "document",
"window", "window",
"-Promise", "-Promise",

View File

@ -39,9 +39,6 @@ install:
- npm install - npm install
- bower install - bower install
before_script:
- ruby ci/prepare_testem.rb
script: script:
- ember try $EMBER_VERSION - ember try $EMBER_VERSION

View File

@ -65,3 +65,6 @@ DEPENDENCIES
sinatra sinatra
sinatra-contrib sinatra-contrib
travis-web! travis-web!
BUNDLED WITH
1.10.1

View File

@ -47,5 +47,11 @@ export default ActiveModelAdapter.extend({
} }
return this._super(...arguments); return this._super(...arguments);
},
// this can be removed once this PR is merged and live:
// https://github.com/emberjs/data/pull/4204
findRecord(store, type, id, snapshot) {
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'findRecord'), 'GET');
} }
}); });

View File

@ -54,5 +54,11 @@ export default RESTAdapter.extend({
pathForType: function(modelName, id) { pathForType: function(modelName, id) {
var underscored = Ember.String.underscore(modelName); var underscored = Ember.String.underscore(modelName);
return id ? underscored : Ember.String.pluralize(underscored); return id ? underscored : Ember.String.pluralize(underscored);
},
// this can be removed once this PR is merged and live:
// https://github.com/emberjs/data/pull/4204
findRecord(store, type, id, snapshot) {
return this.ajax(this.buildURL(type.modelName, id, snapshot, 'findRecord'), 'GET');
} }
}); });

View File

@ -19,12 +19,8 @@ var App = Ember.Application.extend(Ember.Evented, {
podModulePrefix: config.podModulePrefix, podModulePrefix: config.podModulePrefix,
Resolver: Resolver, Resolver: Resolver,
lookup() {
return this.__container__.lookup.apply(this.__container__, arguments);
},
flash(options) { flash(options) {
return Travis.lookup('controller:flash').loadFlashes([options]); return Ember.getOwner(Travis).lookup('controller:flash').loadFlashes([options]);
}, },
toggleSidebar() { toggleSidebar() {

View File

@ -1,23 +1,36 @@
import Ember from 'ember'; import Ember from 'ember';
import { githubCommit as githubCommitUrl } from 'travis/utils/urls'; import { githubCommit as githubCommitUrl } from 'travis/utils/urls';
import config from 'travis/config/environment'; import config from 'travis/config/environment';
import { hasAdminPermission, hasPushPermission } from 'travis/utils/permission';
export default Ember.Component.extend({ export default Ember.Component.extend({
tagName: 'li', tagName: 'li',
classNameBindings: ['repo.default_branch.last_build.state'], classNameBindings: ['repo.default_branch.last_build.state'],
classNames: ['dashboard-row', 'row-li'], classNames: ['rows', 'rows--dashboard'],
isLoading: false, isLoading: false,
isTriggering: false, isTriggering: false,
hasTriggered: false, hasTriggered: false,
dropupIsOpen: false,
urlGithubCommit: function() { urlGithubCommit: function() {
return githubCommitUrl(this.get('repo.slug'), this.get('repo.default_branch.last_build.commit.sha')); return githubCommitUrl(this.get('repo.slug'), this.get('repo.default_branch.last_build.commit.sha'));
}.property('repo'), }.property('repo'),
displayMenuTofu: function() {
return hasPushPermission(this.get('currentUser'), this.get('repo.id'));
},
displayActivateLink: function() {
return hasAdminPermission(this.get('currentUser'), this.get('repo.id'));
},
actions: { actions: {
tiggerBuild(branch) { tiggerBuild(branch) {
this.set('isTriggering', true); this.set('isTriggering', true);
return this.triggerBuild(); return this.triggerBuild();
},
openDropup() {
this.toggleProperty('dropupIsOpen');
} }
} }
}); });

View File

@ -2,6 +2,7 @@ import Ember from 'ember';
export default Ember.Component.extend({ export default Ember.Component.extend({
logBinding: 'job.log', logBinding: 'job.log',
classNames: ['job-log'],
didReceiveAttrs: function(options) { didReceiveAttrs: function(options) {
this._super(...arguments); this._super(...arguments);
@ -25,7 +26,10 @@ export default Ember.Component.extend({
}, },
setupLog(job) { setupLog(job) {
job.get('log').fetch(); this.set('error', false);
job.get('log').fetch().then(function() { }, () => {
this.set('error', true);
});
job.subscribe(); job.subscribe();
} }
}); });

View File

@ -1,10 +0,0 @@
import Ember from 'ember';
import { githubCommit as githubCommitUrl } from 'travis/utils/urls';
import TravisRoute from 'travis/routes/basic';
import config from 'travis/config/environment';
export default Ember.Component.extend({
tagName: 'li',
classNameBindings: ['repo.lastBuildState'],
classNames: ['landing-row', 'row-li']
});

View File

@ -0,0 +1,8 @@
import Ember from 'ember';
export default Ember.Component.extend({
tagName: 'li',
classNameBindings: ['build.state']
});

View File

@ -1,46 +1,3 @@
import Ember from 'ember'; import Ember from 'ember';
import config from 'travis/config/environment';
export default Ember.Component.extend({ export default Ember.Component.extend();
flashes: Ember.inject.service(),
canActivate: function() {
let user = this.get('user');
if(user) {
let permissions = user.get('pushPermissions'),
repoId = parseInt(this.get('repo.id'));
return permissions.contains(repoId);
}
}.property('user.pushPermissions.[]', 'repo'),
actions: {
activate: function() {
let apiEndpoint = config.apiEndpoint,
repoId = this.get('repo.id');
this.set('isActivating', true);
$.ajax(apiEndpoint + '/v3/repo/' + repoId + '/enable', {
headers: {
Authorization: 'token ' + this.get('auth').token()
},
method: 'POST'
}).then((response) => {
if(response.active) {
let pusher = this.get('pusher'),
repoId = this.get('repo.id');
pusher.subscribe('repo-' + repoId);
this.get('repo').set('active', true);
this.get('flashes').add('success', 'Repository has been successfully activated.');
}
this.set('isActivating', false);
}, () => {
this.set('isActivating', false);
this.get('flashes').add('error', 'There was an error while trying to activate the repository.');
});
}
}
});

View File

@ -1,5 +1,6 @@
import Ember from 'ember'; import Ember from 'ember';
import config from 'travis/config/environment'; import config from 'travis/config/environment';
import { hasPermission, hasPushPermission } from 'travis/utils/permission';
export default Ember.Component.extend({ export default Ember.Component.extend({
popup: Ember.inject.service(), popup: Ember.inject.service(),
@ -8,7 +9,7 @@ export default Ember.Component.extend({
isOpen: false, isOpen: false,
click(event) { click(event) {
if ($(event.target).is('a') && $(event.target).parents('.settings-dropdown').length) { if ($(event.target).is('a') && $(event.target).parents('.settings-dropdown').length) {
return this.closeMenu(); return this.closeMenu();
} }
}, },
@ -18,41 +19,20 @@ export default Ember.Component.extend({
}, },
actions: { actions: {
menu() { menu() {
return this.toggleProperty('isOpen'); return this.toggleProperty('isOpen');
} }
}, },
hasPermission: function() {
var permissions;
if (permissions = this.get('currentUser.permissions')) {
return permissions.contains(parseInt(this.get('repo.id')));
}
}.property('currentUser.permissions.length', 'repo.id'),
hasPushPermission: function() {
var permissions;
if (permissions = this.get('currentUser.pushPermissions')) {
return permissions.contains(parseInt(this.get('repo.id')));
}
}.property('currentUser.pushPermissions.length', 'repo.id'),
hasAdminPermission: function() {
var permissions;
if (permissions = this.get('currentUser.adminPermissions')) {
return permissions.contains(parseInt(this.get('repo.id')));
}
}.property('currentUser.adminPermissions.length', 'repo.id'),
displaySettingsLink: function() { displaySettingsLink: function() {
return this.get('hasPushPermission'); return hasPushPermission(this.get('currentUser'), this.get('repo.id'));
}.property('hasPushPermission'), }.property('currentUser.pushPermissions.length', 'repo'),
displayCachesLink: function() { displayCachesLink: function() {
return this.get('hasPushPermission') && config.endpoints.caches; return hasPushPermission(this.get('currentUser'), this.get('repo.id')) && config.endpoints.caches;
}.property('hasPushPermission'), }.property('currentUser.pushPermissions.length', 'repo'),
displayStatusImages: function() { displayStatusImages: function() {
return this.get('hasPermission'); return hasPermission(this.get('currentUser'), this.get('repo.id'));
}.property('hasPermission') }.property('currentUser.permissions.length', 'repo.id')
}); });

View File

@ -2,7 +2,7 @@ import Ember from 'ember';
export default Ember.Component.extend({ export default Ember.Component.extend({
tagName: 'span', tagName: 'span',
classNames: ['status-icon', 'icon'], classNames: ['request-icon', 'icon'],
classNameBindings: ['event', 'state'], classNameBindings: ['event', 'state'],
isPush: function() { isPush: function() {

View File

@ -3,7 +3,7 @@ import Ember from 'ember';
export default Ember.Component.extend({ export default Ember.Component.extend({
tagName: 'span', tagName: 'span',
classNames: ['avatar'], classNameBindings: ['small:avatar--small:avatar'],
userInitials: function() { userInitials: function() {
var name = this.get('name'); var name = this.get('name');

View File

@ -11,7 +11,7 @@ export default Ember.Controller.extend({
var user; var user;
if ((user = this.get('model')) && user.get('isSyncing') && !user.get('syncedAt')) { if ((user = this.get('model')) && user.get('isSyncing') && !user.get('syncedAt')) {
return Ember.run.scheduleOnce('routerTransitions', this, function() { return Ember.run.scheduleOnce('routerTransitions', this, function() {
return this.container.lookup('router:main').send('renderFirstSync'); return Ember.getOwner(this).lookup('router:main').send('renderFirstSync');
}); });
} }
}.observes('isSyncing', 'auth.currentUser') }.observes('isSyncing', 'auth.currentUser')

View File

@ -76,7 +76,7 @@ var Controller = Ember.Controller.extend({
possiblyRedirectToGettingStartedPage() { possiblyRedirectToGettingStartedPage() {
return Ember.run.scheduleOnce('routerTransitions', this, function() { return Ember.run.scheduleOnce('routerTransitions', this, function() {
if (this.get('tab') === 'owned' && this.get('isLoaded') && this.get('repos.length') === 0) { if (this.get('tab') === 'owned' && this.get('isLoaded') && this.get('repos.length') === 0) {
return this.container.lookup('router:main').send('redirectToGettingStarted'); return Ember.getOwner(this).lookup('router:main').send('redirectToGettingStarted');
} }
}); });
}, },

View File

@ -2,5 +2,6 @@ import { timeAgoInWords, safe } from 'travis/utils/helpers';
import Ember from "ember"; import Ember from "ember";
export default Ember.Helper.helper(function(params) { export default Ember.Helper.helper(function(params) {
return safe(moment(params[0]).format('MMMM D, YYYY H:mm:ss') || '-'); let date = new Date(params[0]);
return safe(moment(date).format('MMMM D, YYYY H:mm:ss') || '-');
}); });

View File

@ -2,17 +2,15 @@ import config from 'travis/config/environment';
import TravisPusher from 'travis/utils/pusher'; import TravisPusher from 'travis/utils/pusher';
var PusherInitializer, initialize; var PusherInitializer, initialize;
initialize = function(data) { initialize = function(applicationInstance) {
var application; const app = applicationInstance.application;
application = data.application;
if (config.pusher.key) { if (config.pusher.key) {
application.pusher = new TravisPusher(config.pusher, data.container.lookup('service:ajax')); app.pusher = new TravisPusher(config.pusher, applicationInstance.lookup('service:ajax'));
application.register('pusher:main', application.pusher, { app.register('pusher:main', app.pusher, {
instantiate: false instantiate: false
}); });
application.inject('route', 'pusher', 'pusher:main'); app.inject('route', 'pusher', 'pusher:main');
application.inject('component', 'pusher', 'pusher:main'); return app.pusher.store = applicationInstance.lookup('service:store');
return application.pusher.store = data.container.lookup('service:store');
} }
}; };

View File

@ -30,7 +30,7 @@ var Broadcast = Model.extend({
Broadcast.reopenClass({ Broadcast.reopenClass({
seen: function() { seen: function() {
var seenBroadcasts; var seenBroadcasts;
seenBroadcasts = Travis.lookup('service:storage').getItem('travis.seen_broadcasts'); seenBroadcasts = Ember.getOwner(Travis).lookup('service:storage').getItem('travis.seen_broadcasts');
if (seenBroadcasts != null) { if (seenBroadcasts != null) {
seenBroadcasts = JSON.parse(seenBroadcasts); seenBroadcasts = JSON.parse(seenBroadcasts);
} }

View File

@ -28,12 +28,14 @@ var Request = Ember.Object.extend({
return $.ajax({ return $.ajax({
url: this.redirectTo(xhr), url: this.redirectTo(xhr),
type: 'GET', type: 'GET',
success: this.handlers.text success: (body) => {
Ember.run(this, function() { this.handlers.text(body); });
}
}); });
} else if (this.isJson(xhr, body)) { } else if (this.isJson(xhr, body)) {
return this.handlers.json(body); return Ember.run(this, function() { this.handlers.json(body); });
} else { } else {
return this.handlers.text(body); return Ember.run(this, function() { this.handlers.text(body); });
} }
}, },
@ -44,6 +46,7 @@ var Request = Ember.Object.extend({
}, },
isJson(xhr, body) { isJson(xhr, body) {
// Firefox can't see the Content-Type header on the xhr response due to the wrong // Firefox can't see the Content-Type header on the xhr response due to the wrong
// status code 204. Should be some redirect code but that doesn't work with CORS. // status code 204. Should be some redirect code but that doesn't work with CORS.
var type = xhr.getResponseHeader('Content-Type') || ''; var type = xhr.getResponseHeader('Content-Type') || '';

View File

@ -14,7 +14,7 @@ var Router = Ember.Router.extend({
// we should probably think about a more general way to // we should probably think about a more general way to
// do this, location should not know about auth status // do this, location should not know about auth status
return Location.create({ return Location.create({
auth: this.container.lookup('service:auth') auth: Ember.getOwner(this).lookup('service:auth')
}); });
} }
}.property(), }.property(),

View File

@ -1,6 +1,7 @@
import TravisRoute from 'travis/routes/basic'; import TravisRoute from 'travis/routes/basic';
import config from 'travis/config/environment'; import config from 'travis/config/environment';
import BuildFaviconMixin from 'travis/mixins/build-favicon'; import BuildFaviconMixin from 'travis/mixins/build-favicon';
import Ember from 'ember';
export default TravisRoute.extend(BuildFaviconMixin, { export default TravisRoute.extend(BuildFaviconMixin, {
needsAuth: false, needsAuth: false,
@ -9,8 +10,13 @@ export default TravisRoute.extend(BuildFaviconMixin, {
this._super.apply(this, arguments); this._super.apply(this, arguments);
return this.get('auth').refreshUserData().then( () => { return this.get('auth').refreshUserData().then( () => {
this.setupPendo(); this.setupPendo();
}, () => { }, (xhr) => {
return this.get('auth').signOut(); // if xhr is not defined it means that scopes are not correct,
// so log the user out. Also log the user out if the response is 401
// or 403
if(!xhr || (xhr.status === 401 || xhr.status === 403)) {
return this.get('auth').signOut();
}
}); });
}, },
@ -94,7 +100,7 @@ export default TravisRoute.extend(BuildFaviconMixin, {
error(error) { error(error) {
var authController; var authController;
if (error === 'needs-auth') { if (error === 'needs-auth') {
authController = this.container.lookup('controller:auth'); authController = Ember.getOwner(this).lookup('controller:auth');
authController.set('redirected', true); authController.set('redirected', true);
return this.transitionTo('auth'); return this.transitionTo('auth');
} else { } else {

View File

@ -1,7 +1,8 @@
import TravisRoute from 'travis/routes/basic'; import TravisRoute from 'travis/routes/basic';
import Ember from 'ember';
export default TravisRoute.extend({ export default TravisRoute.extend({
setupController(controller) { setupController(controller) {
return this.container.lookup('controller:repos').activate('owned'); return Ember.getOwner(this).lookup('controller:repos').activate('owned');
} }
}); });

View File

@ -1,61 +1,13 @@
import BasicRoute from 'travis/routes/basic'; import BasicRoute from 'travis/routes/basic';
import config from 'travis/config/environment';
import limit from 'travis/utils/computed-limit';
import Ember from 'ember'; import Ember from 'ember';
export default BasicRoute.extend({ export default BasicRoute.extend({
init: function() {
var repos, store;
store = this.store;
repos = Ember.ArrayProxy.extend({
isLoadedBinding: 'repos.isLoaded',
repos: [],
sorted: Ember.computed.sort('repos', 'sortedReposKeys'),
content: limit('sorted', 'limit'),
sortedReposKeys: ['sortOrderForLandingPage:desc'],
limit: 3
}).create();
this.set('repos', repos);
this.loadMoreRepos();
return this._super.apply(this, arguments);
},
loadMoreRepos() {
return this.store.findAll('build').then( (builds) => {
var repoIds, repos;
repoIds = builds.mapBy('data.repo').uniq();
repos = this.get('repos.repos');
return this.store.query('repo', {
ids: repoIds
}).then(function(reposFromRequest) {
return reposFromRequest.toArray().forEach(function(repo) {
if (!repos.contains(repo)) {
return repos.pushObject(repo);
}
});
});
});
},
activate() { activate() {
var interval;
this._super.apply(this, arguments);
interval = setInterval(() => {
return this.loadMoreRepos();
}, 60000);
this.set('interval', interval);
return this.controllerFor('top').set('landingPage', true); return this.controllerFor('top').set('landingPage', true);
}, },
deactivate() { deactivate() {
var interval;
this._super.apply(this, arguments);
if (interval = this.get('interval')) {
clearInterval(interval);
}
return this.controllerFor('top').set('landingPage', false); return this.controllerFor('top').set('landingPage', false);
}, },

View File

@ -17,7 +17,7 @@ export default TravisRoute.extend(ScrollResetMixin, {
}, },
setupController(controller, model) { setupController(controller, model) {
this.container.lookup('controller:repos').activate('owned'); this.controllerFor('repos').activate('owned');
if (model && !model.get) { if (model && !model.get) {
model = this.get('store').find('repo', model.id); model = this.get('store').find('repo', model.id);
} }

View File

@ -4,8 +4,7 @@ import Config from 'travis/config/environment';
export default TravisRoute.extend({ export default TravisRoute.extend({
setupController(controller, model) { setupController(controller, model) {
this._super.apply(this, arguments); this._super.apply(this, arguments);
this.controllerFor('repo').activate('current'); return this.controllerFor('repo').activate('current');
controller.set('repo', model);
}, },
deactivate() { deactivate() {

View File

@ -3,7 +3,7 @@ import TravisRoute from 'travis/routes/basic';
export default TravisRoute.extend({ export default TravisRoute.extend({
setupController: function() { setupController: function() {
$('body').attr('id', 'simple'); $('body').attr('id', 'simple');
this.container.lookup('controller:repos').activate('owned'); this.controllerFor('repos').activate('owned');
return this._super.apply(this, arguments); return this._super.apply(this, arguments);
}, },
renderTemplate: function() { renderTemplate: function() {

View File

@ -29,7 +29,7 @@ export default TravisRoute.extend({
image: 'fritz' image: 'fritz'
}, { }, {
name: 'Konstantin Haase', name: 'Konstantin Haase',
title: 'Haase of Pain', title: 'Haase of Engineering',
handle: 'konstantinhaase', handle: 'konstantinhaase',
nationality: 'germany', nationality: 'germany',
country: 'switzerland', country: 'switzerland',
@ -172,6 +172,33 @@ export default TravisRoute.extend({
nationality: 'italy', nationality: 'italy',
country: 'austria', country: 'austria',
image: 'laura' image: 'laura'
}, {
name: 'Maren Brechler',
title: 'Number Juggler',
nationality: 'germany',
country: 'germany',
image: 'maren'
}, {
name: 'Ana Rosas',
title: 'Software Baker',
handle: 'ana_rosas',
nationality: 'mexico',
country: 'mexico',
image: 'ana'
}, {
name: 'Igor Wiedler',
title: 'webmaster',
handle: 'igorwhilefalse',
nationality: 'ukswitzerland',
country: 'germany',
image: 'igor'
}, {
name: 'Carmen Andoh',
title: 'SRE- Snazzy Rsync Empress',
handle: 'caelestisca',
nationality: 'usa',
country: 'usa',
image: 'carmen'
} }
]; ];
} }

View File

@ -16,6 +16,14 @@ var Serializer = V2FallbackSerializer.extend({
return result; return result;
}, },
normalizeSingleResponse: function(store, primaryModelClass, payload, id, requestType) {
if (payload.commit) {
payload.build.commit = payload.commit;
delete payload.build.commit_id;
}
return this._super(...arguments);
},
normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) { normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) {
var result; var result;
if (payload.commits) { if (payload.commits) {

View File

@ -25,6 +25,14 @@ export default V2FallbackSerializer.extend({
return this._super(modelClass, resourceHash); return this._super(modelClass, resourceHash);
}, },
normalizeSingleResponse: function(store, primaryModelClass, payload, id, requestType) {
if (payload.commit) {
payload.job.commit = payload.commit;
delete payload.job.commit_id;
}
return this._super(...arguments);
},
normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) { normalizeArrayResponse: function(store, primaryModelClass, payload, id, requestType) {
var result; var result;
if (payload.commits) { if (payload.commits) {

View File

@ -64,7 +64,7 @@ export default Ember.Service.extend({
success = options.success || (function() {}); success = options.success || (function() {});
options.success = (data, status, xhr) => { options.success = (data, status, xhr) => {
if (data != null ? data.flash : void 0) { if (data != null ? data.flash : void 0) {
Travis.lookup('controller:flash').loadFlashes(data.flash); Ember.getOwner(Travis).lookup('controller:flash').loadFlashes(data.flash);
} }
if (data != null) { if (data != null) {
delete data.flash; delete data.flash;
@ -75,7 +75,7 @@ export default Ember.Service.extend({
options.error = (data, status, xhr) => { options.error = (data, status, xhr) => {
console.log("[ERROR] API responded with an error (" + status + "): " + (JSON.stringify(data))); console.log("[ERROR] API responded with an error (" + status + "): " + (JSON.stringify(data)));
if (data != null ? data.flash : void 0) { if (data != null ? data.flash : void 0) {
Travis.lookup('controller:flash').pushObject(data.flash); Ember.getOwner(Travis).lookup('controller:flash').pushObject(data.flash);
} }
if (data != null) { if (data != null) {
delete data.flash; delete data.flash;

View File

@ -140,7 +140,7 @@ export default Ember.Service.extend({
data.user.token = user.token; data.user.token = user.token;
this.storeData(data, this.get('sessionStorage')); this.storeData(data, this.get('sessionStorage'));
this.storeData(data, this.get('storage')); this.storeData(data, this.get('storage'));
return Travis.trigger('user:refreshed', data.user); Travis.trigger('user:refreshed', data.user);
} }
} else { } else {
return Ember.RSVP.Promise.reject(); return Ember.RSVP.Promise.reject();
@ -214,7 +214,7 @@ export default Ember.Service.extend({
// as a direct response to either manual sign in or autoSignIn (right now // as a direct response to either manual sign in or autoSignIn (right now
// we treat both cases behave the same in terms of sent events which I think // we treat both cases behave the same in terms of sent events which I think
// makes it more complicated than it should be). // makes it more complicated than it should be).
router = this.container.lookup('router:main'); router = Ember.getOwner(this).lookup('router:main');
try { try {
return router.send(name); return router.send(name);
} catch (error1) { } catch (error1) {

View File

@ -48,9 +48,5 @@ export default Ember.Service.extend({
close(msg) { close(msg) {
return this.get('flashes').removeObject(msg); return this.get('flashes').removeObject(msg);
},
add(type, message) {
this.loadFlashes([ { [type]: message } ]);
} }
}); });

View File

@ -3,6 +3,7 @@
@import "app/legacy/_grid"; @import "app/legacy/_grid";
@import "app/vars"; @import "app/vars";
@import "app/data";
@import "app/mixins"; @import "app/mixins";
@import "app/base"; @import "app/base";
@import "app/userlike"; @import "app/userlike";
@ -26,11 +27,11 @@
@import "app/modules/build-header"; @import "app/modules/build-header";
@import "app/modules/avatar"; @import "app/modules/avatar";
@import "app/modules/popup"; @import "app/modules/popup";
@import "app/modules/lastbuild";
@import "app/components/sync-button"; @import "app/modules/sync-button";
@import "app/components/loading-indicator"; @import "app/modules/loading-indicator";
@import "app/components/build-tile"; @import "app/modules/build-tile";
@import "app/components/status-icon"; @import "app/modules/status-icon";
@import "app/animation/tractor"; @import "app/animation/tractor";

View File

@ -18,6 +18,9 @@ body
line-height: 1.45 line-height: 1.45
font-family: $font-family-sans-serif font-family: $font-family-sans-serif
h1, h2, h3, h4, h5, h6
font-weight: $font-weight-normal
img img
max-width: 100% max-width: 100%
height: auto height: auto
@ -63,9 +66,8 @@ a
text-decoration: underline text-decoration: underline
.small-title .small-title
font-size: 20px font-size: 18px
color: $oxide-blue color: $oxide-blue
font-weight: 400
.blank-list .blank-list
@include resetul @include resetul

38
app/styles/app/data.scss Normal file
View File

@ -0,0 +1,38 @@
$stateMap: (
passed: (
color: $turf-green,
color-bg: $seed-green
),
failed: (
color: $brick-red,
color-bg: $quartz-red
),
errored: (
color: $brick-red,
color-bg: $quartz-red
),
canceled: (
color: $cement-grey,
color-bg: $pebble-grey
),
created: (
color: $canary-yellow,
color-bg: $dozer-yellow
),
started: (
color: $canary-yellow,
color-bg: $dozer-yellow
),
booting: (
color: $canary-yellow,
color-bg: $dozer-yellow
),
queued: (
color: $canary-yellow,
color-bg: $dozer-yellow
),
received: (
color: $canary-yellow,
color-bg: $dozer-yellow
)
);

View File

@ -3,7 +3,7 @@
height: $top-height height: $top-height
width: 40px width: 40px
margin-left: 1em margin-left: 1em
line-height: $top-height line-height: 2.5
cursor: pointer cursor: pointer
vertical-align: middle vertical-align: middle
@media #{$medium-up} @media #{$medium-up}
@ -46,7 +46,7 @@
font-size: .9em font-size: .9em
word-wrap: break-word word-wrap: break-word
a:not(.icon-close) a:not(.icon-close)
display: block
line-height: 1.45 line-height: 1.45
text-decoration: underline text-decoration: underline
@ -57,15 +57,15 @@
height: auto height: auto
.icon-close .icon-close
@extend %icon-line-cross
position: absolute position: absolute
bottom: 0 bottom: 0
right: 0 right: 0
display: inline-block display: inline-block
width: 1.2em width: 1em
height: 1.2em height: 1em
background: background-repeat: no-repeat
image: inline-image('line-icons/icon-failed.svg') cursor: pointer
repeat: no-repeat
@media #{$medium-up} @media #{$medium-up}
position: absolute position: absolute
@ -73,7 +73,7 @@
left: 145px left: 145px
width: 27em width: 27em
height: auto height: auto
margin-left: -0.7em margin-left: -0.4em
.centered & .centered &
left: 133px left: 133px
&:after &:after
@ -94,61 +94,33 @@
&.announcement &.announcement
background-color: $turf-green background-color: $turf-green
.icon-broadcast .icon-broadcast
display: inline-block display: inline-block
width: 1.3em width: 16px
height: 2em height: 16px
vertical-align: middle vertical-align: middle
svg svg
overflow: visible overflow: visible
.tower-path .path
fill: #AEAEAE stroke: $cement-grey
.radio-wave--right, fill: none
.radio-wave--left
display: none
&:hover, &:hover,
&.is-open &.is-open
.tower-path .path
fill: #818181 stroke: $asphalt-grey
&.warning &.warning
.tower-path .path
fill: #DB4141 stroke: $brick-red
&:hover, &:hover,
&.is-open &.is-open
.tower-path .path
fill: #BA1717 stroke: $brick-red
&.announcement &.announcement
.tower-path .path
fill: #3CA85B stroke: $turf-green
&:hover, &:hover,
&.is-open &.is-open
.tower-path .path
fill: #238C3E stroke: $turf-green
&.announcement,
&.warning
.radio-wave--right,
.radio-wave--left
display: block
.radio-wave--right
.tower-path
transform-origin: left center
animation: pulsating-right 1.5s linear infinite
.radio-wave--left
.tower-path
transform-origin: right center
animation: pulsating-left 1.5s linear infinite
// @keyframes pulsating-right
// 40%
// transform: translateX(1px) scale(1.1)
//@keyframes pulsating-left
// 40%
// transform: translateX(-1px) scale(1.1)

View File

@ -20,33 +20,25 @@
list-style: none list-style: none
.cache-item .cache-item
border: 1px solid $cream-dark border: 1px solid rgba($cement-grey, 0.2)
margin-bottom: 5px margin-bottom: 5px
font-size: 15px font-size: 15px
padding: 0 1em padding: 0 1em
.status-icon
width: 1.5em
height: 1.5em
vertical-align: middle
.icon-scale
width: 1.2em
height: 1.2em
vertical-align: middle
margin-right: .3em
&:hover, &:hover,
&:active &:active
background-color: #F5F5F5 background-color: $pebble-grey
@media #{$medium-up} @media #{$medium-up}
display: flex display: flex
justify-content: space-between justify-content: space-between
flex-flow: row wrap flex-flow: row nowrap
align-items: center align-items: center
padding: .3em 0 padding: .3em 0
white-space: nowrap white-space: nowrap
.row-item:first-of-type .row-item:first-of-type
flex: 1 0 30% flex: 1 0 30%
padding-left: 1em padding-left: 1em
overflow: hidden
.row-item:nth-of-type(2) .row-item:nth-of-type(2)
flex: 1 0 30% flex: 1 0 30%
.row-item:nth-of-type(3) .row-item:nth-of-type(3)

View File

@ -2,6 +2,9 @@
list-style: none list-style: none
padding: 0 padding: 0
.dashboard .centered
@media #{$small-only}
padding: 0 1em
.dashboard-header .dashboard-header
width: 100% width: 100%
@ -26,3 +29,83 @@
padding: 2rem 0 padding: 2rem 0
font-size: 20px font-size: 20px
color: $cement-grey color: $cement-grey
.dash-star
&:hover,
&:active
svg path
stroke-width: 2px
&.is-starred
svg path
stroke: $dozer-yellow
fill: $canary-yellow
.dash-header
order: 2
flex: 0 0 20%
.dash-head
flex: 0 0 2%
display: flex
padding: 0 1em
margin-bottom: 1em
justify-content: space-between
align-items: flex-end
@media #{$medium-up}
flex: 0 0 3em
display: block
margin-bottom: 0
height: 55px
border-right: 1px solid rgba($asphalt-grey, .2)
.dash-body
flex-grow: 1
position: relative
@media #{$medium-up}
padding: 0 1.5em 0
.dash-aside
@media #{$medium-up}
position: absolute
width: 100%
bottom: 0
overflow: hidden
.dash-main
@media #{$small-only}
padding: 0 1em
@media #{$medium-up}
display: flex
flex-flow: row wrap
align-items: center
justify-content: space-between
height: 80px
.dash-default
order: 3
flex: 0 0 20%
@media #{$small-only}
margin-top: 2em
.dash-menu
order: 5
flex: 0 0 3%
.dash-last-build
display: flex
order: 4
flex: 0 0 55%
flex-flow: row wrap
justify-content: space-between
@media #{$small-only}
margin-top: 2em
@media #{$medium-up}
align-items: center
padding-right: 3em
> div
flex: 0 0 33%

View File

@ -23,15 +23,15 @@
.jobs-item .jobs-item
border: 1px solid $cream-dark border: 1px solid $cream-dark
margin-bottom: 5px margin-bottom: 5px
@include colorJobs($turf-green, 'passed', 6px, $seed-green) @include colorJobs($turf-green, 'passed', 3px, $seed-green)
@include colorJobs($brick-red, 'failed', 6px, $quartz-red) @include colorJobs($brick-red, 'failed', 3px, $quartz-red)
@include colorJobs($brick-red, 'errored', 6px, $quartz-red) @include colorJobs($brick-red, 'errored', 3px, $quartz-red)
@include colorJobs($cement-grey, 'canceled', 6px, $pebble-grey) @include colorJobs($cement-grey, 'canceled', 3px, $pebble-grey)
@include colorJobs($canary-yellow, 'started', 6px, $haze-yellow, true) @include colorJobs($canary-yellow, 'started', 3px, $haze-yellow, true)
@include colorJobs($canary-yellow, 'queued', 6px, $haze-yellow, true) @include colorJobs($canary-yellow, 'queued', 3px, $haze-yellow, true)
@include colorJobs($canary-yellow, 'booting', 6px, $haze-yellow, true) @include colorJobs($canary-yellow, 'booting', 3px, $haze-yellow, true)
@include colorJobs($canary-yellow, 'received', 6px, $haze-yellow, true) @include colorJobs($canary-yellow, 'received', 3px, $haze-yellow, true)
@include colorJobs($canary-yellow, 'created', 6px, $haze-yellow, true) @include colorJobs($canary-yellow, 'created', 3px, $haze-yellow, true)
@include colorFadeOut('passed', $seed-green) @include colorFadeOut('passed', $seed-green)
@include colorFadeOut('failed', $quartz-red) @include colorFadeOut('failed', $quartz-red)
@ -52,7 +52,6 @@
justify-content: space-between justify-content: space-between
align-items: center align-items: center
height: 34px height: 34px
padding-left: 0.5em
.section-title .section-title
font-size: 16px font-size: 16px
@ -65,40 +64,21 @@
@media #{$medium-up} @media #{$medium-up}
flex: 0 0 2em flex: 0 0 2em
&.started,
&.booting,
&.received,
&.created
line-height: 3
.icon
width: 24px
height: 24px
vertical-align: middle
.job-number .job-number
display: inline-block display: inline-block
@media #{$medium-up} @media #{$medium-up}
flex: 0 0 7em flex: 0 0 7em
padding-right: 1em padding-right: 1em
border-right: 1px solid $cream-dark border-right: 1px solid $cream-dark
.icon-hash
width: 20px
height: 20px
vertical-align: middle
@extend %icon
@extend %icon-line-hash
.job-os .job-os
position: relative position: relative
pointer-events: none pointer-events: none
.icon .icon
width: 16px width: 18px
height: 20px height: 20px
vertical-align: middle vertical-align: middle
padding-left: 1.5em padding-left: 1.5em
background:
size: auto 18px
repeat: no-repeat
@media #{$medium-up} @media #{$medium-up}
flex: 0 0 4em flex: 0 0 4em
text-align: center text-align: center
@ -127,11 +107,8 @@
@include fadeOut(right, -90deg, white) @include fadeOut(right, -90deg, white)
.icon-lang .icon-lang
width: 16px
height: 13px
margin-right: .3em margin-right: .3em
vertical-align: middle @extend .icon
@extend %icon
@extend %icon-line-language @extend %icon-line-language
.job-env .job-env
@ -149,7 +126,6 @@
width: 14px width: 14px
height: 14px height: 14px
margin-right: .3em margin-right: .3em
vertical-align: middle
@extend %icon @extend %icon
@extend %icon-line-environment @extend %icon-line-environment

View File

@ -15,10 +15,10 @@
padding: 0.1em 0.5em 0.1em 1.5em padding: 0.1em 0.5em 0.1em 1.5em
cursor: pointer cursor: pointer
background: background:
color: #777777 color: $cement-grey
repeat: no-repeat repeat: no-repeat
size: auto 12px size: auto 12px
position: 6px 4px position: 6px 5px
border-radius: 2px border-radius: 2px
color: $pebble-grey color: $pebble-grey
@extend %icon-arrow-down @extend %icon-arrow-down

View File

@ -15,10 +15,6 @@
.owner-handle .owner-handle
margin: 0 margin: 0
font-size: $font-size-ml font-size: $font-size-ml
.icon
width: 1.1em
height: 1.2em
vertical-align: middle
a:hover a:hover
text-decoration: underline text-decoration: underline
img img

View File

@ -133,9 +133,6 @@ p.profile-user-last
display: inline-block display: inline-block
padding: .2em .2em .2em .5em padding: .2em .2em .2em .5em
height: 28px height: 28px
.icon
width: 14px
height: 14px
.profile-hooklist .sync-spinner .profile-hooklist .sync-spinner
display: inline !important display: inline !important
@ -219,23 +216,23 @@ p.profile-user-last
.icon-eye .icon-eye
vertical-align: middle vertical-align: middle
path path
fill: #B6B7B9 fill: $cement-grey
circle circle
stroke: #B6B7B9 stroke: $cement-grey
fill: #fff fill: #fff
&:hover &:hover
path path
fill: #666666 fill: $asphalt-grey
circle circle
stroke: #666666 stroke: $asphalt-grey
fill: #fff fill: #fff
&.is-visible &.is-visible
.icon-eye .icon-eye
circle circle
fill: #B6B7B9 fill: $cement-grey
&:hover &:hover
circle circle
fill: #666666 fill: $asphalt-grey
#unadministerable-hooks #unadministerable-hooks
p p

View File

@ -24,6 +24,7 @@
display: flex display: flex
flex-flow: row wrap flex-flow: row wrap
align-items: baseline align-items: baseline
padding-left: 0.4em
.row-branch .row-branch
flex: 1 0 18% flex: 1 0 18%

View File

@ -29,13 +29,6 @@
font-weight: $font-weight-bold font-weight: $font-weight-bold
margin-right: .5em margin-right: .5em
.status-icon
width: 1.3em
height: 1.3em
vertical-align: middle
&.api
width: 1.2em !important
a:hover, a:hover,
a:active a:active
text-decoration: underline text-decoration: underline

View File

@ -1,11 +1,10 @@
.settings .settings
padding-top: .8em padding-top: .8em
.settings-section .settings-section
padding: 0 0 1em padding: 0 0 1em
margin-bottom: 3em margin-bottom: 3em
border-bottom: 2px solid #f2f3ef border-bottom: 2px solid $pebble-grey
&:last-of-type &:last-of-type
border-bottom: none border-bottom: none
.small-title .small-title
@ -53,10 +52,8 @@
box-shadow: none box-shadow: none
%settings-row %settings-row
border-radius: 4px border-radius: 2px
background-color: #F6F5F5 background-color: $pebble-grey
@media #{$medium-up}
height: 36px
.settings-envvar .settings-envvar
@extend %settings-row @extend %settings-row
@ -79,10 +76,10 @@
vertical-align: middle vertical-align: middle
overflow: hidden overflow: hidden
white-space: nowrap white-space: nowrap
color: #8e8f8e color: $asphalt-grey
&:after &:after
content: "" content: ""
@include fadeOut(right, -90deg, #F6F5F5) @include fadeOut(right, -90deg, $pebble-grey)
.ssh-key-name .ssh-key-name
@extend %settings-name-section @extend %settings-name-section
@ -104,7 +101,7 @@
display: inline-block display: inline-block
vertical-align: middle vertical-align: middle
overflow: hidden overflow: hidden
color: #8e8f8e color: $asphalt-grey
.ssh-key-value .ssh-key-value
@extend %settings-value-section @extend %settings-value-section
@ -123,16 +120,16 @@
input input
display: inline-block display: inline-block
width: 100% width: 100%
padding: 0.6em 0.5em 0.7em 1.1em padding: 0.6em 0.5em 0.7em 2.5em
border-radius: 4px border-radius: 2px
border: none border: none
background-color: #eeedec background-color: lighten($cement-grey, 20)
color: #8e8f8e color: $asphalt-grey
@extend .icon-lock @extend %icon-line-lock
background: background:
size: 14px size: 16px
repeat: no-repeat repeat: no-repeat
position: 0.8em 0.7em position: 0.5em 0.5em
.is-public & .is-public &
input input
background-image: none; background-image: none;
@ -146,12 +143,6 @@
width: 24% width: 24%
vertical-align: middle vertical-align: middle
text-align: center text-align: center
.icon-delete
@extend %icon
@extend .icon-delete
width: 1.1em
height: 1.6em
background-position: 0 2px
&:hover &:hover
.icon-delete .icon-delete
@extend .icon-delete-hover @extend .icon-delete-hover
@ -173,11 +164,7 @@
.icon-delete .icon-delete
margin: .2em auto 0 margin: .2em auto 0
.icon-delete-disabled .icon-delete-disabled
@extend %icon @extend .icon
@extend .icon-delete-disabled @extend .icon-delete-disabled
display: block display: block
width: 1.1em
height: 1.4em
margin: .2em auto 0 margin: .2em auto 0

View File

@ -46,10 +46,15 @@
width: 22% width: 22%
a:hover a:hover
text-decoration: underline text-decoration: underline
.icon
width: 1.3em .icon-clock,
height: 1.4em .icon-calendar,
vertical-align: middle .icon-hash
width: 14px
height: 14px
.status-icon
width: 12px
height: 16px
.tabnav--sidebar .tabnav--sidebar
font-size: 14px font-size: 14px
@ -75,7 +80,8 @@
margin-right: 0.8em margin-right: 0.8em
@media (min-width: #{lower-bound($large-range)}) @media (min-width: #{lower-bound($large-range)})
ul ul
height: 2em height: 2em
margin-bottom: -5px
@media (max-width: #{lower-bound($large-range)}) @media (max-width: #{lower-bound($large-range)})
li li
display: block !important display: block !important

View File

@ -36,15 +36,6 @@
bottom: 0 bottom: 0
margin: auto margin: auto
%inline-block
display: inline-block
%section-title
font-size: $font-size-sm
color: $cement-grey
font-weight: 400
=linkStyle =linkStyle
a a
text-decoration: none text-decoration: none
@ -67,9 +58,34 @@
// @todo simplyfiy coloring mixins // @todo simplyfiy coloring mixins
=colorStatusIcons($color, $status) =colorStatusIcons($color, $status)
.status-icon.#{$status} .status-icon.#{$status},
.request-icon.#{$status}
svg * svg *
fill: $color stroke: $color
=rowBorder
border: 1px solid lighten($cement-grey, 20)
border-radius: 2px
=rowColor($status, $color, $color-bg: $color)
&.#{$status}
.color
color: $color
a
color: $color
text-decoration: none
&:hover,
&:active
border-bottom: 1px solid $color
.status-icon g > *,
.request-icon g > *
stroke: $color-bg
.background
background-color: $color-bg
=rowBg($width, $status, $color)
&.#{$status}
background: linear-gradient(to right, $color 0%, $color $width, white $width, white 100%) no-repeat
=statusColors($color, $status, $width, $color2: $color, $building:false) =statusColors($color, $status, $width, $color2: $color, $building:false)
&.#{$status} &.#{$status}
@ -80,9 +96,9 @@
color: $color color: $color
&:hover &:hover
border-color: $color border-color: $color
.row-name .status-icon g > *, .status-icon g > *,
.row-request .icon-request g > * .request-icon g > *
fill: $color stroke: $color
.build a, .build a,
.repo-title a .repo-title a
@ -119,4 +135,7 @@
@include colorStatusIcons($color, $status) @include colorStatusIcons($color, $status)
&:hover, &:hover,
&:active &:active
@include colorBg($bg-start, $status, $width, $hover) background-color: $hover
border-left: $width solid $color
a
margin-left: - $width + 1px

View File

@ -42,18 +42,11 @@
margin-left: 1em margin-left: 1em
top: -3px top: -3px
.commit-author .avatar--small
.avatar @extend .avatar
width: 20px width: 18px
height: 20px height: 18px
margin-right: .3rem
.pseudo-avatar:after .pseudo-avatar:after
font-size: .7em font-size: 9px
line-height: 1.7 line-height: 16px
.row-committer
.avatar
width: 18px
height: 18px
.pseudo-avatar:after
font-size: .7em
line-height: 1.6

View File

@ -3,15 +3,15 @@
border: 1px solid $cream-dark border: 1px solid $cream-dark
clear: both clear: both
@include colorRows($turf-green, 'passed', 12px) @include colorRows($turf-green, 'passed', 10px)
@include colorRows($brick-red, 'failed', 12px) @include colorRows($brick-red, 'failed', 10px)
@include colorRows($brick-red, 'errored', 12px) @include colorRows($brick-red, 'errored', 10px)
@include colorRows($cement-grey, 'canceled', 12px) @include colorRows($cement-grey, 'canceled', 10px)
@include colorRows($canary-yellow, 'started', 12px, true, $dozer-yellow) @include colorRows($canary-yellow, 'started', 10px, true, $dozer-yellow)
@include colorRows($canary-yellow, 'queued', 12px, true, $dozer-yellow) @include colorRows($canary-yellow, 'queued', 10px, true, $dozer-yellow)
@include colorRows($canary-yellow, 'booting', 12px, true, $dozer-yellow) @include colorRows($canary-yellow, 'booting', 10px, true, $dozer-yellow)
@include colorRows($canary-yellow, 'received', 12px, true, $dozer-yellow) @include colorRows($canary-yellow, 'received', 10px, true, $dozer-yellow)
@include colorRows($canary-yellow, 'created', 12px, true, $dozer-yellow) @include colorRows($canary-yellow, 'created', 10px, true, $dozer-yellow)
@media #{$medium-up} @media #{$medium-up}
display: flex display: flex
@ -30,7 +30,7 @@
font-size: 16px font-size: 16px
@media #{$medium-up} @media #{$medium-up}
flex: 1 1 65% flex: 1 1 65%
padding-left: 2.5rem padding-left: 2.2rem
.build-tools .build-tools
padding: 1rem 0 1rem 3rem padding: 1rem 0 1rem 3rem
@ -52,14 +52,10 @@
font-weight: $font-weight-normal font-weight: $font-weight-normal
font-size: 16px font-size: 16px
.status-icon
width: 1.7rem
height: 1.8rem
vertical-align: middle
.build-title .build-title
.status-icon .status-icon
margin-left: -2rem margin-left: -1.9rem
margin-right: 0.7rem
.commit-info .commit-info
font-size: 15px font-size: 15px

View File

@ -1,13 +1,12 @@
@mixin buildTileColors($color, $bg, $status, $extra-hover: $color) @mixin buildTileColors($color, $bg, $status, $extra-hover: $color)
> .#{$status} > .#{$status}
background-color: $bg background-color: $bg
.icon-request g > *,
.status-icon g > * .status-icon g > *
fill: $color stroke: $color
&:hover &:hover
background-color: $extra-hover background-color: $extra-hover
.status-icon.#{$status} g > * .status-icon g > *
fill: white stroke: white
.status-icon .circle .status-icon .circle
border-color: white border-color: white
border-width: 2px border-width: 2px
@ -33,8 +32,8 @@
right: 0 right: 0
bottom: 0 bottom: 0
left: 0 left: 0
width: 2.5rem !important width: 18px
height: 2.5rem !important height: 18px
margin: auto !important margin: auto !important
background-color: transparent background-color: transparent
transition: top 200ms ease transition: top 200ms ease

View File

@ -124,8 +124,9 @@ $button-border-color: #d4d4d4
overflow: hidden overflow: hidden
width: 28px width: 28px
height: 28px height: 28px
border: solid 1px #E4E6E6 border: solid 1px rgba($cement-grey, 0.2)
border-radius: 50% border-radius: 50%
cursor: pointer
&:hover &:hover
border-color: $oxide-blue border-color: $oxide-blue
@ -140,8 +141,9 @@ $button-border-color: #d4d4d4
@extend %circle-button @extend %circle-button
@extend %icon-line-cross @extend %icon-line-cross
background: background:
position: 6px 6px
repeat: no-repeat repeat: no-repeat
size: auto 100% size: 14px 14px
&:hover &:hover
@extend %icon-line-cross-teal @extend %icon-line-cross-teal
@ -149,9 +151,9 @@ $button-border-color: #d4d4d4
@extend %circle-button @extend %circle-button
@extend %icon-line-trigger @extend %icon-line-trigger
background: background:
position: 2px 1px position: 6px 5px
repeat: no-repeat repeat: no-repeat
size: 24px 24px size: 16px 16px
&:hover &:hover
@extend %icon-line-trigger-teal @extend %icon-line-trigger-teal
@ -213,4 +215,4 @@ $button-border-color: #d4d4d4
position: 4px 1px position: 4px 1px
cursor: pointer cursor: pointer
@extend .button--grey @extend .button--grey
@extend %icon-line-eye @extend %icon-line-eye-white

View File

@ -1,20 +1,25 @@
.option-button .option-button
position: relative position: relative
width: 17em width: 17em
&:hover
.option-dropdown
display: block
.option-display
color: $oxide-blue
border-color: $oxide-blue
.option-tofu
@extend %icon-line-tofu-teal
border-color: $oxide-blue
.option-arrow
@extend %icon-line-arrowtabs-teal
border-color: $oxide-blue
transform: rotate(-90deg)
border-bottom: none
border-top: 1px solid $oxide-blue
@media #{$small-only} @media #{$small-only}
&.display &.display
.option-dropdown .option-dropdown
display: block display: block
@media #{$medium-up}
&:hover
.option-dropdown
display: block
.option-display
color: $oxide-blue
border-color: $oxide-blue
.option-tofu
border-color: $oxide-blue
background-image: inline-image('/line-icons/icon-tofuburger-teal.svg')
$dropdown-button-height: 30px $dropdown-button-height: 30px
$dropdown-button-margin: -9px $dropdown-button-margin: -9px
@ -45,19 +50,29 @@ $dropdown-button-margin: -9px
border-radius: 50% border-radius: 50%
overflow: hidden overflow: hidden
.option-tofu .option-tofu,
.option-arrow
width: 2em width: 2em
height: 2em height: 2em
display: inline-block display: inline-block
vertical-align: top vertical-align: top
background: background:
image: inline-image('/line-icons/icon-tofuburger.svg')
repeat: no-repeat repeat: no-repeat
size: 20px
position: 50% position: 50%
.option-tofu
@extend %icon-line-tofu
background-size: 20px
@media #{$medium-up} @media #{$medium-up}
border-left: 1px solid $pebble-grey border-left: 1px solid $pebble-grey
.option-arrow
@extend %icon-line-arrowtabs
transform: rotate(90deg)
background-size: 14px
@media #{$medium-up}
border-bottom: 1px solid $pebble-grey
.option-dropdown .option-dropdown
display: none display: none
position: absolute position: absolute
@ -78,7 +93,6 @@ $dropdown-button-margin: -9px
color: white color: white
background-color: $oxide-blue background-color: $oxide-blue
.option-search .option-search
input[type="text"] input[type="text"]
display: block display: block
@ -87,7 +101,6 @@ $dropdown-button-margin: -9px
border-bottom: 1px solid $oxide-blue border-bottom: 1px solid $oxide-blue
border-radius: 0 border-radius: 0
.option-list .option-list
list-style: none list-style: none
padding: 0 padding: 0
@ -101,3 +114,90 @@ $dropdown-button-margin: -9px
vertical-align: top vertical-align: top
margin-right: .3em margin-right: .3em
border-radius: 50% border-radius: 50%
.dropup
&.is-open
.dropup-list
display: block
.dropup-tofu
@extend %icon-line-tofu-teal
outline: none
.dropup-tofu
@extend %icon-line-tofu
background:
color: transparent
size: 100%
repeat: no-repeat
position: 0 5px
width: 2.5em
height: 2.5em
border: none
text-indent: 999%
overflow: hidden
white-space: nowrap
cursor: pointer
display: none
@media #{$medium-up}
display: inline-block
&:hover,
&:active
@extend %icon-line-tofu-teal
outline: none
.dropup-list
list-style: none
padding: 0
margin: 2em 0 0
background-color: white
text-align: center
li
display: inline-block
a
display: inline-block
width: 100%
padding: 0.5em 1em
background-color: white
[class^="icon-"]
margin-right: .3rem
&:hover,
&:active
background: $oxide-blue
color: white
.icon-trigger
@extend %icon-line-trigger-white
.icon-deactivate
@extend %icon-line-cross-white
border-color: white
.icon-settings
@extend %icon-line-cog-white
@media #{$medium-up}
position: absolute
right: 0
top: -7em
margin: 0
background-color: white
border: 1px solid $oxide-blue
border-radius: 2px
display: none
z-index: 2
text-align: left
li
display: block
&:last-of-type
&:after
content: ""
display: block
width: 1.6em
height: 1.6em
border: 1px solid $oxide-blue
background: white
transform: rotate(45deg)
position: absolute
bottom: -0.7em
right: 1.7em
z-index: -1

View File

@ -32,20 +32,14 @@
.success, .success,
.notice .notice
color: #3ba85b color: $turf-green
background-color: #deebdd background-color: $seed-green
.close .close
@extend .icon--dismiss-green @extend .icon--dismiss-green
.broadcast
color: #D8C500
background-color: #FFFBD7
.close
@extend .icon--dismiss-yellow
.error .error
color: #de4248 color: $brick-red
background-color: #f1b6ad background-color: $quartz-red
.close .close
@extend .icon--dismiss-red @extend .icon--dismiss-red

View File

@ -6,34 +6,28 @@
repeat: no-repeat repeat: no-repeat
.icon .icon
width: 1em width: 15px
height: 1em height: 15px
@extend %icon @extend %icon
%icon-download-log %icon-download-log
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 12.4"><style>.st0{fill:%23f1f1f1;}</style><g id="downloadlog"><path class="st0" d="M5.1 11.3c-.4 0-.7-.3-.7-.7V.6c0-.3.3-.6.7-.6.4 0 .7.3.7.7v10c-.1.4-.4.6-.7.6z"/><path class="st0" d="M5.1 12.4c-.2 0-.3-.1-.5-.2L.2 7.8c-.3-.3-.3-.7 0-.9s.7-.3.9 0L5 10.8l4-3.9c.3-.3.7-.3.9 0s.3.7 0 .9l-4.4 4.4c-.1.1-.3.2-.4.2zM14.1 2.1H7.9c-.4 0-.7-.3-.7-.7s.3-.7.7-.7h6.2c.4 0 .7.3.7.7s-.3.7-.7.7zM14.3 5.3H7.9c-.4 0-.6-.3-.6-.7 0-.4.2-.6.6-.6h6.4c.4 0 .7.2.7.6 0 .4-.3.7-.7.7zM14.3 8.5h-2.4c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7h2.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM13 11.6H9.2c-.4 0-.7-.3-.7-.7s.3-.7.7-.7H13c.4 0 .7.3.7.7s-.4.7-.7.7z"/></g></svg>') background-image: inline-image('stroke-icons/icon-downloadlogs.svg')
.icon-download-log .icon-download-log
@extend %icon @extend .icon
@extend %icon-download-log @extend %icon-download-log
width: 1.5em background-position: 0 -1px
height: 1.1em
vertical-align: middle
background-size: auto 14px
%icon-remove-log %icon-remove-log
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 10.9"><style>.st0{fill:%23f1f1f1;}</style><g id="removelog"><path class="st0" d="M12.3 1.8h1.9c.3 0 .6-.3.6-.6s-.3-.6-.6-.6h-1.9c-.3 0-.6.3-.6.6 0 .4.3.6.6.6zM9.7 3.5c-.3 0-.6.3-.6.6s.3.6.6.6h4.8c.3 0 .6-.3.6-.6s-.3-.6-.6-.6H9.7zM14.4 6.3H9.7c-.3 0-.6.3-.6.6s.3.6.6.6h4.7c.3 0 .6-.3.6-.6 0-.4-.3-.6-.6-.6zM13.2 9.1h-.7c-.3 0-.6.3-.6.6s.3.6.6.6h.7c.3 0 .6-.3.6-.6 0-.4-.3-.6-.6-.6z"/><path class="st0" d="M6.3 5.4L10.7 1c.2-.2.2-.6 0-.9-.2-.2-.6-.2-.9 0L5.4 4.5 1.1.2C.9 0 .5 0 .2.2s-.2.6 0 .9l4.4 4.4L.2 9.8c-.2.2-.2.6 0 .9.1.1.3.2.4.2s.3-.1.4-.2l4.4-4.4 4.4 4.4c.1.1.3.2.4.2.2 0 .3-.1.4-.2.2-.2.2-.6 0-.9L6.3 5.4z"/></g></svg>') background-image: inline-image('stroke-icons/icon-deletelogs.svg')
.icon-remove-log .icon-remove-log
@extend %icon @extend .icon
@extend %icon-remove-log @extend %icon-remove-log
width: 1.5em background-position: 0 -1px
height: 1.1em
vertical-align: middle
background-size: auto 14px
%icon-arrow-down %icon-arrow-down
background-image: inline-image('line-icons/icon-arrow-down.svg') background-image: inline-image('stroke-icons/icon-arrowdown.svg')
.icon--search .icon--search
background-image: inline-image('ui/search.svg') background-image: inline-image('stroke-icons/icon-search.svg')
.icon--dismiss-yellow .icon--dismiss-yellow
background-image: inline-image('ui/icon-warning-dismiss.svg') background-image: inline-image('ui/icon-warning-dismiss.svg')
@ -45,105 +39,92 @@
.icon--dismiss-grey .icon--dismiss-grey
background-image: inline-image('ui/dismiss.svg') background-image: inline-image('ui/dismiss.svg')
%icon-hook-on
background-image: inline-image('ui/hooks-on.svg')
%icon-hook-off
background-image: inline-image('ui/hooks-off.svg')
%icon-line-trashcan %icon-line-trashcan
background-image: inline-image('line-icons/icon-trash.svg') background-image: inline-image('stroke-icons/icon-trash.svg')
%icon-line-trashcan-red %icon-line-trashcan-red
background-image: inline-image('line-icons/icon-trash-red.svg') background-image: inline-image('stroke-icons/icon-trash-red.svg')
%icon-line-trashcan-disabled %icon-line-trashcan-disabled
background-image: inline-image('line-icons/icon-trash-disabled.svg') background-image: inline-image('stroke-icons/icon-trash-disabled.svg')
.icon-delete .icon-delete
@extend .icon
@extend %icon-line-trashcan @extend %icon-line-trashcan
.icon-delete-hover .icon-delete-hover
@extend %icon-line-trashcan-red @extend %icon-line-trashcan-red
.icon-delete-disabled .icon-delete-disabled
@extend %icon-line-trashcan-disabled @extend %icon-line-trashcan-disabled
%icon-line-arrowtabs
background-image: inline-image('stroke-icons/icon-arrowtabs.svg')
%icon-line-arrowtabs-teal
background-image: inline-image('stroke-icons/icon-arrowtabs-teal.svg')
%icon-line-key %icon-line-key
background-image: inline-image('line-icons/icon-key.svg') background-image: inline-image('stroke-icons/icon-key.svg')
.icon-key .icon-key
@extend %icon @extend .icon
@extend %icon-line-key @extend %icon-line-key
width: 20px margin-right: .3rem
height: 20px
background-position: 0 6px
margin-right: .1em
%icon-line-fingerprint %icon-line-fingerprint
background-image: inline-image('line-icons/icon-fingerprint.svg') background-image: inline-image('stroke-icons/icon-fingerprint.svg')
.icon-fingerprint .icon-fingerprint
@extend %icon @extend .icon
@extend %icon-line-fingerprint @extend %icon-line-fingerprint
width: 20px margin-right: .3rem
height: 20px
margin-right: .1em
%icon-line-calendar %icon-line-calendar
background-image: inline-image('line-icons/icon-cal.svg') background-image: inline-image('stroke-icons/icon-calendar.svg')
.icon-line-calendar, .icon-line-calendar,
.icon-cal, .icon-cal,
.icon-calendar .icon-calendar
@extend %icon @extend .icon
@extend %icon-line-calendar @extend %icon-line-calendar
width: 20px margin-right: .3rem
height: 18px
margin-right: .1em
background:
size: auto 20px
position: -1px 0
%icon-line-clock %icon-line-clock
background-image: inline-image('line-icons/icon-clock.svg') background-image: inline-image('stroke-icons/icon-clock.svg')
.icon-clock .icon-clock
@extend %icon @extend .icon
@extend %icon-line-clock @extend %icon-line-clock
width: 20px margin-right: .2rem
height: 20px
margin-right: .1em
background:
size: auto 21px
position: -2px 0
%icon-line-stopwatch %icon-line-stopwatch
background-image: inline-image('line-icons/icon-stopwatch.svg') background-image: inline-image('stroke-icons/icon-stopwatch.svg')
.icon-stopwatch .icon-stopwatch
@extend %icon @extend %icon
@extend %icon-line-stopwatch @extend %icon-line-stopwatch
width: 20px width: 17px
height: 18px height: 19px
margin-right: .1em margin-right: .2rem
background-size: auto 18px
background-position: 1px 0
.icon-line-build .icon-line-build
@extend %icon @extend %icon
background-image: inline-image('line-icons/icon-build.svg') background-image: inline-image('stroke-icons/icon-builds.svg')
%icon-line-commit %icon-line-commit,
background-image: inline-image('line-icons/icon-commit.svg') %icon-github
background-image: inline-image('stroke-icons/icon-github.svg')
.icon-line-commit .icon-line-commit
@extend %icon @extend %icon
@extend %icon-line-commit @extend %icon-line-commit
%icon-line-eye %icon-line-eye
background-image:inline-image('line-icons/icon-view.svg') background-image:inline-image('stroke-icons/icon-seemore.svg')
%icon-line-eye-white
background-image:inline-image('stroke-icons/icon-seemore-white.svg')
%icon-line-question %icon-line-question
background-image: inline-image('line-icons/icon-help.svg') background-image: inline-image('stroke-icons/icon-help.svg')
%icon-line-question-teal %icon-line-question-teal
background-image: inline-image('line-icons/icon-help-teal.svg') background-image: inline-image('stroke-icons/icon-help-teal.svg')
.icon-question .icon-question
width: 1em width: 18px
height: 1em height: 18px
background: background:
repeat: no-repeat repeat: no-repeat
position: 4px 2px position: 3px 3px
size: auto 10px size: auto 10px
display: inline-block display: inline-block
border: solid 1px #E4E6E6 border: solid 1px #E4E6E6
@ -154,68 +135,102 @@
@extend %icon-line-question-teal @extend %icon-line-question-teal
%icon-line-hash %icon-line-hash
background-image: inline-image('line-icons/icon-hash.svg') background-image: inline-image('stroke-icons/icon-hash.svg')
.icon-hash
@extend .icon
@extend %icon-line-hash
%icon-line-linux %icon-line-linux
background-image: inline-image('line-icons/icon-linux.svg') background-image: inline-image('stroke-icons/icon-linux.svg')
%icon-line-mac %icon-line-mac
background-image: inline-image('line-icons/icon-mac.svg') background-image: inline-image('stroke-icons/icon-mac.svg')
%icon-line-language %icon-line-language
background-image: inline-image('line-icons/icon-lang.svg') background-image: inline-image('stroke-icons/icon-language.svg')
%icon-line-environment %icon-line-environment
background-image: inline-image('line-icons/icon-environment.svg') background-image: inline-image('stroke-icons/icon-environment.svg')
%icon-line-cog %icon-line-cog
background-image: inline-image('line-icons/icon-settings.svg') background-image: inline-image('stroke-icons/icon-settings.svg')
%icon-line-cog-teal %icon-line-cog-teal
background-image: inline-image('line-icons/icon-settings-teal.svg') background-image: inline-image('stroke-icons/icon-settings-teal.svg')
%icon-line-cog-white
background-image: inline-image('stroke-icons/icon-settings-white.svg')
%icon-line-tofu
background-image: inline-image('stroke-icons/icon-tofuburger.svg')
%icon-line-tofu-teal
background-image: inline-image('stroke-icons/icon-tofuburger-teal.svg')
.icon-settings .icon-settings
@extend %icon-line-cog @extend %icon-line-cog
width: 1em @extend .icon
height: 1em
vertical-align: middle
display: inline-block
background:
repeat: no-repeat
position: 0 0
&:hover &:hover
@extend %icon-line-cog-teal @extend %icon-line-cog-teal
%icon-line-dropdown %icon-line-dropdown
background-image: inline-image('line-icons/icon-arrow-dropdown.svg') background-image: inline-image('stroke-icons/icon-arrow-dropdown.svg')
%icon-line-dropdown-teal %icon-line-dropdown-teal
background-image: inline-image('line-icons/icon-arrow-dropdown-teal.svg') background-image: inline-image('stroke-icons/icon-arrow-dropdown-teal.svg')
%icon-line-cross %icon-line-cross
background-image: inline-image('line-icons/icon-failed.svg') background-image: inline-image('stroke-icons/icon-failed.svg')
%icon-line-cross-white %icon-line-cross-white
background-image: inline-image('line-icons/icon-failed-white.svg') background-image: inline-image('stroke-icons/icon-failed-white.svg')
%icon-line-cross-teal %icon-line-cross-teal
background-image: inline-image('line-icons/icon-failed-teal.svg') background-image: inline-image('stroke-icons/icon-failed-teal.svg')
.icon-deactivate
@extend .icon
@extend %icon-line-cross
border: 1px solid $cement-grey
border-radius: 50%
&:hover,
&:active
@extend %icon-line-cross-white
border-color: white
%icon-line-trigger %icon-line-trigger
background-image: inline-image('line-icons/icon-trigger.svg') background-image: inline-image('stroke-icons/icon-restart.svg')
%icon-line-trigger-white %icon-line-trigger-white
background-image: inline-image('line-icons/icon-trigger-white.svg') background-image: inline-image('stroke-icons/icon-restart-white.svg')
%icon-line-trigger-teal %icon-line-trigger-teal
background-image: inline-image('line-icons/icon-trigger-teal.svg') background-image: inline-image('stroke-icons/icon-restart-teal.svg')
.icon-trigger
@extend .icon
@extend %icon-line-trigger
&:hover,
&:active
@extend %icon-line-trigger-white
%icon-line-lock
background-image: inline-image('stroke-icons/icon-private.svg')
.icon-lock
@extend %icon
@extend %icon-line-lock
width: 18px
height: 18px
margin-top: 1em
white-space: nowrap
text-indent: 999px
overflow: hidden
.icon-star
@extend %icon
width: 18px
height: 18px
%icon-line-passed
background-image: inline-image('stroke-icons/icon-passed.svg')
%icon-github
background-image: inline-image('line-icons/icon-commit.svg')
.icon-github .icon-github
display: inline-block
width: 1.1em
height: 1.1em
margin-right: 0.3em margin-right: 0.3em
vertical-align: middle vertical-align: middle
background: @extend .icon
repeat: no-repeat
size: 36px 21px
position: -9px -3px
@extend %icon-github @extend %icon-github
%icon-github-circle %icon-github-circle
background-image: inline-image('line-icons/icon-github-outline.svg') background-image: inline-image('stroke-icons/icon-repooctocat.svg')
.icon-github-circle .icon-github-circle
display: inline-block display: inline-block
width: 1.2em width: 1.2em
@ -226,16 +241,17 @@
@extend %icon-github-circle @extend %icon-github-circle
%icon-line-flag-teal %icon-line-flag-teal
background-image: inline-image('line-icons/icon-flag.svg') background-image: inline-image('stroke-icons/icon-flag.svg')
%icon-line-flag-yellow %icon-line-flag-yellow
background-image: inline-image('line-icons/icon-flag-yellow.svg') background-image: inline-image('stroke-icons/icon-flag-yellow.svg')
%icon-line-scale %icon-line-scale
background-image: inline-image('line-icons/icon-scales.svg') background-image: inline-image('stroke-icons/icon-scales.svg')
.icon-scale .icon-scale
@extend %icon @extend .icon
@extend %icon-line-scale @extend %icon-line-scale
margin-right: .3rem
.icon--plus .icon--plus
width: 1.1rem width: 1.1rem

View File

@ -0,0 +1,38 @@
.lastbuilds
list-style: none
margin: 0
padding: 0
width: 100%
display: flex
justify-content: flex-start
@media #{$small-only}
flex-flow: row wrap
margin-top: 1em
li
flex: 0 0 20%
height: 30px
@each $key, $value in $stateMap
&.#{$key}
background-color: map-get($value, color)
@media #{$medium-up}
flex: 0 0 10%
margin-right: 2px
transform: translateY(25px)
transition: transform 150ms ease
&:hover
transform: translateY(0)
a
display: block
width: 100%
height: 30%
padding-top: 4px
color: white
text-align: center
.status-icon
svg *
stroke: white !important
.circle
border-color: white !important

View File

@ -23,12 +23,12 @@
.notice--blue .notice--blue
padding: 0.3em 0.5em 0.3em padding: 0.3em 0.5em 0.3em
margin-bottom: .5em margin-bottom: .5em
background-color: #d2f5f9 background-color: $agate-blue
color: #40a3ad color: $oxide-blue
border-radius: 2px border-radius: 2px
font-size: 15px font-size: 15px
a a
color: #40a3ad color: $oxide-blue
text-decoration: underline text-decoration: underline
.icon-flag .icon-flag
@ -36,7 +36,7 @@
@extend %icon-line-flag-teal @extend %icon-line-flag-teal
display: inline-block display: inline-block
background: background:
color: #40a3ad color: $oxide-blue
size: auto 13px size: auto 13px
position: 6px 4px position: 6px 4px
repeat: no-repeat repeat: no-repeat

View File

@ -1,15 +1,12 @@
.help .help
display: inline-block @extend %icon-line-question
@extend %icon
height: 19px height: 19px
width: 16px width: 16px
margin: -4px 0 0 3px margin: -4px 0 0 3px
vertical-align: middle
background: background:
image: inline-image('ui/help.svg')
repeat: no-repeat
position: 0 1px position: 0 1px
color: transparent color: transparent
size: 100%
cursor: pointer cursor: pointer
.popup .popup
@ -19,25 +16,23 @@
transform: translate(-50%, -50%) transform: translate(-50%, -50%)
height: auto height: auto
padding: 2em padding: 2em
color: #565656 color: $asphalt-grey
z-index: 99 z-index: 99
background-color: white background-color: white
border-radius: 2px border-radius: 2px
display: none display: none
background-color: #fff background-color: #fff
border: solid 10px #f1f1f1 border: solid 10px $pebble-grey
&:before &:before
content: "" content: ""
.close .close
position: absolute position: absolute
display: block display: block
right: 5px right: 5px
top: 8px top: 8px
width: 30px width: 20px
height: 30px height: 20px
text-indent: 999% text-indent: 999%
overflow: hidden overflow: hidden
white-space: nowrap white-space: nowrap

View File

@ -11,6 +11,46 @@
vertical-align: middle vertical-align: middle
line-height: 1.5 line-height: 1.5
.rows
+rowBorder
display: flex
flex-flow: column wrap
margin-bottom: 1rem
@each $key, $value in $stateMap
+rowColor(#{$key}, map-get($value, color))
@media #{$medium-up}
position: relative
flex-flow: row nowrap
justify-content: space-between
align-items: center
.label
margin: 0
font-size: 10px
color: $cement-grey
text-transform: uppercase
font-weight: 600
.row-label,
.row-label a
font-size: $font-size-m
color: $cement-grey
.row-label
margin: 0
a:hover,
a:active
border-bottom: 1px solid $cement-grey
.row-content
margin: 0
font-size: 16px
a:hover,
a:active
border-bottom: 1px solid $asphalt-grey
// old! remove this
.row-li .row-li
position: relative position: relative
border: 1px solid $cream-dark border: 1px solid $cream-dark
@ -20,7 +60,6 @@
h2, h3, small h2, h3, small
margin: 0 margin: 0
font-weight: $font-weight-normal
font-size: 16px font-size: 16px
small small
font-weight: $font-weight-bold font-weight: $font-weight-bold
@ -71,22 +110,6 @@
@media #{$medium-up} @media #{$medium-up}
display: block display: block
.icon
width: 1.3em
height: 1.3em
margin-right: .2em
display: inline-block
vertical-align: middle
.avatar
display: inline-block
width: 16px
height: 16px
margin: 0 .4em 0 .1em
border-radius: 50%
vertical-align: middle
background-color: #E9EBEB
@include statusColors($turf-green, 'passed', 10px) @include statusColors($turf-green, 'passed', 10px)
@include statusColors($brick-red, 'failed', 10px) @include statusColors($brick-red, 'failed', 10px)
@include statusColors($brick-red, 'errored', 10px) @include statusColors($brick-red, 'errored', 10px)

View File

@ -1,3 +1,25 @@
.status-icon *,
.request-icon *
fill: none
stroke: $cement-grey
stroke-linecap: round
stroke-linejoin: round
stroke-miterlimit: 10
stroke-width: 2px
.status-icon
@extend %icon
width: 13px
height: 14px
line-height: 0
margin-right: .3rem
.request-icon
@extend %icon
width: 16px
height: 19px
margin-right: .1rem
.status-icon .status-icon
.is-rotating .is-rotating
width: 17px width: 17px
@ -12,10 +34,15 @@
vertical-align: middle vertical-align: middle
width: 5px width: 5px
height: 5px height: 5px
border: solid 1px #bfb502 border: solid 1px $dozer-yellow
border-radius: 50% border-radius: 50%
transform-origin: center center transform-origin: center center
&.started,
&.received,
&.created
height: 19px
@keyframes rotation @keyframes rotation
0% 0%
transform: rotateZ(0deg) transform: rotateZ(0deg)

View File

@ -35,7 +35,6 @@
.label .label
vertical-align: middle vertical-align: middle
font-size: $font-size-m font-size: $font-size-m
color: $cement-grey
display: inline-block display: inline-block
&.label--small .label &.label--small .label
width: 7em width: 7em
@ -79,6 +78,6 @@
background-position: 50% background-position: 50%
background-repeat: no-repeat background-repeat: no-repeat
.off .off
@extend %icon-hook-off @extend %icon-line-cross-white
.on .on
@extend %icon-hook-on @extend %icon-line-passed

View File

@ -16,8 +16,9 @@
background-color: $oxide-blue background-color: $oxide-blue
.sync-last .sync-last
position: absolute position: absolute
left: -15em right: 9em
top: 0 top: 0
width: 170%
z-index: -1 z-index: -1
transition: transform 150ms ease, opacity 250ms ease transition: transform 150ms ease, opacity 250ms ease
transform: translateX(80%) transform: translateX(80%)
@ -33,11 +34,8 @@
.icon-trigger .icon-trigger
@extend %icon-line-trigger-white @extend %icon-line-trigger-white
@extend %icon @extend .icon
width: 1.5em margin-right: 0.3rem
height: 1.5em
margin-right: 0.3em
.loading-indicator--white .loading-indicator--white
vertical-align: top vertical-align: top

View File

@ -10,6 +10,7 @@
width: 100% width: 100%
@media #{$medium-up} @media #{$medium-up}
margin-top: 0 margin-top: 0
margin-bottom: 4px
display: block display: block
li li
flex: 0 0 8em flex: 0 0 8em
@ -76,13 +77,13 @@
left: .5em left: .5em
.tab-arrow .tab-arrow
@extend %icon-line-arrowtabs
display: inline-block display: inline-block
position: absolute position: absolute
top: 5px top: 1px
left: -19px left: -22px
width: .7em width: 1em
height: 1.3em height: 1.3em
background: background:
size: auto 100% size: auto 100%
repeat: no-repeat repeat: no-repeat
image: inline-image('line-icons/icon-arrow-tabs.svg')

View File

@ -1,5 +1,5 @@
.tofuburger .tofuburger
@extend %icon-line-tofu
height: $top-height height: $top-height
width: 30px width: 30px
border: none border: none
@ -7,7 +7,6 @@
outline: none outline: none
text-indent: -9999px text-indent: -9999px
background: background:
image: inline-image('line-icons/icon-tofuburger.svg')
size: 100% size: 100%
position: center center position: center center
repeat: no-repeat repeat: no-repeat

View File

@ -3,18 +3,17 @@
max-width: 900px max-width: 900px
margin: auto margin: auto
h1 h1
color: #808080 color: $cement-grey
font-size: 36px font-size: 36px
margin-bottom: 1em margin-bottom: 1em
font-weight: 300 font-weight: 300
line-height: 1.1 line-height: 1.1
h2 h2
color: #35a764 color: $turf-green
font-size: 22px font-size: 22px
margin-bottom: 1em margin-bottom: 1em
font-weight: 300 font-weight: 300
p, li p, li
color: #666
font-size: $font-size-m font-size: $font-size-m
line-height: 25px line-height: 25px
@ -76,10 +75,3 @@
strong strong
text-transform: uppercase text-transform: uppercase
font-style: normal font-style: normal
.note--info
background-color: #e7eeee
color: #3e8987
code
color: #267c8d
background-color: white

View File

@ -1,8 +1,3 @@
$teal: #40A3AD
$green: #39A85B
$red: #DB4242
$yellow: #E5C025
$grey: #858585
.landing-pro .landing-pro
@ -44,10 +39,10 @@ $grey: #858585
border-radius: 2px border-radius: 2px
font-size: 27px font-size: 27px
text-decoration: none text-decoration: none
background-color: $green background-color: $turf-green
&:hover &:hover
color: white color: white
background-color: #73c78d background-color: lighten($turf-green, .2)
.hero-button .hero-button
@extend .landing-button @extend .landing-button
@ -199,22 +194,22 @@ $grey: #858585
.h1--grey .h1--grey
@extend %h1 @extend %h1
@include linkStyle @include linkStyle
color: $grey !important color: $asphalt-grey !important
a a
color: $grey color: $asphalt-grey
.h1--teal .h1--teal
@extend %h1 @extend %h1
font-size: 64px font-size: 64px
color: #408692 !important color: $oxide-blue !important
.h1--green .h1--green
@extend %h1 @extend %h1
color: $green !important color: $turf-green !important
.h1--red .h1--red
@extend %h1 @extend %h1
color: $red !important color: $brick-red !important
%h2 %h2
margin: 0 0 .5em margin: 0 0 .5em
@ -224,19 +219,19 @@ $grey: #858585
.h2--grey .h2--grey
@extend %h2 @extend %h2
color: $grey color: $asphalt-grey
.h2--green .h2--green
@extend %h2 @extend %h2
color: $green color: $turf-green
.h2--red .h2--red
@extend %h2 @extend %h2
color: $red color: $brick-red
.h2--teal .h2--teal
@extend %h2 @extend %h2
color: $teal color: $oxide-blue
%h3 %h3
margin: .5em 0 margin: .5em 0
@ -254,19 +249,19 @@ $grey: #858585
.h3--teal .h3--teal
@extend %h3 @extend %h3
color: $teal color: $oxide-blue
.h3--red .h3--red
@extend %h3 @extend %h3
color: $red color: $brick-red
.h3--green .h3--green
@extend %h3 @extend %h3
color: $green color: $turf-green
.h3--yellow .h3--yellow
@extend %h3 @extend %h3
color: $yellow color: $dozer-yellow
.text-big .text-big
@include linkStyle @include linkStyle

View File

@ -11,14 +11,14 @@
background-color: #ffffff background-color: #ffffff
background-image: inline-image('landing-page/signingithub.svg') background-image: inline-image('landing-page/signingithub.svg')
background-size: 16px 16px background-size: 16px 16px
border: 2px solid #e4e7e7 border: 2px solid rgba($cement-grey, .4)
color: #a0a8a8 color: $cement-grey
.button--signingin .button--signingin
border: 2px solid #3FA75F border: 2px solid $turf-green
.button--signin:hover .button--signin:hover
background-color: #73c78d background-color: $turf-green
background-image: inline-image('landing-page/signingithub-hover.svg') background-image: inline-image('landing-page/signingithub-hover.svg')
border: 2px solid #73c78d border: 2px solid $turf-green
color: #fff color: #fff
.landing-centered-wrapper .landing-centered-wrapper
@ -37,7 +37,7 @@
font-size: 5em font-size: 5em
line-height: 1em line-height: 1em
font-weight: 300 font-weight: 300
color: #8f9294 color: $cement-grey
margin-bottom: 0 margin-bottom: 0
.hero, .oss-testing, .customers, .recent-builds, .free-for-oss, .private-repos, .features-list, .build-flows, .user-testimonials .hero, .oss-testing, .customers, .recent-builds, .free-for-oss, .private-repos, .features-list, .build-flows, .user-testimonials
@ -52,11 +52,10 @@
font-size: 3.3em font-size: 3.3em
line-height: 1.15em line-height: 1.15em
font-weight: 300 font-weight: 300
color: #39a85b color: $turf-green
p p
line-height: 1.5em line-height: 1.5em
font-color: #606162
font-size: 1.7em font-size: 1.7em
.hero.z-1 .hero.z-1
@ -78,13 +77,13 @@
margin-bottom: -192px margin-bottom: -192px
#laptop img #laptop img
border: 2px solid #d8dadc border: 2px solid lighten($cement-grey, 20)
border-radius: 2px border-radius: 2px
.hero .hero
background-color: #f6f6f6 background-color: $pebble-grey
h1 h1
color: #339999 color: $oxide-blue
line-height: 1.2em line-height: 1.2em
margin-bottom: 0 margin-bottom: 0
@ -96,7 +95,7 @@
display: none display: none
.button .button
background-color: #39a85b background-color: $turf-green
color: #fff color: #fff
font-size: 2em font-size: 2em
font-weight: 300 font-weight: 300
@ -106,7 +105,7 @@
border: 0 border: 0
&:hover &:hover
background-color: #73c78d background-color: lighten($turf-green, 20)
.sign-in-mascot .sign-in-mascot
padding-right: 10px padding-right: 10px
@ -130,7 +129,11 @@
br.mobile-break br.mobile-break
display: none display: none
.os-numbers
width: 80%
@media #{$medium-up}
width: 60%
.customers .customers
text-align: center text-align: center
@ -138,44 +141,6 @@
text-align: left text-align: left
padding: 0 0 0 12% padding: 0 0 0 12%
.recent-builds
background-color: #f6f6f6
min-height: 44rem
.recent-builds-text
text-align: center
h2
color: #db4141
text-align: right
margin: 0
a
color: #828282
p
text-align: right
margin-top: 0.5em
margin-bottom: 2em
img
margin-bottom: 20px
ul
padding-left: 0
li
background-color: #fff
border-radius: 4px
color: #828282
font-weight: 400
margin-bottom: 20px
list-style-type: none
position: relative
height: 120px
width: 100%
padding: 10px 0 0 60px
text-align: left
.free-for-oss .free-for-oss
text-align: center text-align: center
@ -192,11 +157,16 @@
br.mobile-no-break br.mobile-no-break
display: inline-block display: inline-block
.os-numbers
width: 80%
@media #{$medium-up}
width: 60%
.private-repos .private-repos
text-align: center text-align: center
h2 h2
color: #339999 color: $oxide-blue
margin: 0 margin: 0
text-align: right text-align: right
@ -215,15 +185,12 @@
display: inline-block display: inline-block
.features-list .features-list
background-color: #f6f6f6
h2 h2
margin: 0 margin: 0
h3 h3
font-size: 1.4em font-size: 1.4em
font-weight: 300 font-weight: 300
color: #413c3c
text-align: center text-align: center
margin-bottom: 35px margin-bottom: 35px
padding-top: 40px padding-top: 40px
@ -231,7 +198,6 @@
p p
font-size: 1.15em font-size: 1.15em
font-weight: 300 font-weight: 300
color: #606162
text-align: center text-align: center
br.mobile-break br.mobile-break
@ -278,7 +244,6 @@
margin-top: 1.6rem; margin-top: 1.6rem;
li li
font-color: #606162
font-size: 1.7em font-size: 1.7em
line-height: 1.7em line-height: 1.7em
&:before &:before
@ -293,7 +258,7 @@
text-align: center text-align: center
h2 h2
color: #909295 color: $cement-grey
h2#pr-bf-margin h2#pr-bf-margin
margin-top: 90px margin-top: 90px
@ -304,14 +269,14 @@
width: 120px width: 120px
p p
font-size: 1em font-size: 13px
line-height: 1.5em line-height: 1.5em
color: #5f6062 color: $asphalt-grey
.divider-line-horizontal .divider-line-horizontal
width: 50px width: 50px
height: 3px height: 3px
background: #eaeaec background: lighten($cement-grey, 30)
display: inline-block display: inline-block
margin-bottom: 75px margin-bottom: 75px
@ -322,13 +287,11 @@
margin-bottom: 50px margin-bottom: 50px
h2 h2
color: #418793 color: $oxide-blue
text-align: right text-align: right
p p
font-size: 1.2em font-size: 1.2em
font-weight: 300
color: #606162
margin: 0 margin: 0
display: inline-block display: inline-block
@ -407,7 +370,7 @@
.build-flows .branch-bf .divider-line-vertical .build-flows .branch-bf .divider-line-vertical
width: 3px width: 3px
height: 40px height: 40px
background: #eaeaec background: lighten($cement-grey, 30)
display: inline-block display: inline-block
margin-bottom: 10px margin-bottom: 10px
@ -459,20 +422,6 @@
.navigation-nested .navigation-nested
background-color: white background-color: white
.landing-rows
list-style: none
margin: 0
@media #{$small-only}
padding: 0
.landing-row
.two-line
padding-left: 2rem
h2
padding-left: .5rem
font-size: 18px
.landing, .landing,
.landing-pro .landing-pro
background-color: white background-color: white

View File

@ -19,13 +19,13 @@
margin: .5em 0 0 margin: .5em 0 0
.font-light .font-light
font-weight: 300 font-weight: 300
color: $teal color: $oxide-blue
.font-regular .font-regular
font-weight: 400 font-weight: 400
color: #D3B01E color: $dozer-yellow
.font-semibold .font-semibold
font-weight: 600 font-weight: 600
color: $grey color: $asphalt-grey
.list--colors .list--colors
@extend %list @extend %list
@ -39,15 +39,15 @@
height: 3em height: 3em
margin-bottom: .5em margin-bottom: .5em
.colors-sample--teal .colors-sample--teal
background-color: $teal background-color: $oxide-blue
.colors-sample--green .colors-sample--green
background-color: $green background-color: $turf-green
.colors-sample--yellow .colors-sample--yellow
background-color: $yellow background-color: $canary-yellow
.colors-sample--red .colors-sample--red
background-color: $red background-color: $brick-red
.colors-sample--grey .colors-sample--grey
background-color: #666 background-color: $asphalt-grey
.list--mascot .list--mascot
@extend %list @extend %list
@ -91,3 +91,6 @@
margin-bottom: 3em margin-bottom: 3em
@media #{$medium-up} @media #{$medium-up}
margin-bottom: 0 margin-bottom: 0
.text-logo
margin: 0 auto 3em

View File

@ -12,7 +12,7 @@
margin-bottom: 2em margin-bottom: 2em
border: border:
width: 2px width: 2px
color: #E8E8E8 color: rgba($cement-grey, .2)
style: solid style: solid
@media #{$medium-up} @media #{$medium-up}
@ -52,19 +52,19 @@
color: $color color: $color
.plan--red .plan--red
+colorPlans($red, #FCF0F0, false) +colorPlans($brick-red, lighten($brick-red, 40), false)
.list--check li:before .list--check li:before
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjREI0MjQyIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+") background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjREI0MjQyIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+")
.plan--green .plan--green
+colorPlans($green, #73c78d) +colorPlans($turf-green, lighten($turf-green, 10))
.list--check li:before .list--check li:before
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjMzlBODVCIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+") background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjMzlBODVCIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+")
.plan--teal .plan--teal
+colorPlans($teal, #8CC8CE) +colorPlans($oxide-blue, lighten($oxide-blue, 10))
.list--check li:before .list--check li:before
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjNDBBM0FEIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+") background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjNDBBM0FEIiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+")
.plan--yellow .plan--yellow
+colorPlans($yellow, #EFD97C) +colorPlans($dozer-yellow, lighten($dozer-yellow, 10))
.list--check li:before .list--check li:before
background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjRTVDMDI1IiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+") background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAgMjAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDIwIDIwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGcgaWQ9IlBhc3NlZCI+Cgk8Zz4KCQk8cGF0aCBmaWxsPSIjRTVDMDI1IiBkPSJNOS42LDE0LjRjLTAuMSwwLTAuMy0wLjEtMC40LTAuMWwtNC0zLjNjLTAuMy0wLjItMC4zLTAuNi0wLjEtMC45UzUuOCw5LjgsNi4xLDEwbDMuNCwyLjhsNC45LTcuNQoJCQlDMTQuNiw1LDE1LDQuOSwxNS4zLDUuMWMwLjMsMC4yLDAuNCwwLjYsMC4yLDAuOWwtNS4zLDguMUMxMC4xLDE0LjMsOS45LDE0LjQsOS42LDE0LjRDOS43LDE0LjQsOS43LDE0LjQsOS42LDE0LjR6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+")
@ -129,7 +129,7 @@
flex: 0 0 100% flex: 0 0 100%
padding: 1em 1.5em 1.7em padding: 1em 1.5em 1.7em
margin-bottom: 2em margin-bottom: 2em
border: solid 1px #E8E8E8 border: solid 1px rgba($cement-grey, .2)
@media #{$medium-up} @media #{$medium-up}
flex: 0 0 48% flex: 0 0 48%

View File

@ -43,11 +43,11 @@ $color-bg-log-fold-highlight: #777
$ansi-black: #4E4E4E $ansi-black: #4E4E4E
$ansi-black-bold: #7C7C7C $ansi-black-bold: #7C7C7C
$ansi-red: #FF6C60 $ansi-red: #FF6C60
$ansi-red-bold: #FFB6B0 $ansi-red-bold: #FF9B93
$ansi-green: #00AA00 $ansi-green: #00AA00
$ansi-green-bold: #CEFFAB $ansi-green-bold: #B1FD79
$ansi-yellow: #FFFFB6 $ansi-yellow: #FFFFB6
$ansi-yellow-bold: #FFFFCB $ansi-yellow-bold: #FFFF91
$ansi-blue: #96CBFE $ansi-blue: #96CBFE
$ansi-blue-bold: #B5DCFE $ansi-blue-bold: #B5DCFE
$ansi-magenta: #FF73FD $ansi-magenta: #FF73FD

View File

@ -1,6 +1,7 @@
{{#if allHooks.isLoaded}} {{#if allHooks.isLoaded}}
<header> <header>
{{#unless config.enterprise}}
{{#if config.billingEndpoint}} {{#if config.billingEndpoint}}
<div class="cta-btn"> <div class="cta-btn">
{{#if subscribeButtonInfo.subscribed}} {{#if subscribeButtonInfo.subscribed}}
@ -14,6 +15,7 @@
{{/if}} {{/if}}
</div> </div>
{{/if}} {{/if}}
{{/unless}}
<div class="profile-header"> <div class="profile-header">
<h1>{{accountName}}</h1> <h1>{{accountName}}</h1>

View File

@ -1,7 +1,7 @@
{{#if cachesExist}} {{#if cachesExist}}
<div class="caches-header"> <div class="caches-header">
<h1 class="small-title">All caches <small>(<a href="http://docs.travis-ci.com/user/caching/" title="Read about caching">Read the docs</a>)</small></h1> <h1 class="small-title">All caches <small>(<a href="http://docs.travis-ci.com/user/caching/" title="Read about caching">Read the docs</a>)</small></h1>
<a {{action "deleteRepoCache"}} class="{{if isDeleting 'deleting'}} delete-cache-button" title="Delete all repository caches"> <a {{action "deleteRepoCache"}} href="#" class="{{if isDeleting 'deleting'}} delete-cache-button" title="Delete all repository caches">
Delete all repository caches Delete all repository caches
</a> </a>
</div> </div>

View File

@ -5,21 +5,7 @@
</div> </div>
<div class="row-builds"> <div class="row-builds">
<div class="row-item"> <div class="row-item">
<span class="icon icon-line-build"> <span class="icon icon-line-build"></span>
<svg x="0px" y="0px" viewBox="0 0 20 20" xml:space="preserve" enable-background="new 0 0 20 20">
<g id="Build">
<path fill="#A7AEAE" d="M15.2,15.3c-0.4,0-0.7-0.1-1-0.4c-0.4-0.3-0.6-0.8-0.6-1.2c0-0.3,0.2-0.5,0.5-0.5c0.3,0,0.5,0.2,0.5,0.5
c0,0.2,0.1,0.4,0.2,0.5c0.1,0.1,0.3,0.2,0.5,0.1c0.2,0,0.4-0.2,0.5-0.5c0.1-0.3-0.1-0.6-0.4-0.7c-0.4-0.2-0.7-0.6-0.7-1.1V8.7
c0-0.3,0.2-0.5,0.5-0.5s0.5,0.2,0.5,0.5V12c0,0,0,0.2,0.1,0.2c0.7,0.3,1.1,1,1,1.8c-0.1,0.6-0.6,1.2-1.3,1.3
C15.3,15.3,15.3,15.3,15.2,15.3z"/>
<path fill="#A7AEAE" d="M9.1,17.5C9.1,17.5,9.1,17.5,9.1,17.5H3.7c-0.3,0-0.5-0.2-0.5-0.5c0-0.3,0.2-0.5,0.5-0.5h1.7V8.9H3.4
C2.5,8.9,2.5,7.1,2.5,7V6.6c0-0.5,0.3-0.9,0.7-1l2.2-0.8V3.3c0-0.2,0.1-0.5,0.3-0.6c0.2-0.2,0.4-0.2,0.7-0.2l1.5,0.3
C9,3,9.6,3.1,9.6,3.7v1.2l7.1,0.9c0.5,0.1,0.8,0.5,0.8,0.9V7c0,0,0,1.8-0.9,1.8h-7v7.6h1.7c0.3,0,0.5,0.2,0.5,0.5
c0,0.3-0.2,0.5-0.5,0.5H9.1C9.1,17.5,9.1,17.5,9.1,17.5z M6.4,16.5l2.2,0V8.9H6.4V16.5z M9.6,7.9h6.7c0.1-0.3,0.2-0.7,0.2-0.9
V6.7L9.6,5.9V7.9z M6.4,7.9h2.2V5.7L8.1,5.7l-1.7,0V7.9z M3.6,7.9h1.8v-2l-2,0.7l0,0.4C3.5,7.2,3.5,7.6,3.6,7.9z M6.4,4.7h1.7
l0.5,0.1V4c-0.1,0-0.4-0.1-0.9-0.2c0,0-0.1,0-0.1,0L6.4,3.5V4.7z"/>
</g>
</svg></span>
<span class="label-align"> <span class="label-align">
{{#if build.last_build}} {{#if build.last_build}}
{{#if getLast5Builds.isLoading}} {{#if getLast5Builds.isLoading}}
@ -37,8 +23,8 @@
<div class="row-request"> <div class="row-request">
<div class="row-item"> <div class="row-item">
{{#if build.last_build}} {{#if build.last_build}}
{{request-icon event=build.last_build.event_type state=build.last_build.state}}
{{#link-to "build" build.last_build.id}} {{#link-to "build" build.last_build.id}}
{{request-icon event=build.last_build.event_type state=build.last_build.state}}
<span class="label-align">#{{build.last_build.number}} {{build.last_build.state}}</span> <span class="label-align">#{{build.last_build.number}} {{build.last_build.state}}</span>
{{/link-to}} {{/link-to}}
{{else}} {{else}}
@ -61,8 +47,8 @@
<div class="two-line"> <div class="two-line">
<div class="row-commit"> <div class="row-commit">
<div class="row-item"> <div class="row-item">
<a href="{{urlGithubCommit}}" title="commit on GitHub">
<span class="icon-github"></span> <span class="icon-github"></span>
<a href="{{urlGithubCommit}}" title="commit on GitHub">
<span class="label-align"> <span class="label-align">
{{#if build.last_build}} {{#if build.last_build}}
{{format-sha build.last_build.commit.sha}} {{format-sha build.last_build.commit.sha}}
@ -74,9 +60,9 @@
<div class="row-commiter"> <div class="row-commiter">
<div class="row-item"> <div class="row-item">
{{#if build.last_build}} {{#if build.last_build}}
<img src="{{build.last_build.commit.committer.avatar_url}}" alt="avatar" class="avatar"><span class="label-align">{{build.last_build.commit.committer.name}}</span> <img src="{{build.last_build.commit.committer.avatar_url}}" alt="avatar" class="avatar--small"><span class="label-align">{{build.last_build.commit.committer.name}}</span>
{{else}} {{else}}
<div class="avatar"></div><span class="label-align">no commits yet</span> <div class="avatar--small"></div><span class="label-align">no commits yet</span>
{{/if}} {{/if}}
</div> </div>
</div> </div>

View File

@ -1,26 +1,18 @@
<span class="icon-broadcast {{status}} {{if isOpen 'is-open'}}" title="broadcasts" {{action 'toggleBroadcasts'}}> <span class="icon-broadcast {{status}} {{if isOpen 'is-open'}}" title="broadcasts" {{action 'toggleBroadcasts'}}>
<svg version="1.1" id="icon-broadcast" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 21.625" xml:space="preserve" alt="Broadcast tower">
<svg version="1.1" id="Layer_1" x="0px" y="0px" <g class="tower-path">
viewBox="-1 0 16 25" xml:space="preserve"> <circle class="path" cx="7.503" cy="6.733" r="1.775"/>
<g> <polyline class="path" points="8.303,8.508 13.627,21.206 4.728,14.441 "/>
<path class="tower-path" d="M0.989,18.732l0.92-2.247l3.926,0.663V20h0.868l-0.001-2.852l3.926-0.663l0.92,2.247h0.989L8.167,8.078 <polyline class="path" points="6.828,8.508 1.528,21.206 10.427,14.441 "/>
H7.183l0.004,0.011H5.351l0.004-0.011H4.37L0,18.732H0.989z M6.702,16.288l-0.003-3.877l2.461,0.492l1.131,2.759L6.702,16.288z <line class="path" x1="7.5" y1="8.508" x2="7.5" y2="20.673"/>
M2.246,15.662l1.131-2.759l2.459-0.492l-0.001,3.877L2.246,15.662z M8.794,12.015l-2.095-0.483L6.698,8.92h0.827L8.794,12.015z </g>
M5.836,8.92v2.612l-2.093,0.482L5.012,8.92H5.836z"/> <g class="radio-wave--outer">
<g class="radio-wave--right"> <path class="path" d="M2.454,11.81C1.247,10.557,0.5,8.859,0.5,6.981c0-2.936,1.812-5.441,4.375-6.481"/>
<path class="tower-path" d="M10.035,8.32l0.606,0.606c2.267-2.355,2.263-6.58-0.016-8.927l-0.591,0.593 <path class="path" d="M12.668,11.668C13.8,10.43,14.5,8.792,14.5,6.981c0-2.936-1.812-5.441-4.375-6.481"/>
C11.992,2.781,11.99,6.115,10.035,8.32z"/> </g>
<path class="tower-path" d="M8.631,1.995C9.823,3.41,9.824,5.496,8.635,6.922l0.606,0.606c1.522-1.766,1.524-4.394,0-6.144L8.631,1.995 <g class="radio-wave--inner">
z"/> <path class="path" d="M3.751,9.161C3.356,8.506,3.123,7.743,3.123,6.922c0-1.836,1.133-3.402,2.735-4.052"/>
</g> <path class="path" d="M11.339,8.986c0.336-0.615,0.537-1.313,0.537-2.064c0-1.836-1.133-3.402-2.735-4.052"/>
<g class="radio-wave--left">
<path class="tower-path" d="M1.855,8.927L2.462,8.32C0.507,6.115,0.506,2.781,2.463,0.593L1.872,0C-0.407,2.347-0.41,6.571,1.855,8.927
z"/>
<path class="tower-path" d="M3.257,1.385c-1.524,1.75-1.523,4.378-0.001,6.144l0.606-0.606C2.674,5.496,2.674,3.41,3.866,1.995
L3.257,1.385z"/>
</g>
<path class="tower-path" d="M6.246,6.437c1.082,0,1.962-0.88,1.962-1.964c0-1.085-0.88-1.964-1.962-1.964
c-1.087,0-1.966,0.879-1.966,1.964C4.28,5.557,5.159,6.437,6.246,6.437z"/>
</g> </g>
</svg> </svg>

View File

@ -41,12 +41,12 @@
</ul> </ul>
<p class="commit-author"> <p class="commit-author">
{{#if commit.authorName}} {{#if commit.authorName}}
{{user-avatar url=commit.authorAvatarUrlOrGravatar name=commit.authorName}} {{user-avatar url=commit.authorAvatarUrlOrGravatar name=commit.authorName small=true}}
<span class="label-align">{{commit.authorName}} authored{{#if commit.authorIsCommitter}} and committed{{/if}}</span> <span class="label-align">{{commit.authorName}} authored{{#if commit.authorIsCommitter}} and committed{{/if}}</span>
{{/if}} {{/if}}
{{#unless commit.authorIsCommitter}} {{#unless commit.authorIsCommitter}}
{{#if commit.committerName}} {{#if commit.committerName}}
{{user-avatar url=commit.committerAvatarUrlOrGravatar name=commit.committerName}} {{user-avatar url=commit.committerAvatarUrlOrGravatar name=commit.committerName small=true}}
<span class="label-align">{{commit.committerName}} committed</span> <span class="label-align">{{commit.committerName}} committed</span>
{{/if}} {{/if}}
{{/unless}} {{/unless}}

View File

@ -20,7 +20,7 @@
{{/unless}} {{/unless}}
</div> </div>
<div class="row-item row-committer"> <div class="row-item row-committer">
{{user-avatar url=build.commit.authorAvatarUrlOrGravatar name=build.commit.authorName}} {{user-avatar url=build.commit.authorAvatarUrlOrGravatar name=build.commit.authorName small=true}}
<span class="label-align">{{build.commit.authorName}}</span> <span class="label-align">{{build.commit.authorName}}</span>
</div> </div>
</div> </div>

View File

@ -1,111 +1,92 @@
<div class="dash-head">
<div class="two-line fade-out"> <a href="#" class="dash-star is-starred" title="(un-) star this repo"><span class="icon-star">
<div class="row-name row-item row-color"> <svg version="1.1" id="icon-star" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 15" style="enable-background:new 0 0 15 15;" xml:space="preserve" alt="star repository">
<h3>{{#link-to "owner" repo.owner.login}}{{status-icon status=repo.default_branch.last_build.state}} {{repo.owner.login}}{{/link-to}}</h3> <path id="star" d="M7.159,1.035c0.188-0.38,0.495-0.38,0.683,0l1.596,3.234c0.188,0.38,0.685,0.741,1.105,0.802
<h2>{{#link-to "repo" repo.owner.login repo.name}}<span class="label-align">{{repo.name}}</span>{{/link-to}}</h2> l3.569,0.519c0.42,0.061,0.515,0.353,0.211,0.649l-2.583,2.517c-0.304,0.296-0.494,0.88-0.422,1.298l0.61,3.555
</div> c0.072,0.418-0.177,0.599-0.552,0.401l-3.192-1.678c-0.375-0.197-0.99-0.197-1.365,0l-3.192,1.678
</div> c-0.375,0.197-0.624,0.017-0.552-0.401l0.61-3.555c0.072-0.418-0.118-1.002-0.422-1.298L0.678,6.24
C0.374,5.944,0.469,5.652,0.889,5.591l3.569-0.519c0.42-0.061,0.917-0.422,1.105-0.802L7.159,1.035z"/>
<div class="one-line fade-out">
<div class="row-request">
<div class="row-item">
{{#link-to "build" repo.owner.login repo.name repo.default_branch.last_build.id}}
{{request-icon event=repo.default_branch.last_build.event_type state=repo.default_branch.last_build.state}}
<span class="label-align">#{{repo.default_branch.last_build.number}} {{repo.default_branch.last_build.state}} on {{repo.default_branch.name}}</span>
{{/link-to}}
</div>
</div>
</div>
<div class="one-line">
<div class="row-commit">
<div class="row-item">
<a href="{{urlGithubCommit}}" title="commit on GitHub">
<span class="icon-github"></span>
<span class="label-align">
{{format-sha repo.default_branch.last_build.commit.sha}}
</span>
</a>
</div>
</div>
</div>
<div class="one-line">
<div class="row-calendar">
<div class="row-item" title="{{repo.default_branch.last_build.finished_at}}">
<span class="icon-calendar"></span>
<span class="label-align">
{{#if repo.default_branch.last_build}}
{{format-time repo.default_branch.last_build.finished_at}}
{{else}}
-
{{/if}}</span>
</div>
</div>
</div>
{{!--
<div class="one-line is-relative">
<div class="row-nav dropup-trigger">
<div class="row-item">
<a href="#"><span class="icon icon-tofu">
<svg x="0px" y="0px" viewBox="0 0 20 20" xml:space="preserve">
<g id="Tofuburger">
<path fill="#A7AEAE" d="M17.9,6.2H2.1C1.8,6.2,1.5,6,1.5,5.6C1.5,5.3,1.8,5,2.1,5h15.7c0.4,0,0.6,0.3,0.6,0.6
C18.5,6,18.2,6.2,17.9,6.2z"/>
<path fill="#A7AEAE" d="M17.9,10.6H2.1c-0.4,0-0.6-0.3-0.6-0.6s0.3-0.6,0.6-0.6h15.7c0.4,0,0.6,0.3,0.6,0.6S18.2,10.6,17.9,10.6z
"/>
<path fill="#A7AEAE" d="M17.9,15H2.1c-0.4,0-0.6-0.3-0.6-0.6c0-0.3,0.3-0.6,0.6-0.6h15.7c0.4,0,0.6,0.3,0.6,0.6
C18.5,14.7,18.2,15,17.9,15z"/>
</g>
</svg> </svg>
</span></a></div> </span></a>
<span class="icon-lock">private repo</span>
</div>
<div class="dash-body">
<div class="dash-main">
<header class="fade-out dash-header">
<h2 class="row-label">{{#link-to "owner" repo.owner.login}}{{repo.owner.login}}{{/link-to}}</h2>
<h1 class="row-content">{{#link-to "repo" repo.owner.login repo.name}}{{repo.name}}{{/link-to}}</h1>
</header>
<section class="dash-default">
<h3 class="label">Default branch</h3>
<p class="row-content color">
{{request-icon event=repo.default_branch.last_build.event_type state=repo.default_branch.last_build.state}}
{{repo.default_branch.name}} is {{repo.default_branch.last_build.state}}
</p>
</section>
<section class="dash-last-build">
<div>
<h3 class="label">Last build</h3>
<p class="row-content color">
{{status-icon status=repo.default_branch.last_build.state}}
{{#link-to "build" repo.owner.login repo.name repo.default_branch.last_build.id}}
<span class="label-align">#{{repo.default_branch.last_build.number}} {{repo.default_branch.last_build.state}}</span>
{{/link-to}}
</p>
</div>
<div>
<h3 class="label">Last commit</h3>
<p class="row-content">
<span class="icon-github"></span>
<a href="{{urlGithubCommit}}" title="See the commit on Github">
<span class="label-align">
{{format-sha repo.default_branch.last_build.commit.sha}}
</span>
</a>
</p>
</div>
<div>
<h3 class="label">Last commit completed</h3>
<p class="row-content" title="{{repo.default_branch.last_build.finished_at}}">
<span class="icon-calendar"></span>
<span class="label-align">
{{#if repo.default_branch.last_build}}
{{format-time repo.default_branch.last_build.finished_at}}
{{else}}
running
{{/if}}</span>
</p>
</div>
</section>
{{#if displayMenuTofu}}
<div class="dash-menu">
<div class="dropup {{if dropupIsOpen "is-open"}}">
<button type="button" class="dropup-tofu" {{action "openDropup"}}>open action menu</button>
<ul class="dropup-list">
<li><a href="#" title="Trigger a new build">
<span class="icon-trigger"></span>
<span class="label-align">Trigger a build</span></a></li>
{{#if displayActiavteLink}}
<li><a href="#" title="Deactivate builds for this repository">
<span class="icon-deactivate"></span>
<span class="label-align">Deactivate repository</span></a></li>
{{/if}}
<li>
{{#link-to 'settings' repo title="Settings for this repository"}}
<span class="icon-settings"></span>
<span class="label-align">Settings</span>
{{/link-to}}</li>
</ul>
</div>
</div>
{{/if}}
</div> </div>
<div class="dropup--blue">
<ul> <aside class="dash-aside">
<li><a {{action 'deactivateRepo'}}> <ul class="lastbuilds">
<span class="icon icon-eye"> {{lastbuild-tile repo=repo build=repo.default_branch.last_build}}
<svg version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
<g id="Failed">
<path fill="#A7AEAE" d="M10.9,10l3.9-3.9c0.2-0.2,0.2-0.6,0-0.9c-0.2-0.2-0.6-0.2-0.9,0L10,9.1L6.1,5.2c-0.2-0.2-0.6-0.2-0.9,0
c-0.2,0.2-0.2,0.6,0,0.9L9.1,10l-3.9,3.9c-0.2,0.2-0.2,0.6,0,0.9C5.3,14.9,5.5,15,5.6,15s0.3-0.1,0.4-0.2l3.9-3.9l3.9,3.9
c0.1,0.1,0.3,0.2,0.4,0.2c0.2,0,0.3-0.1,0.4-0.2c0.2-0.2,0.2-0.6,0-0.9L10.9,10z"/>
</g>
</svg>
</span>
<span class="dropup-item">Deactivate</span></a>
</li>
<li>
{{#if hasTriggered}}
<span class="icon">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
<g id="Passed">
<path fill="#A7AEAE" d="M9.6,14.4c-0.1,0-0.3-0.1-0.4-0.1l-4-3.3c-0.3-0.2-0.3-0.6-0.1-0.9S5.8,9.8,6.1,10l3.4,2.8l4.9-7.5
C14.6,5,15,4.9,15.3,5.1c0.3,0.2,0.4,0.6,0.2,0.9l-5.3,8.1C10.1,14.3,9.9,14.4,9.6,14.4C9.7,14.4,9.7,14.4,9.6,14.4z"/>
</g>
</svg>
</span>
<span class="dropup-item no-link">Build triggered</span>
{{else}}
{{#if isTriggering}}
{{loading-indicator}}
{{else}}
<a {{action 'tiggerBuild'}}>
<span class="icon icon-trigger">
<svg x="0px" y="0px" viewBox="0 0 20 20" xml:space="preserve">
<g id="Trigger">
<path fill="#A7AEAE" d="M17.2,7.9C17,7.6,16.6,7.7,16.3,8l-1,1.2C14.9,6,12.2,3.6,9,3.6c-3.6,0-6.4,2.9-6.4,6.4s2.9,6.4,6.4,6.4
c1.8,0,3.6-0.8,4.8-2.2c0.2-0.3,0.2-0.7-0.1-0.9c-0.3-0.2-0.7-0.2-0.9,0.1c-1,1.1-2.4,1.7-3.9,1.7c-2.8,0-5.1-2.3-5.1-5.1
S6.1,4.9,9,4.9c2.7,0,4.9,2.1,5.1,4.7l-1.7-1.1c-0.3-0.2-0.7-0.1-0.9,0.2s-0.1,0.7,0.2,0.9l2.8,1.8c0,0,0,0,0,0
c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.2,0,0.3-0.1c0,0,0.1,0,0.1-0.1c0,0,0.1-0.1,0.1-0.1l2-2.4C17.6,8.5,17.5,8.1,17.2,7.9z"/>
</g>
</svg>
</span>
<span class="dropup-item">Trigger a build</span>
</a>
{{/if}}
{{/if}}
</li>
</ul> </ul>
</div> </aside>
</div> --}} </div>

View File

@ -1,5 +1,9 @@
{{#if log.isLoaded}} {{#if error}}
{{log-content job=job log=log}} <p class="notice">There was an error while trying to fetch the log.</p>
{{else}} {{else}}
{{loading-indicator}} {{#if log.isLoaded}}
{{log-content job=job log=log}}
{{else}}
{{loading-indicator}}
{{/if}}
{{/if}} {{/if}}

View File

@ -1,108 +0,0 @@
<div class="two-line row-header fade-out">
<div class="row-name row-color">
<h3>{{#link-to "owner" repo.owner}}
{{status-icon status=repo.lastBuildState}}
<span class="label-align">{{repo.owner}}</span>{{/link-to}}
</h3>
<h2>{{#link-to "repo" repo.owner repo.name}}
<span class="label-align">{{repo.name}}</span>
{{/link-to}}
</h2>
</div>
</div>
<div class="two-line">
<div class="row-number">
<div class="row-item row-color">
{{#link-to "build" repo repo.lastBuildId}}
<span class="icon">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 191 20 20" style="enable-background:new -289 191 20 20;" xml:space="preserve">
<path fill="#A5ACAD" class="st0" d="M-272.4,198.4C-272.4,198.4-272.4,198.4-272.4,198.4l-3.4,0l0.3-3.3c0-0.3-0.2-0.6-0.5-0.6
c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.4l-3.2,0l0.3-3.6c0-0.3-0.2-0.6-0.5-0.6c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.7l-3.2,0
c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5c0,0,0,0,0,0l3.1,0l-0.2,2.9l-3.5,0c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5
c0,0,0,0,0,0l3.4,0l-0.3,3.3c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.4l3.2,0l-0.3,3.6
c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.7l3.2,0c0.3,0,0.5-0.2,0.5-0.6c0-0.3-0.2-0.5-0.5-0.5c0,0,0,0,0,0
l-3.1,0l0.2-2.9l3.5,0c0.3,0,0.5-0.2,0.5-0.6C-271.8,198.7-272.1,198.4-272.4,198.4z M-277.2,202.4l-3.2,0l0.2-2.9l3.2,0
L-277.2,202.4z"/>
</svg>
</span>
<span class="label-align">
{{repo.lastBuildNumber}} {{repo.lastBuildState}}</span>
{{/link-to}}
</div>
</div>
<div class="row-calendar">
<div class="row-item" title="{{repo.lastBuildFinishedAt}}">
<span class="icon">
<svg viewBox="0 0 20 20">
<g id="Cal">
<path fill="#A7AEAE" d="M16.7,2.5H3.3C3,2.5,2.8,2.7,2.8,3V17c0,0.3,0.2,0.5,0.5,0.5h13.4c0.3,0,0.5-0.2,0.5-0.5V3
C17.2,2.7,17,2.5,16.7,2.5z M16.2,3.4v3.1H3.8V3.4H16.2z M3.8,16.6v-9h12.5v9H3.8z"/>
<path fill="#A7AEAE" d="M8.7,13.4c-0.1,0-0.3,0-0.4,0c0.2-0.2,0.4-0.4,0.5-0.6c0.2-0.2,0.3-0.4,0.5-0.6c0.1-0.2,0.2-0.4,0.3-0.6
c0.1-0.2,0.1-0.4,0.1-0.6c0-0.2,0-0.4-0.1-0.6c-0.1-0.2-0.2-0.3-0.3-0.4C9.2,10,9.1,9.9,8.9,9.8C8.7,9.7,8.5,9.7,8.3,9.7
C8,9.7,7.7,9.8,7.5,9.9C7.2,10,7,10.2,6.8,10.4L7.3,11c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.4,0.1,0.5,0.2
c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.2-0.2,0.4-0.4,0.6c-0.2,0.2-0.4,0.4-0.6,0.7c-0.2,0.2-0.5,0.5-0.8,0.8v0.6
H10v-0.9H9.1C9,13.4,8.8,13.4,8.7,13.4z"/>
<path fill="#A7AEAE" d="M10.6,10.7h2c-0.2,0.3-0.4,0.6-0.5,0.8c-0.1,0.3-0.3,0.6-0.4,0.8c-0.1,0.3-0.2,0.6-0.2,0.9
c0,0.3-0.1,0.7-0.1,1h1c0-0.4,0-0.8,0.1-1.2c0-0.3,0.1-0.7,0.2-0.9c0.1-0.3,0.2-0.6,0.4-0.9c0.2-0.3,0.4-0.6,0.6-0.9V9.8h-3.1
V10.7z"/>
</g>
</svg>
</span>
<time class="label-align" datetime="{{repo.lastBuildFinishedAt}}">
{{landing-page-last-build-time repo.lastBuildFinishedAt}}</time>
</div>
</div>
</div>
<div class="two-line">
<div class="row-commit">
<div class="row-item">
<span class="icon">
<svg x="0px" y="0px" viewBox="2 0 20 20" xml:space="preserve">
<g id="Commit">
<path fill="#A7AEAE" d="M7.8,17.5c-0.3,0-0.5-0.2-0.5-0.5l0-1c-0.4,0-1,0.1-1.4-0.1c-0.4-0.1-1.3-0.5-1.8-1.7
c-0.1-0.2-0.3-0.4-0.4-0.6c-0.1-0.1-0.2-0.3-0.3-0.4C3,12.8,3,12,3.3,11.5c0.3-0.4,0.7-0.5,1.2-0.3c0.7,0.2,1.1,0.9,1.4,1.3
c0.1,0.1,0.1,0.2,0.2,0.2c0.4,0.4,1,0.3,1.4,0.1c0.1-0.1,0.2-0.2,0.3-0.3c-0.1,0-0.1,0-0.2,0c-0.7-0.1-1.3-0.4-1.9-0.7
c-0.2-0.2-0.6-0.4-0.8-0.7c-0.3-0.3-0.5-0.7-0.7-1.2C4.1,9.4,4,9,3.9,8.5c0-0.4-0.1-0.9,0-1.4C4,6.5,4.2,6,4.5,5.5
c0.1-0.1,0.1-0.2,0.2-0.3c0,0,0-0.1,0-0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.4,0.1-0.8,0.3-1.2C5,2.6,5.2,2.5,5.5,2.5
c0.3,0,0.8,0.1,1.2,0.3c0.4,0.2,0.8,0.4,1.2,0.7c0.5-0.1,1-0.2,1.6-0.2c0.4,0,1.6,0,2,0c0.5,0,1,0.1,1.4,0.2l0.2-0.1
c0.2-0.1,0.5-0.3,0.7-0.4c0.4-0.2,0.7-0.3,1.1-0.3c0.1,0,0.2,0,0.3,0c0.3,0,0.5,0.1,0.6,0.4c0.2,0.6,0.4,1.2,0.2,2l0,0.1
c0,0.1,0,0.2-0.1,0.3c0.5,0.6,0.7,1.3,0.8,2.1c0,0.3,0,0.6,0,0.9c0,0.5-0.1,1-0.2,1.4c-0.2,0.5-0.4,1-0.7,1.4
c-0.3,0.4-0.7,0.6-1,0.8c-0.6,0.3-1.2,0.6-1.8,0.7c0.2,0.4,0.3,0.8,0.3,1.3c0,0,0,0,0,0c0,0.8,0,3.2,0,3.2c0,0.3-0.2,0.5-0.5,0.5
L7.8,17.5L7.8,17.5z M7.8,15.1c0.1,0,0.2,0,0.3,0.1c0.1,0.1,0.2,0.2,0.2,0.3l0,1l4.2,0c0-0.7,0-2.1,0-2.7c0-0.4-0.1-0.7-0.2-1
c-0.1-0.2-0.1-0.3-0.2-0.3l0.3-0.4l0,0L12,12.5c-0.1-0.1-0.1-0.3-0.1-0.5c0.1-0.2,0.2-0.3,0.4-0.3l0.3,0c0.7-0.1,1.3-0.3,1.9-0.7
c0.3-0.2,0.6-0.4,0.7-0.6c0.2-0.3,0.4-0.6,0.5-1C15.9,9,15.9,8.6,16,8.1c0-0.2,0-0.5,0-0.7c-0.1-0.7-0.3-1.2-0.7-1.7
c-0.2-0.2-0.2-0.4-0.1-0.6c0-0.1,0.1-0.2,0.1-0.3l0-0.1c0.1-0.4,0-0.8-0.1-1.2c0,0,0,0-0.1,0c-0.2,0-0.5,0.1-0.7,0.2
c-0.2,0.1-0.4,0.2-0.7,0.4l-0.4,0.2c-0.1,0.1-0.3,0.1-0.4,0.1c-0.5-0.1-0.9-0.2-1.4-0.2c-0.4,0-1.5,0-1.9,0C9,4.1,8.5,4.2,8,4.4
c-0.1,0-0.3,0-0.5-0.1C7.1,4,6.7,3.8,6.3,3.6C6.1,3.5,5.9,3.5,5.7,3.5C5.6,3.7,5.6,4,5.6,4.2c0,0.3,0,0.5,0.1,0.7
c0,0.1,0,0.1,0.1,0.2c0.1,0.2,0,0.4-0.1,0.5L5.5,5.8C5.5,5.9,5.4,6,5.3,6.1C5.1,6.4,4.9,6.8,4.8,7.3c-0.1,0.4,0,0.8,0,1.1
c0,0.4,0.1,0.8,0.2,1.2c0.1,0.4,0.3,0.7,0.5,0.9C5.8,10.7,6,10.9,6.2,11c0.5,0.3,1,0.5,1.6,0.6c0.2,0,0.7,0.1,0.7,0.1
c0.1,0,0.3,0.1,0.3,0.2c0.1,0.1,0.1,0.2,0.1,0.4c0,0.1-0.3,1-0.9,1.4c-0.7,0.4-1.8,0.5-2.5-0.3c-0.1-0.1-0.2-0.2-0.3-0.3
c-0.2-0.3-0.6-0.8-1-1c-0.1,0-0.1,0-0.1,0c0,0,0,0-0.1,0.1c0,0.2,0,0.4,0.1,0.6c0.1,0.1,0.2,0.2,0.3,0.4c0.2,0.3,0.4,0.5,0.5,0.8
c0.4,0.8,1,1.1,1.2,1.2C6.6,15.2,7.4,15.1,7.8,15.1C7.7,15.1,7.7,15.1,7.8,15.1z"/>
</g>
</svg>
</span>
<span class="label-align">
{{format-sha repo.lastBuild.commit.sha}}</span>
</div>
</div>
<div class="row-commiter">
<div class="row-item">
<span class="icon">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
<g id="Push">
<path fill="#A7AEAE" d="M16.9,9.4h-3.5c-0.3-1.6-1.7-2.8-3.4-2.8S6.9,7.8,6.6,9.4H3.1c-0.3,0-0.6,0.3-0.6,0.6s0.3,0.6,0.6,0.6h3.5
c0.3,1.6,1.7,2.8,3.4,2.8s3.1-1.2,3.4-2.8h3.5c0.3,0,0.6-0.3,0.6-0.6S17.2,9.4,16.9,9.4z M10,12.2c-1.2,0-2.2-1-2.2-2.2
c0-1.2,1-2.2,2.2-2.2c1.2,0,2.2,1,2.2,2.2c0,0,0,0,0,0c0,0,0,0,0,0C12.2,11.2,11.2,12.2,10,12.2z"/>
</g>
</svg>
</span><span class="label-align">{{repo.lastBuild.commit.branch}}</span>
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
{{#link-to "build" repo.owner.login repo.name build.id}}
{{status-icon status=build.state}}
<span class="label-align">#{{build.number}}</span>
{{/link-to}}

View File

@ -13,16 +13,6 @@
<span class="label-align">This job is running on our legacy infrastructure. Please read <a href="http://docs.travis-ci.com/user/migrating-from-legacy/?utm_source=legacy-notice&utm_medium=banner&utm_campaign=legacy-upgrade" title="Migrating from legacy">our docs on how to upgrade</a>.</span></p> <span class="label-align">This job is running on our legacy infrastructure. Please read <a href="http://docs.travis-ci.com/user/migrating-from-legacy/?utm_source=legacy-notice&utm_medium=banner&utm_campaign=legacy-upgrade" title="Migrating from legacy">our docs on how to upgrade</a>.</span></p>
{{/if}} {{/if}}
{{/if}} {{/if}}
{{#if job.displayGceNotice}}
{{#if job.isFinished}}
<p class="notice--blue"><span class="icon-flag"></span>
<span class="label-align">This job ran on our new platform for Precise builds. Please read <a href="https://blog.travis-ci.com/2015-11-27-moving-to-a-more-elastic-future" title="Blog post on infrastructure migration">our blog post for more information</a>.</span></p>
{{else}}
<p class="notice--blue"><span class="icon-flag"></span>
<span class="label-align">This job is running on our new platform for Legacy Precise builds. Please read <a href="https://blog.travis-ci.com/2015-11-27-moving-to-a-more-elastic-future" title="Blog post on infrastructure migration">our blog post for more information</a>.</span></p>
{{/if}}
{{/if}}
{{/if}} {{/if}}
{{/unless}} {{/unless}}

View File

@ -63,14 +63,7 @@
<h2 class="page-title">This is not an active repository</h2> <h2 class="page-title">This is not an active repository</h2>
<p class="page-notice">Want to start testing this project on Travis CI?</p> <p class="page-notice">Want to start testing this project on Travis CI?</p>
<a href="http://docs.travis-ci.com/user/getting-started/" class="button button--green">Read the Docs on Getting Started</a> <a href="http://docs.travis-ci.com/user/getting-started/" class="button button--green">Read the Docs on Getting Started</a>
{{#if user.pushPermissions.length}}
{{#if canActivate}} <p>If this repository is already in active use, <br> make sure its activated on {{#link-to "account" repo.owner}}your profile{{/link-to}}.</p>
<p>You can activate the repository on {{#link-to "account" repo.owner}}your profile{{/link-to}},<br/>
or by clicking the button below:</p>
<button {{action 'activate'}} class="button button--green">Activate</button>
{{#if isActivating}}
{{loading-indicator}}
{{/if}}
{{/if}} {{/if}}
</div> </div>

View File

@ -14,7 +14,7 @@
{{else}} {{else}}
All organizations All organizations
{{/if}} {{/if}}
</span><span class="option-tofu"></span> </span><span class="option-arrow"></span>
</a> </a>
{{/if}} {{/if}}
<div class="option-dropdown {{if showFilter 'is-open'}}"> <div class="option-dropdown {{if showFilter 'is-open'}}">

View File

@ -15,23 +15,13 @@
<div class="row-item row-color"> <div class="row-item row-color">
<div class="one-line"> <div class="one-line">
{{#link-to "build" ownerName repoName repo.default_branch.last_build.id}} {{#link-to "build" ownerName repoName repo.default_branch.last_build.id}}
<span class="icon"> <span class="icon-hash">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 193 18 18" {{!-- style="enable-background:new -289 191 20 20;" --}} xml:space="preserve">
<path fill="#A5ACAD" class="st0" d="M-272.4,198.4C-272.4,198.4-272.4,198.4-272.4,198.4l-3.4,0l0.3-3.3c0-0.3-0.2-0.6-0.5-0.6
c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.4l-3.2,0l0.3-3.6c0-0.3-0.2-0.6-0.5-0.6c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.7l-3.2,0
c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5c0,0,0,0,0,0l3.1,0l-0.2,2.9l-3.5,0c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5
c0,0,0,0,0,0l3.4,0l-0.3,3.3c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.4l3.2,0l-0.3,3.6
c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.7l3.2,0c0.3,0,0.5-0.2,0.5-0.6c0-0.3-0.2-0.5-0.5-0.5c0,0,0,0,0,0
l-3.1,0l0.2-2.9l3.5,0c0.3,0,0.5-0.2,0.5-0.6C-271.8,198.7-272.1,198.4-272.4,198.4z M-277.2,202.4l-3.2,0l0.2-2.9l3.2,0
L-277.2,202.4z"/>x
</svg>
</span> </span>
<span class="label-align">{{repo.default_branch.last_build.number}}</span> <span class="label-align">{{repo.default_branch.last_build.number}}</span>
{{/link-to}} {{/link-to}}
</div> </div>
</div> </div>
<div class="row-item fade-out"> <div class="row-item fade-out">
<div class="one-line"> <div class="one-line">
{{request-icon event=repo.default_branch.last_build.event_type}} {{request-icon event=repo.default_branch.last_build.event_type}}
@ -42,31 +32,7 @@
<div class="row-item"> <div class="row-item">
<div class="one-line"> <div class="one-line">
<a href="{{repo.default_branch.last_build.commit.compare_url}}"> <a href="{{repo.default_branch.last_build.commit.compare_url}}">
<span class="icon"> <span class="icon-github">
<svg x="0px" y="0px" viewBox="2 0 20 20" xml:space="preserve">
<g id="Commit">
<path fill="#A7AEAE" d="M7.8,17.5c-0.3,0-0.5-0.2-0.5-0.5l0-1c-0.4,0-1,0.1-1.4-0.1c-0.4-0.1-1.3-0.5-1.8-1.7
c-0.1-0.2-0.3-0.4-0.4-0.6c-0.1-0.1-0.2-0.3-0.3-0.4C3,12.8,3,12,3.3,11.5c0.3-0.4,0.7-0.5,1.2-0.3c0.7,0.2,1.1,0.9,1.4,1.3
c0.1,0.1,0.1,0.2,0.2,0.2c0.4,0.4,1,0.3,1.4,0.1c0.1-0.1,0.2-0.2,0.3-0.3c-0.1,0-0.1,0-0.2,0c-0.7-0.1-1.3-0.4-1.9-0.7
c-0.2-0.2-0.6-0.4-0.8-0.7c-0.3-0.3-0.5-0.7-0.7-1.2C4.1,9.4,4,9,3.9,8.5c0-0.4-0.1-0.9,0-1.4C4,6.5,4.2,6,4.5,5.5
c0.1-0.1,0.1-0.2,0.2-0.3c0,0,0-0.1,0-0.1c-0.1-0.3-0.1-0.6-0.1-1c0-0.4,0.1-0.8,0.3-1.2C5,2.6,5.2,2.5,5.5,2.5
c0.3,0,0.8,0.1,1.2,0.3c0.4,0.2,0.8,0.4,1.2,0.7c0.5-0.1,1-0.2,1.6-0.2c0.4,0,1.6,0,2,0c0.5,0,1,0.1,1.4,0.2l0.2-0.1
c0.2-0.1,0.5-0.3,0.7-0.4c0.4-0.2,0.7-0.3,1.1-0.3c0.1,0,0.2,0,0.3,0c0.3,0,0.5,0.1,0.6,0.4c0.2,0.6,0.4,1.2,0.2,2l0,0.1
c0,0.1,0,0.2-0.1,0.3c0.5,0.6,0.7,1.3,0.8,2.1c0,0.3,0,0.6,0,0.9c0,0.5-0.1,1-0.2,1.4c-0.2,0.5-0.4,1-0.7,1.4
c-0.3,0.4-0.7,0.6-1,0.8c-0.6,0.3-1.2,0.6-1.8,0.7c0.2,0.4,0.3,0.8,0.3,1.3c0,0,0,0,0,0c0,0.8,0,3.2,0,3.2c0,0.3-0.2,0.5-0.5,0.5
L7.8,17.5L7.8,17.5z M7.8,15.1c0.1,0,0.2,0,0.3,0.1c0.1,0.1,0.2,0.2,0.2,0.3l0,1l4.2,0c0-0.7,0-2.1,0-2.7c0-0.4-0.1-0.7-0.2-1
c-0.1-0.2-0.1-0.3-0.2-0.3l0.3-0.4l0,0L12,12.5c-0.1-0.1-0.1-0.3-0.1-0.5c0.1-0.2,0.2-0.3,0.4-0.3l0.3,0c0.7-0.1,1.3-0.3,1.9-0.7
c0.3-0.2,0.6-0.4,0.7-0.6c0.2-0.3,0.4-0.6,0.5-1C15.9,9,15.9,8.6,16,8.1c0-0.2,0-0.5,0-0.7c-0.1-0.7-0.3-1.2-0.7-1.7
c-0.2-0.2-0.2-0.4-0.1-0.6c0-0.1,0.1-0.2,0.1-0.3l0-0.1c0.1-0.4,0-0.8-0.1-1.2c0,0,0,0-0.1,0c-0.2,0-0.5,0.1-0.7,0.2
c-0.2,0.1-0.4,0.2-0.7,0.4l-0.4,0.2c-0.1,0.1-0.3,0.1-0.4,0.1c-0.5-0.1-0.9-0.2-1.4-0.2c-0.4,0-1.5,0-1.9,0C9,4.1,8.5,4.2,8,4.4
c-0.1,0-0.3,0-0.5-0.1C7.1,4,6.7,3.8,6.3,3.6C6.1,3.5,5.9,3.5,5.7,3.5C5.6,3.7,5.6,4,5.6,4.2c0,0.3,0,0.5,0.1,0.7
c0,0.1,0,0.1,0.1,0.2c0.1,0.2,0,0.4-0.1,0.5L5.5,5.8C5.5,5.9,5.4,6,5.3,6.1C5.1,6.4,4.9,6.8,4.8,7.3c-0.1,0.4,0,0.8,0,1.1
c0,0.4,0.1,0.8,0.2,1.2c0.1,0.4,0.3,0.7,0.5,0.9C5.8,10.7,6,10.9,6.2,11c0.5,0.3,1,0.5,1.6,0.6c0.2,0,0.7,0.1,0.7,0.1
c0.1,0,0.3,0.1,0.3,0.2c0.1,0.1,0.1,0.2,0.1,0.4c0,0.1-0.3,1-0.9,1.4c-0.7,0.4-1.8,0.5-2.5-0.3c-0.1-0.1-0.2-0.2-0.3-0.3
c-0.2-0.3-0.6-0.8-1-1c-0.1,0-0.1,0-0.1,0c0,0,0,0-0.1,0.1c0,0.2,0,0.4,0.1,0.6c0.1,0.1,0.2,0.2,0.3,0.4c0.2,0.3,0.4,0.5,0.5,0.8
c0.4,0.8,1,1.1,1.2,1.2C6.6,15.2,7.4,15.1,7.8,15.1C7.7,15.1,7.7,15.1,7.8,15.1z"/>
</g>
</svg>
</span> </span>
<span class="label-align">{{format-sha repo.default_branch.last_build.commit.sha}}</span> <span class="label-align">{{format-sha repo.default_branch.last_build.commit.sha}}</span>
</a> </a>
@ -75,21 +41,7 @@
<div class="row-item fade-out"> <div class="row-item fade-out">
<div class="one-line"> <div class="one-line">
<span class="icon"> <span class="icon-calendar">
<svg viewBox="0 0 20 20">
<g id="Cal">
<path fill="#A7AEAE" d="M16.7,2.5H3.3C3,2.5,2.8,2.7,2.8,3V17c0,0.3,0.2,0.5,0.5,0.5h13.4c0.3,0,0.5-0.2,0.5-0.5V3
C17.2,2.7,17,2.5,16.7,2.5z M16.2,3.4v3.1H3.8V3.4H16.2z M3.8,16.6v-9h12.5v9H3.8z"/>
<path fill="#A7AEAE" d="M8.7,13.4c-0.1,0-0.3,0-0.4,0c0.2-0.2,0.4-0.4,0.5-0.6c0.2-0.2,0.3-0.4,0.5-0.6c0.1-0.2,0.2-0.4,0.3-0.6
c0.1-0.2,0.1-0.4,0.1-0.6c0-0.2,0-0.4-0.1-0.6c-0.1-0.2-0.2-0.3-0.3-0.4C9.2,10,9.1,9.9,8.9,9.8C8.7,9.7,8.5,9.7,8.3,9.7
C8,9.7,7.7,9.8,7.5,9.9C7.2,10,7,10.2,6.8,10.4L7.3,11c0.1-0.1,0.2-0.2,0.4-0.3c0.1-0.1,0.3-0.1,0.4-0.1c0.2,0,0.4,0.1,0.5,0.2
c0.1,0.1,0.2,0.3,0.2,0.5c0,0.2,0,0.3-0.1,0.5c-0.1,0.2-0.2,0.4-0.4,0.6c-0.2,0.2-0.4,0.4-0.6,0.7c-0.2,0.2-0.5,0.5-0.8,0.8v0.6
H10v-0.9H9.1C9,13.4,8.8,13.4,8.7,13.4z"/>
<path fill="#A7AEAE" d="M10.6,10.7h2c-0.2,0.3-0.4,0.6-0.5,0.8c-0.1,0.3-0.3,0.6-0.4,0.8c-0.1,0.3-0.2,0.6-0.2,0.9
c0,0.3-0.1,0.7-0.1,1h1c0-0.4,0-0.8,0.1-1.2c0-0.3,0.1-0.7,0.2-0.9c0.1-0.3,0.2-0.6,0.4-0.9c0.2-0.3,0.4-0.6,0.6-0.9V9.8h-3.1
V10.7z"/>
</g>
</svg>
</span> </span>
<span class="build-status label-align">{{repo.default_branch.last_build.state}}</span> <span class="build-status label-align">{{repo.default_branch.last_build.state}}</span>
<span class="finished-at label-align">{{format-time repo.default_branch.last_build.finished_at}}</span> <span class="finished-at label-align">{{format-time repo.default_branch.last_build.finished_at}}</span>

View File

@ -8,35 +8,14 @@
{{/if}} {{/if}}
<p class="tile-title float-right"> <p class="tile-title float-right">
<span class="icon"> <span class="icon-hash"></span>
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 191 20 20" style="enable-background:new -289 191 20 20;" xml:space="preserve">
<path fill="#A5ACAD" class="st0" d="M-272.4,198.4C-272.4,198.4-272.4,198.4-272.4,198.4l-3.4,0l0.3-3.3c0-0.3-0.2-0.6-0.5-0.6
c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.4l-3.2,0l0.3-3.6c0-0.3-0.2-0.6-0.5-0.6c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.7l-3.2,0
c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5c0,0,0,0,0,0l3.1,0l-0.2,2.9l-3.5,0c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5
c0,0,0,0,0,0l3.4,0l-0.3,3.3c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.4l3.2,0l-0.3,3.6
c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.7l3.2,0c0.3,0,0.5-0.2,0.5-0.6c0-0.3-0.2-0.5-0.5-0.5c0,0,0,0,0,0
l-3.1,0l0.2-2.9l3.5,0c0.3,0,0.5-0.2,0.5-0.6C-271.8,198.7-272.1,198.4-272.4,198.4z M-277.2,202.4l-3.2,0l0.2-2.9l3.2,0
L-277.2,202.4z"/>
</svg>
</span>
{{#if job.repo.slug}} {{#if job.repo.slug}}
{{#link-to "job" job.repo job}}<span class="label-align">{{job.number}}</span>{{/link-to}} {{#link-to "job" job.repo job}}<span class="label-align">{{job.number}}</span>{{/link-to}}
{{/if}} {{/if}}
</p> </p>
<p> <p>
<span class="icon"> <span class="icon-clock"></span>
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 191 20 20" style="enable-background:new -289 191 20 20;" xml:space="preserve">
<g>
<path fill="#A5ACAD" class="st0" d="M-278.9,207.7c-3.7,0-6.7-3-6.7-6.7s3-6.7,6.7-6.7s6.7,3,6.7,6.7S-275.2,207.7-278.9,207.7z M-278.9,195.4
c-3.1,0-5.6,2.5-5.6,5.6s2.5,5.6,5.6,5.6c3.1,0,5.6-2.5,5.6-5.6S-275.8,195.4-278.9,195.4z"/>
<path fill="#A5ACAD" class="st0" d="M-276.7,203.1c-0.1,0-0.2,0-0.3-0.1l-2.4-1.5c-0.2-0.1-0.2-0.3-0.2-0.4v-3.8c0-0.3,0.2-0.5,0.5-0.5
s0.5,0.2,0.5,0.5v3.5l2.1,1.4c0.2,0.2,0.3,0.5,0.2,0.7C-276.4,203-276.5,203.1-276.7,203.1z"/>
</g>
</svg>
</span>
<span class="label-align">Queued</span> <span class="label-align">Queued</span>
</p> </p>

View File

@ -1,8 +1,8 @@
<div class="tile {{repo.lastBuildState}}"> <div class="tile {{repo.lastBuildState}}">
<h2 class="tile-title {{repo.lastBuildState}}"> <h2 class="tile-title {{repo.lastBuildState}}">
{{#if repo.slug}} {{#if repo.slug}}
{{#link-to "repo" repo}}
{{status-icon status=repo.lastBuildState}} {{status-icon status=repo.lastBuildState}}
{{#link-to "repo" repo}}
<span class="label-align">{{repo.slug}}</span> <span class="label-align">{{repo.slug}}</span>
{{/link-to}} {{/link-to}}
{{/if}} {{/if}}
@ -11,8 +11,8 @@
{{#if repo.slug}} {{#if repo.slug}}
{{#if repo.lastBuildId}} {{#if repo.lastBuildId}}
<p class="tile-title float-right {{repo.lastBuildState}}"> <p class="tile-title float-right {{repo.lastBuildState}}">
<span class="icon-hash"></span>
{{#link-to "build" repo repo.lastBuildId}} {{#link-to "build" repo repo.lastBuildId}}
<span class="icon-hash"></span>
<span class="label-align">{{repo.lastBuildNumber}}</span> <span class="label-align">{{repo.lastBuildNumber}}</span>
{{/link-to}} {{/link-to}}
</p> </p>

View File

@ -1,15 +1,35 @@
{{#if isEmpty}} {{#if isEmpty}}
<svg viewBox="0 0 20 20"><path fill="#A7AEAE" d="M16.9 9.4h-3.5c-.3-1.6-1.7-2.8-3.4-2.8S6.9 7.8 6.6 9.4H3.1c-.3 0-.6.3-.6.6s.3.6.6.6h3.5c.3 1.6 1.7 2.8 3.4 2.8s3.1-1.2 3.4-2.8h3.5c.3 0 .6-.3.6-.6s-.3-.6-.6-.6zM10 12.2c-1.2 0-2.2-1-2.2-2.2 0-1.2 1-2.2 2.2-2.2 1.2 0 2.2 1 2.2 2.2 0 1.2-1 2.2-2.2 2.2z"/></svg> <svg version="1.1" id="icon-nobuilds" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 15" xml:space="preserve">
<g id="nobuilds">
<circle cx="7.5" cy="7.5" r="7"/>
</g>
</svg>
{{else}} {{else}}
{{#if isPush}} {{#if isPush}}
<svg viewBox="0 0 20 20"><path fill="#A7AEAE" d="M16.9 9.4h-3.5c-.3-1.6-1.7-2.8-3.4-2.8S6.9 7.8 6.6 9.4H3.1c-.3 0-.6.3-.6.6s.3.6.6.6h3.5c.3 1.6 1.7 2.8 3.4 2.8s3.1-1.2 3.4-2.8h3.5c.3 0 .6-.3.6-.6s-.3-.6-.6-.6zM10 12.2c-1.2 0-2.2-1-2.2-2.2 0-1.2 1-2.2 2.2-2.2 1.2 0 2.2 1 2.2 2.2 0 1.2-1 2.2-2.2 2.2z"/></svg> <svg version="1.1" id="icon-push" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 15" xml:space="preserve">
<g id="push">
<circle cx="7.505" cy="7.354" r="2.854"/>
<line x1="14.5" y1="7.354" x2="10.349" y2="7.354"/>
<line x1="4.651" y1="7.354" x2="0.5" y2="7.354"/>
</g>
</svg>
{{/if}} {{/if}}
{{#if isPR}} {{#if isPR}}
<svg viewBox="0 0 20 20"><g fill="#A7AEAE"><path d="M8 4.5C8 3.1 6.9 2 5.5 2S3 3.1 3 4.5c0 1.1.8 2.1 1.8 2.4v6.5c-1 .3-1.8 1.2-1.8 2.4 0 1.4 1.1 2.5 2.5 2.5S8 17 8 15.7c0-1.1-.8-2.1-1.8-2.4V6.8C7.2 6.6 8 5.6 8 4.5zm-3.7 0c0-.6.5-1.2 1.2-1.2s1.2.5 1.2 1.2-.6 1.1-1.2 1.1-1.2-.5-1.2-1.1zm2.4 11.2c0 .6-.5 1.2-1.2 1.2s-1.2-.5-1.2-1.2.5-1.2 1.2-1.2 1.2.5 1.2 1.2zM15.1 13.3v-6c0-1-.3-1.9-.9-2.4-1-.9-2.4-.8-2.4-.8h-1l1-1c.3-.3.3-.7 0-.9s-.7-.3-.9 0l-2 2c-.1 0-.2.1-.3.2v.4c0 .1.1.2.2.3.3.3.8.9 2 2 .1.1.3.2.5.2s.3-.1.5-.2c.3-.3.3-.7 0-.9l-1-1h1s.9 0 1.5.5c.3.3.5.8.5 1.5v6.1c-1 .3-1.8 1.2-1.8 2.4 0 1.4 1.1 2.5 2.5 2.5S17 17 17 15.7c0-1.2-.8-2.1-1.9-2.4zm-.6 3.5c-.6 0-1.2-.5-1.2-1.2s.5-1.2 1.2-1.2 1.2.5 1.2 1.2-.6 1.2-1.2 1.2z"/></g></svg> <svg version="1.1" id="icon-pullrequest" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 -1 16 17" xml:space="preserve">
<g id="pullrequest">
<circle cx="3.299" cy="2.344" r="1.699"/>
<circle cx="3.299" cy="12.801" r="1.699"/>
<circle cx="11.697" cy="12.801" r="1.699"/>
<line x1="3.299" y1="4.044" x2="3.299" y2="11.102"/>
<path d="M8.752,0.5c0,0-1.946,1.946-1.946,1.975h2.396c0,0,2.483-0.152,2.483,2.462s0,6.143,0,6.143"/>
<path d="M8.752,4.436c0,0-1.946-1.946-1.946-1.975"/>
</g>
</svg>
{{/if}} {{/if}}
{{#if isAPI}} {{#if isAPI}}
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 170.08 170.08"><path fill="#A7AEAE" d="M137.765 132.663H32.315c-6.803 0-12.756-5.953-12.756-13.607V72.284c0-6.803 5.952-13.606 12.755-13.606h2.55v-8.504c0-6.803 5.954-13.606 12.757-13.606h21.26c6.803 0 12.756 5.953 12.756 13.606v8.504h5.103v-8.504c0-6.803 5.954-13.606 12.757-13.606h22.11c6.804 0 12.756 5.953 12.756 13.606v8.504h4.252c6.804 0 12.756 5.953 12.756 13.606v47.622c-1.7 6.804-6.803 12.757-13.605 12.757zm-105.45-62.93s-1.7.85-1.7 2.55v47.623s0 2.552 1.7 2.552h105.45s1.7-.85 1.7-2.552V72.284s0-2.55-1.7-2.55H127.56c-3.4 0-5.102-2.552-5.102-5.104V50.174s0-2.55-1.7-2.55h-22.11s-1.7.85-1.7 2.55V63.78c0 3.4-2.553 5.102-5.105 5.102H75.686c-3.4 0-5.103-2.55-5.103-5.102V50.174s0-2.55-1.7-2.55h-21.26s-1.702.85-1.702 2.55V63.78c0 3.4-2.55 5.102-5.1 5.102h-8.505v.85z"/></svg> <svg version="1.1" id="icon-api" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 15 15" xml:space="preserve">
<g><path id="api" d="M13.676,5.327h-1.153V3.156c0-0.494-0.329-0.906-0.824-0.906H9.147c-0.412,0-0.824,0.412-0.824,0.906 v2.171H6.429V3.156c0-0.494-0.329-0.906-0.824-0.906h-2.47c-0.412,0-0.824,0.412-0.824,0.906v2.171H1.324C0.912,5.327,0.5,5.739,0.5,6.233v5.076c0,0.494,0.329,0.906,0.824,0.906h12.353c0.412,0,0.824-0.412,0.824-0.906V6.233C14.5,5.739,14.171,5.327,13.676,5.327z"/></g> </svg>
{{/if}} {{/if}}
{{/if}} {{/if}}

View File

@ -10,17 +10,7 @@
{{/if}} {{/if}}
<p class="tile-title float-right"> <p class="tile-title float-right">
<span class="icon"> <span class="icon-hash">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 191 20 20" style="enable-background:new -289 191 20 20;" xml:space="preserve">
<path fill="#A5ACAD" class="st0" d="M-272.4,198.4C-272.4,198.4-272.4,198.4-272.4,198.4l-3.4,0l0.3-3.3c0-0.3-0.2-0.6-0.5-0.6
c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.4l-3.2,0l0.3-3.6c0-0.3-0.2-0.6-0.5-0.6c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.7l-3.2,0
c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5c0,0,0,0,0,0l3.1,0l-0.2,2.9l-3.5,0c-0.3,0-0.5,0.2-0.5,0.6c0,0.3,0.2,0.5,0.5,0.5
c0,0,0,0,0,0l3.4,0l-0.3,3.3c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.4l3.2,0l-0.3,3.6
c0,0.3,0.2,0.6,0.5,0.6c0,0,0,0,0,0c0.3,0,0.5-0.2,0.5-0.5l0.3-3.7l3.2,0c0.3,0,0.5-0.2,0.5-0.6c0-0.3-0.2-0.5-0.5-0.5c0,0,0,0,0,0
l-3.1,0l0.2-2.9l3.5,0c0.3,0,0.5-0.2,0.5-0.6C-271.8,198.7-272.1,198.4-272.4,198.4z M-277.2,202.4l-3.2,0l0.2-2.9l3.2,0
L-277.2,202.4z"/>
</svg>
</span> </span>
{{#if job.repo.slug}} {{#if job.repo.slug}}
{{#link-to "job" job.repo job}}<span class="label-align">{{job.number}}</span>{{/link-to}} {{#link-to "job" job.repo job}}<span class="label-align">{{job.number}}</span>{{/link-to}}
@ -28,16 +18,7 @@
</p> </p>
<p> <p>
<span class="icon"> <span class="icon-clock">
<svg version="1.1" id="Layer_1" x="0px" y="0px"
viewBox="-289 191 20 20" style="enable-background:new -289 191 20 20;" xml:space="preserve">
<g>
<path fill="#A5ACAD" class="st0" d="M-278.9,207.7c-3.7,0-6.7-3-6.7-6.7s3-6.7,6.7-6.7s6.7,3,6.7,6.7S-275.2,207.7-278.9,207.7z M-278.9,195.4
c-3.1,0-5.6,2.5-5.6,5.6s2.5,5.6,5.6,5.6c3.1,0,5.6-2.5,5.6-5.6S-275.8,195.4-278.9,195.4z"/>
<path fill="#A5ACAD" class="st0" d="M-276.7,203.1c-0.1,0-0.2,0-0.3-0.1l-2.4-1.5c-0.2-0.1-0.2-0.3-0.2-0.4v-3.8c0-0.3,0.2-0.5,0.5-0.5
s0.5,0.2,0.5,0.5v3.5l2.1,1.4c0.2,0.2,0.3,0.5,0.2,0.7C-276.4,203-276.5,203.1-276.7,203.1z"/>
</g>
</svg>
</span> </span>
<span class="label-align"> <span class="label-align">
Duration: Duration:

View File

@ -1,54 +1,40 @@
{{#if isEmpty}} {{#if isEmpty}}
<svg version="1.1" id="Layer_1" viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve"> <svg version="1.1" id="icon-nobuilds" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 17 17" xml:space="preserve">
<g id="NoBuild"> <g id="nobuilds">
<g> <circle cx="7.5" cy="7.5" r="7"/>
<path fill="#A7AEAE" d="M10,16.2c-3.4,0-6.1-2.8-6.1-6.2S6.6,3.8,10,3.8s6.1,2.8,6.1,6.2S13.4,16.2,10,16.2z M10,5.2 </g>
c-2.7,0-4.9,2.2-4.9,4.8s2.2,4.8,4.9,4.8s4.9-2.2,4.9-4.8S12.7,5.2,10,5.2z"/>
</g>
</g>
</svg> </svg>
{{else}} {{else}}
{{#if hasPassed}} {{#if hasPassed}}
<svg version="1.1" id="Layer_1" x="0px" y="0px" <svg version="1.1" id="icon-passed" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 17 16" xml:space="preserve">
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve"> <g><polyline style="stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;"id="passed" points="14.5,1.5 6.499,13.716 0.5,8.78 "/></g>
<g id="Passed">
<path fill="#A7AEAE" d="M9.6,14.4c-0.1,0-0.3-0.1-0.4-0.1l-4-3.3c-0.3-0.2-0.3-0.6-0.1-0.9S5.8,9.8,6.1,10l3.4,2.8l4.9-7.5
C14.6,5,15,4.9,15.3,5.1c0.3,0.2,0.4,0.6,0.2,0.9l-5.3,8.1C10.1,14.3,9.9,14.4,9.6,14.4C9.7,14.4,9.7,14.4,9.6,14.4z"/>
</g>
</svg> </svg>
{{/if}} {{/if}}
{{#if hasFailed}} {{#if hasFailed}}
<svg version="1.1" id="Layer_1" x="0px" y="0px" <svg version="1.1" id="icon-failed" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 17 17" xml:space="preserve">
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve"> <g id="failed">
<g id="Failed"> <line x1="0.5" y1="0.5" x2="14.5" y2="14.5"/>
<path fill="#A7AEAE" d="M10.9,10l3.9-3.9c0.2-0.2,0.2-0.6,0-0.9c-0.2-0.2-0.6-0.2-0.9,0L10,9.1L6.1,5.2c-0.2-0.2-0.6-0.2-0.9,0 <line x1="14.5" y1="0.5" x2="0.5" y2="14.5"/>
c-0.2,0.2-0.2,0.6,0,0.9L9.1,10l-3.9,3.9c-0.2,0.2-0.2,0.6,0,0.9C5.3,14.9,5.5,15,5.6,15s0.3-0.1,0.4-0.2l3.9-3.9l3.9,3.9 </g>
c0.1,0.1,0.3,0.2,0.4,0.2c0.2,0,0.3-0.1,0.4-0.2c0.2-0.2,0.2-0.6,0-0.9L10.9,10z"/>
</g>
</svg> </svg>
{{/if}} {{/if}}
{{#if wasCanceled}} {{#if wasCanceled}}
<svg version="1.1" id="Layer_1" x="0px" y="0px" <svg version="1.1" id="icon-canceled" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 17 17" xml:space="preserve">
viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve"> <g id="canceled">
<g id="Cancelled"> <line x1="2.542" y1="2.938" x2="12.306" y2="12.551"/>
<path fill="#A7AEAE" d="M10,3.3c-3.7,0-6.6,3-6.6,6.7s3,6.7,6.6,6.7s6.6-3,6.6-6.7S13.7,3.3,10,3.3z M15.4,10 <circle cx="7.5" cy="7.5" r="7"/>
c0,1.3-0.5,2.5-1.3,3.4L6.5,6C7.5,5.2,8.7,4.7,10,4.7C13,4.7,15.4,7,15.4,10z M4.6,10c0-1.2,0.4-2.2,1-3.1l7.5,7.4 </g>
c-0.9,0.7-2,1-3.2,1C7,15.3,4.6,13,4.6,10z"/>
</g>
</svg> </svg>
{{/if}} {{/if}}
{{#if hasErrored}} {{#if hasErrored}}
<svg version="1.1" id="Layer_1" x="0px" y="0px" <svg version="1.1" id="icon-errored" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="-1 -1 16 17" xml:space="preserve">
viewBox="-519 391 20 20" style="enable-background:new -518 391 20 20;" xml:space="preserve"> <g id="errored">
<g> <circle cx="7.5" cy="13.986" r="0.97"/>
<path fill="#A5ACAD" d="M-508.9,403.2c-0.3,0-0.6-0.3-0.6-0.6V395c0-0.3,0.3-0.6,0.6-0.6s0.6,0.3,0.6,0.6v7.6 <line x1="7.5" y1="0.5" x2="7.5" y2="10.646"/>
C-508.2,402.9-508.5,403.2-508.9,403.2z"/> </g>
<circle fill="#A5ACAD" cx="-508.9" cy="406.5" r="1.2"/>
</g>
</svg> </svg>
{{/if}} {{/if}}
@ -58,4 +44,4 @@
<span class="circle"></span> <span class="circle"></span>
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}

View File

@ -1,6 +1,6 @@
<figure class="team-image"> <figure class="team-image">
<img class="front" src="../images/team/team-{{member.image}}.png" alt=""> <img class="front" src="../images/team/team-{{member.image}}.png" alt="{{member.name}}">
<img class="back" src="../images/team/{{member.image}}-animated.gif" alt=""> <img class="back" src="../images/team/{{member.image}}-animated.gif" alt="{{member.name}} gif">
</figure> </figure>
<h3 class="team-name">{{member.name}}</h3> <h3 class="team-name">{{member.name}}</h3>
<p class="team-title">{{member.title}}</p> <p class="team-title">{{member.title}}</p>
@ -8,7 +8,7 @@
<p class="team-handle"><a href="https://twitter.com/{{member.handle}}" title="{{member.name}} on Twitter">@{{member.handle}}</a></p> <p class="team-handle"><a href="https://twitter.com/{{member.handle}}" title="{{member.name}} on Twitter">@{{member.handle}}</a></p>
{{/if}} {{/if}}
<div class="team-flags"> <div class="team-flags">
<img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}"> <img src="../images/pro-landing/flag-{{member.nationality}}.svg" alt="flag {{member.nationality}}" title="is from {{member.nationality}}">
<span class="flag-divider">/</span> <span class="flag-divider">/</span>
<img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}"> <img src="../images/pro-landing/flag-{{member.country}}.svg" alt="flag {{member.country}}" title="lives in {{member.country}}">
</div> </div>

View File

@ -22,9 +22,6 @@
<h2>Add .travis.yml file to your repository</h2> <h2>Add .travis.yml file to your repository</h2>
<p>In order for Travis CI to build your project, you need to tell the systems a little bit about it. You'll need to add a file named .travis.yml to the root of your repository.</p> <p>In order for Travis CI to build your project, you need to tell the systems a little bit about it. You'll need to add a file named .travis.yml to the root of your repository.</p>
<p>If .travis.yml is not in the repository, is misspelled or is not valid YAML, Travis CI will ignore it.</p> <p>If .travis.yml is not in the repository, is misspelled or is not valid YAML, Travis CI will ignore it.</p>
<p class="note note--info">
<strong>Note:</strong> The <code>language</code> value is case-sensitive. If you set <code>language: C</code>, for example, your project will be considered a Ruby project.
</p>
<p>Here you can find some of our basic <a href="http://docs.travis-ci.com/user/language-specific/" title="">language examples</a>.</p> <p>Here you can find some of our basic <a href="http://docs.travis-ci.com/user/language-specific/" title="">language examples</a>.</p>
</div> </div>
</li> </li>

View File

@ -1,252 +1,232 @@
{{#travis-layout layoutName="layouts/landing-page"}} {{#travis-layout layoutName="layouts/landing-page"}}
<div id="landing" class="landing"> <div id="landing" class="landing">
<div class="row hero z-1"> <div class="row hero z-1">
<div class="landing-centered-wrapper"> <section class="landing-centered-wrapper">
<div class="large-12 columns" id="hero-copy"> <div class="large-12 columns" id="hero-copy">
<h1>Test and Deploy with Confidence</h1> <h1>Test and Deploy with Confidence</h1>
<p>Easily sync your GitHub projects with Travis CI<br class="mobile-break"> and youll be testing your code in minutes!</p> <p>Easily sync your GitHub projects with Travis CI<br class="mobile-break"> and youll be testing your code in minutes!</p>
{{#if auth.signedOut}} {{#if auth.signedOut}}
<button {{action "signIn" target="auth"}} class="button"><img src="../images/landing-page/sign-in-mascot.svg" class="sign-in-mascot">Sign Up</button> <button {{action "signIn" target="auth"}} class="button"><img src="../images/landing-page/sign-in-mascot.svg" class="sign-in-mascot">Sign Up</button>
{{/if}} {{/if}}
{{#if auth.signingIn}} {{#if auth.signingIn}}
<button class="button"><span class="loading-indicator--white"><i></i><i></i><i></i></span>Signing In</button> <button class="button"><span class="loading-indicator--white"><i></i><i></i><i></i></span>Signing In</button>
{{/if}} {{/if}}
</div> </div>
<div class="large-12 columns laptop-wrapper"> <div class="large-12 columns laptop-wrapper">
<div id="laptop"> <div id="laptop">
<img src="../images/landing-page/laptop.png"> <img src="../images/landing-page/laptop.png" alt="Travis CI screenshot">
</div> </div>
</div> </div>
</div> </section>
</div>
<div class="row oss-testing">
<section class="landing-centered-wrapper">
<div class="large-12 columns">
<h2>The home of<br class="mobile-break"> open source testing</h2>
<p>Over 300k open source projects<br class="mobile-break"> and 235k users are testing on Travis CI.</p>
<img src="../images/landing-page/customer-numbers.svg" alt="Open source project numbers" class="os-numbers">
</div>
</section>
</div>
<div class="row customers">
<div class="landing-centered-wrapper">
<div class="medium-6 columns">
<img src="../images/landing-page/customers-temp-together.svg" alt="customer logos">
</div>
<div class="medium-6 columns">
<p class="left">Some pretty awesome companies<br> and projects are using us.</p>
</div>
</div>
</div>
<div class="row free-for-oss">
<section class="landing-centered-wrapper">
<div class="large-12 columns">
<h1>Testing your open source<br class="mobile-no-break"> project is 10000% free</h1>
<p><span class="bold-italic">Seriously. Always.</span> We like to think of it as our way of giving<br>back to a community that gives us so much as well.</p>
</div>
</section>
</div>
<div class="row private-repos">
<section class="landing-centered-wrapper">
<div class="medium-6 columns mobile-envelope">
<img src="../images/landing-page/envelope.svg">
</div>
<div class="medium-6 columns">
<div class="landing-vert-center-s">
<h2>Have a private project<br>youd like to test?</h2>
<p>Travis CI for private repositories has<br><a href="http://travis-ci.com/plans" target="_blank">plans</a> for every size project.</p>
</div>
</div>
<div class="medium-6 columns desktop-envelope">
<img src="../images/landing-page/envelope.svg" alt="envelope">
</div>
</section>
</div>
<div class="row features-list">
<section class="landing-centered-wrapper">
<div class="large-6 columns features-callouts">
<div class="landing-vert-center-s">
<div class="medium-6 columns">
<h3 id="f-co-1">Get set up in seconds</h3>
<p>Login with GitHub, tell Travis CI to test a project, and then push to GitHub. Could it be any simpler!</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-2">Multi-language support</h3>
<p>Make sure your code runs against all versions of your favorite language without breaking a sweat.</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-3">Test your pull requests</h3>
<p>Make sure every pull request to your project is tested before merging.</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-4">Deploy to S3 and Heroku</h3>
<p>Updating staging or production as soon as your tests pass has never been easier!</p>
</div>
</div>
</div>
<div class="large-6 columns features-checked">
<h2>Features created to<br class="mobile-break"> help your projects and teams</h2>
<ul>
<li>Watch your tests as they run</li>
<li>Keep your config with your code</li>
<li>Slack, HipChat, Emails and more</li>
<li>A clean VM for every build</li>
<li>Run your tests in parallel</li>
<li>Linux and Mac (and iOS) supported</li>
<li>Great API and command line tool</li>
<li>Did we say free for Open Source already?</li>
</ul>
</div>
</section>
</div>
<div class="row build-flows">
<section class="landing-centered-wrapper">
<div class="large-12 columns">
<h2>Branch build flow</h2>
<div class="branch-bf">
<div class="bf">
<img src="../images/landing-page/push-icon-1.svg" alt="GitHub logo">
<p>You push your<br>code to GitHub</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-2.svg" alt="Trigger build">
<p>GitHub triggers<br>Travis CI to build</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-3.svg" alt="Travis logo">
<p>Hooray!<br>Your build passes!</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-4.svg" alt="Heroku logo">
<p>Travis CI deploys<br>to Heroku</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-5.svg" alt="Slack logo">
<p>Travis CI tells the<br>team all is well</p>
</div>
</div>
<h2 id="pr-bf-margin">Pull request build flow</h2>
<div class="branch-bf">
<div class="bf">
<img src="../images/landing-page/pull-icon-1.svg" alt="PR icon">
<p>A pull request<br>is created</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-2.svg" alt="Check test">
<p>GitHub tells Travis CI the build is mergeable</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-3.svg" alt="Tavis logo">
<p>Hooray!<br>Your build passes!</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-4.svg" alt="Build status">
<p>Travis CI updates the PR that it passed</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-5.svg" alt="Merge icon">
<p>You merge in<br>the PR goodness</p>
</div>
</div>
</div>
</section>
</div>
<div class="row user-testimonials">
<section class="landing-centered-wrapper">
<div class="medium-6 columns">
<h2>Some people have said some pretty nice things about us</h2>
</div>
<div class="medium-6 columns">
<div class="small-3 columns">
<img src="../images/landing-page/dhh.png" class="home-avatar" alt="image DHH">
</div>
<div class="small-9 columns">
<p>Travis CI makes it so much easier for us to coordinate the thousands of commits and contributors that flow through the Rails code base. The test suite for such a large project is vast, and we wouldnt be catching issues as quickly or smoothly without the help of Travis.</p>
<p class="author">David Heinemeier Hansson</p> <img src="../images/landing-page/twitter.svg" class="social"><a href="https://twitter.com/dhh" alt="DHH Twitter" target="_blank">dhh</a>
<p class="title">Creator of Ruby on Rails</p>
</div> </div>
<div class="row oss-testing"> <div class="small-3 columns">
<div class="landing-centered-wrapper"> <img src="../images/landing-page/chris.png" class="home-avatar" alt="image Chris Aniszczyk">
<div class="large-12 columns"> </div>
<h2>The home of<br class="mobile-break"> open source testing</h2> <div class="small-9 columns">
<p>Over 200k open source projects<br class="mobile-break"> and 126k users are testing on Travis CI.</p> <p>We love Travis CI at @TwitterOSS and use it for the majority of our open source projects on GitHub. Travis CI is simple to use, we love their API to build tooling and adore the new container infrastructure for speedier builds.</p>
<img src="../images/landing-page/customer-numbers.svg"> <p class="author">Chris Aniszczyk</p> <img src="../images/landing-page/twitter.svg" class="social"><a href="https://twitter.com/cra" alt="Chris Twitter" target="_blank">cra</a>
</div> <p class="title">Head of Open Source at Twitter</p>
</div>
</div> </div>
<div class="row customers"> <div class="small-3 columns">
<div class="landing-centered-wrapper"> <img src="../images/landing-page/alex.png" class="home-avatar" alt="Alex Gaynor">
<div class="medium-6 columns">
<img src="../images/landing-page/customers-temp-together.svg">
</div>
<div class="medium-6 columns">
<p class="left">Some pretty awesome companies<br> and projects are using us.</p>
</div>
</div>
</div> </div>
<div class="small-9 columns">
<div class="row recent-builds"> <p>Not only is Travis CI the best way to test your software, it is the right way. rm -rf jenkins &amp;&amp; touch .travis.yml</p>
<div class="landing-centered-wrapper"> <p class="author">Alex Gaynor</p> <img src="../images/landing-page/github.svg" class="social"><a href="https://github.com/alex" alt="Alex github" target="_blank">alex</a>
<div class="medium-6 columns recent-builds-text"> <p class="title">PyPy and Python Core Team Member</p>
<div class="landing-vert-center-m">
<h2>Every minute theres<br>a new build being run</h2>
<p>Here are just a few projects<br>currently running on Travis CI</p>
</div>
</div>
<div class="medium-6 columns">
<ul class="landing-rows">
{{#each repos as |repo|}}
{{landing-row repo=repo}}
{{else}}
{{loading-indicator}}
{{/each}}
</ul>
</div>
</div>
</div>
<div class="row free-for-oss">
<div class="landing-centered-wrapper">
<div class="large-12 columns">
<h1>Testing your open source<br class="mobile-no-break"> project is 10000% free</h1>
<p><span class="bold-italic">Seriously. Always.</span> We like to think of it as our way of giving<br>back to a community that gives us so much as well.</p>
</div>
</div>
</div>
<div class="row private-repos">
<div class="landing-centered-wrapper">
<div class="medium-6 columns mobile-envelope">
<img src="../images/landing-page/envelope.svg">
</div>
<div class="medium-6 columns">
<div class="landing-vert-center-s">
<h2>Have a private project<br>youd like to test?</h2>
<p>Travis CI for private repositories has<br><a href="http://travis-ci.com/plans" target="_blank">plans</a> for every size project.</p>
</div>
</div>
<div class="medium-6 columns desktop-envelope">
<img src="../images/landing-page/envelope.svg">
</div>
</div>
</div>
<div class="row features-list">
<div class="landing-centered-wrapper">
<div class="large-6 columns features-callouts">
<div class="landing-vert-center-s">
<div class="medium-6 columns">
<h3 id="f-co-1">Get set up in seconds</h3>
<p>Login with GitHub, tell Travis CI to test a project, and then push to GitHub. Could it be any simpler!</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-2">Multi-language support</h3>
<p>Make sure your code runs against all versions of your favorite language without breaking a sweat.</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-3">Test your pull requests</h3>
<p>Make sure every pull request to your project is tested before merging.</p>
</div>
<div class="medium-6 columns">
<h3 id="f-co-4">Deploy to S3 and Heroku</h3>
<p>Updating staging or production as soon as your tests pass has never been easier!</p>
</div>
</div>
</div>
<div class="large-6 columns features-checked">
<h2>Features created to<br class="mobile-break"> help your projects and teams</h2>
<ul>
<li>Watch your tests as they run</li>
<li>Keep your config with your code</li>
<li>Slack, HipChat, Emails and more</li>
<li>A clean VM for every build</li>
<li>Run your tests in parallel</li>
<li>Linux and Mac (and iOS) supported</li>
<li>Great API and command line tool</li>
<li>Did we say free for Open Source already?</li>
</ul>
</div>
</div>
</div>
<div class="row build-flows">
<div class="landing-centered-wrapper">
<div class="large-12 columns">
<h2>Branch build flow</h2>
<div class="branch-bf">
<div class="bf">
<img src="../images/landing-page/push-icon-1.svg">
<p>You push your<br>code to GitHub</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-2.svg">
<p>GitHub triggers<br>Travis CI to build</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-3.svg">
<p>Hooray!<br>Your build passes!</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-4.svg">
<p>Travis CI deploys<br>to Heroku</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-5.svg">
<p>Travis CI tells the<br>team all is well</p>
</div>
</div>
<h2 id="pr-bf-margin">Pull request build flow</h2>
<div class="branch-bf">
<div class="bf">
<img src="../images/landing-page/pull-icon-1.svg">
<p>A pull request<br>is created</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-2.svg">
<p>GitHub tells Travis CI the build is mergeable</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/push-icon-3.svg">
<p>Hooray!<br>Your build passes!</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-4.svg">
<p>Travis CI updates the PR that it passed</p>
</div>
<div class="divider-line-horizontal">
</div>
<div class="divider-line-vertical">
</div>
<div class="bf">
<img src="../images/landing-page/pull-icon-5.svg">
<p>You merge in<br>the PR goodness</p>
</div>
</div>
</div>
</div>
</div>
<div class="row user-testimonials">
<div class="landing-centered-wrapper">
<div class="medium-6 columns">
<h2>Some people have said some pretty nice things about us</h2>
</div>
<div class="medium-6 columns">
<div class="small-3 columns">
<img src="../images/landing-page/dhh.png" class="home-avatar">
</div>
<div class="small-9 columns">
<p>Travis CI makes it so much easier for us to coordinate the thousands of commits and contributors that flow through the Rails code base. The test suite for such a large project is vast, and we wouldnt be catching issues as quickly or smoothly without the help of Travis.</p>
<p class="author">David Heinemeier Hansson</p> <img src="../images/landing-page/twitter.svg" class="social"><a href="https://twitter.com/dhh" alt="DHH Twitter" target="_blank">dhh</a>
<p class="title">Creator of Ruby on Rails</p>
</div>
<div class="small-3 columns">
<img src="../images/landing-page/chris.png" class="home-avatar">
</div>
<div class="small-9 columns">
<p>We love Travis CI at @TwitterOSS and use it for the majority of our open source projects on GitHub. Travis CI is simple to use, we love their API to build tooling and adore the new container infrastructure for speedier builds.</p>
<p class="author">Chris Aniszczyk</p> <img src="../images/landing-page/twitter.svg" class="social"><a href="https://twitter.com/cra" alt="Chris Twitter" target="_blank">cra</a>
<p class="title">Head of Open Source at Twitter</p>
</div>
<div class="small-3 columns">
<img src="../images/landing-page/alex.png" class="home-avatar">
</div>
<div class="small-9 columns">
<p>Not only is Travis CI the best way to test your software, it is the right way. rm -rf jenkins &amp;&amp; touch .travis.yml</p>
<p class="author">Alex Gaynor</p> <img src="../images/landing-page/github.svg" class="social"><a href="https://github.com/alex" alt="Alex github" target="_blank">alex</a>
<p class="title">PyPy and Python Core Team Member</p>
</div>
</div>
</div>
</div> </div>
</div>
</section>
</div>
</div> </div>
{{/travis-layout}} {{/travis-layout}}

View File

@ -14,13 +14,13 @@
<div class="logos--light"> <div class="logos--light">
<img src="../images/pro-landing/TravisCI-logolockup-spacingexample.svg" alt="Travis CI logo on light background"> <img src="../images/pro-landing/TravisCI-logolockup-spacingexample.svg" alt="Travis CI logo on light background">
</div> </div>
<figcaption class="text-small">Dark logo on light background <a href="images/logos/TravisCI-Full-Color.eps" title="" download="travis-ci-logo-light-bg.eps">.eps</a> or <a href="images/logos/TravisCI-Full-Color.png" title="" download="travis-ci-logo-light-bg.png">.png</a></figcaption> <figcaption class="text-small">Dark logo on light background <a href="images/logos/TravisCI-Full-Color.eps" title="" download="TravisCI-Full-Color.eps">.eps</a> or <a href="images/logos/TravisCI-Full-Color.png" title="" download="TravisCI-Full-Color.png">.png</a></figcaption>
</figure> </figure>
<figure> <figure>
<div class="logos--dark"> <div class="logos--dark">
<img src="../images/pro-landing/TravisCI-logolockup-spacingexample-darkbg.svg" alt="Travis CI logo on dark background"> <img src="../images/pro-landing/TravisCI-logolockup-spacingexample-darkbg.svg" alt="Travis CI logo on dark background">
</div> </div>
<figcaption class="text-small">Light logo on dark background <a href="images/logos/TravisCI-Full-Color.eps" title="" download="travis-ci-logo-dark-bg.eps">.eps</a> or <a href="images/logos/TravisCI-Full-Color.png" title="" download="travis-ci-logo-dark-bg.png">.png</a></figcaption> <figcaption class="text-small">Light logo on dark background <a href="images/logos/TravisCI-Full-Color-light.eps" title="" download="TravisCI-Full-Color-light.eps">.eps</a> or <a href="images/logos/TravisCI-Full-Color-light.png" title="" download="TravisCI-Full-Color-light.png">.png</a></figcaption>
</figure> </figure>
</div> </div>
</div> </div>
@ -46,19 +46,19 @@
<ul class="list--colors"> <ul class="list--colors">
<li> <li>
<div class="colors-sample--teal" aria-hidden="true"></div> <div class="colors-sample--teal" aria-hidden="true"></div>
<p class="text-small"><strong>Turbo Teal</strong> #40A3AD</p> <p class="text-small"><strong>Oxide blue</strong> #3EAAAF</p>
</li> </li>
<li> <li>
<div class="colors-sample--green" aria-hidden="true"></div> <div class="colors-sample--green" aria-hidden="true"></div>
<p class="text-small"><strong>Passing green</strong> #44A662</p> <p class="text-small"><strong>Turf green</strong> #39AA56</p>
</li> </li>
<li> <li>
<div class="colors-sample--yellow" aria-hidden="true"></div> <div class="colors-sample--yellow" aria-hidden="true"></div>
<p class="text-small"><strong>Building yellow</strong> #E5DA3F</p> <p class="text-small"><strong>Canary yellow</strong> #EDDE3F</p>
</li> </li>
<li> <li>
<div class="colors-sample--red" aria-hidden="true"></div> <div class="colors-sample--red" aria-hidden="true"></div>
<p class="text-small"><strong>Failing red</strong> #D94341</p> <p class="text-small"><strong>Brick red</strong> #DB4545</p>
</li> </li>
<li> <li>
<div class="colors-sample--grey" aria-hidden="true"></div> <div class="colors-sample--grey" aria-hidden="true"></div>

View File

@ -11,30 +11,10 @@
</header> </header>
<div class="tabs--owner"> <div class="tabs--owner">
{{!-- <nav class="tabnav tabnav--owner row" role="tablist">
<ul class="tab">
<li role="presentational">{{#link-to 'owner.repositories' owner.login}}All Repositories{{/link-to}}</li>
<li role="presentational">{{#link-to 'owner.running' owner.login}}Running Builds{{/link-to}}</li>
<li role="presentational"><a href="#" title="" role="tab">Members</a></li>
</ul>
</nav> --}}
<div class="tabbody"> <div class="tabbody">
<section role="tabpanel"> <section role="tabpanel">
{{outlet}} {{outlet}}
</section> </section>
{{!-- <section role="tabpanel">
<ul class="memberlist">
<li class="columns small-6 large-4">
<img src="//placehold.it/50x50" alt="">
<div class="memberlist-names">
<h2>Firstname Lastname</h2>
<p>githubhandle</p>
</div>
</li>
</ul>
</section> --}}
</div> </div>
</div> </div>
{{/travis-layout}} {{/travis-layout}}

View File

@ -107,7 +107,7 @@
<p class="faq-text">A build has 120 minutes to run. Should your build take longer, you can split it up using a build matrix.</p> <p class="faq-text">A build has 120 minutes to run. Should your build take longer, you can split it up using a build matrix.</p>
</li> </li>
<li> <li>
<h4 class="h3--red">Can I pay anually?</h4> <h4 class="h3--red">Can I pay annually?</h4>
<p class="faq-text">You most certainly can! When signing up for a subscription, simply select the annual option. You get 1 month for free &mdash; 12 months for the price of 11!</p> <p class="faq-text">You most certainly can! When signing up for a subscription, simply select the annual option. You get 1 month for free &mdash; 12 months for the price of 11!</p>
</li> </li>
<li> <li>

View File

@ -1 +1 @@
{{not-active user=auth.currentUser repo=repo}} {{not-active user=currentUser repo=repo}}

View File

@ -14,7 +14,7 @@
{{#each broadcasts.content as |broadcast|}} {{#each broadcasts.content as |broadcast|}}
<li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li> <li><p><span class="broadcast-status {{broadcast.category}}" title="Transmitted on {{broadcast.updated_at}}"></span> {{{broadcast.message}}} <a {{action 'markBroadcastAsSeen' broadcast}} class="icon-close"></a></p></li>
{{else}} {{else}}
<li><p>There are no broadcasts transmitted</p></li> <li><p>There are no broadcasts</p></li>
{{/each}} {{/each}}
</ul> </ul>
{{/if}} {{/if}}

32
app/utils/permission.js Normal file
View File

@ -0,0 +1,32 @@
var hasPermission = function(user, repoId) {
var id = parseInt(repoId);
var permissions;
if (user) {
if (permissions = user.get('permissions')) {
return permissions.contains(id);
}
}
};
var hasPushPermission = function(user, repoId) {
var id = parseInt(repoId);
var permissions;
if (user) {
if (permissions = user.get('pushPermissions')) {
return permissions.contains(id);
}
}
};
var hasAdminPermission = function(user, repoId) {
var id = parseInt(repoId);
var permissions;
if (user) {
if (permissions = user.get('adminPermissions')) {
return permissions.contains(id);
}
}
};
export {hasPermission, hasPushPermission, hasAdminPermission};

View File

@ -27,7 +27,7 @@ rstStatusImage = (function(url, slug, branch) {
}); });
podStatusImage = (function(url, slug, branch) { podStatusImage = (function(url, slug, branch) {
return "=for HTML <a href=\"" + url + "\"><img src=\"" + (statusImageUrl(slug, branch)) + "\"></a>"; return "=for html <a href=\"" + url + "\"><img src=\"" + (statusImageUrl(slug, branch)) + "\"></a>";
}); });
ccxmlStatusUrl = (function(slug, branch) { ccxmlStatusUrl = (function(slug, branch) {

Some files were not shown because too many files have changed in this diff Show More