Merge branch 'master' into topbar
21
app/components/jobs-item.coffee
Normal file
|
@ -0,0 +1,21 @@
|
|||
`import Ember from 'ember'`
|
||||
`import { colorForState } from 'travis/utils/helpers'`
|
||||
`import { languageConfigKeys } from 'travis/utils/keys-map';`
|
||||
|
||||
JobsItemComponent = Ember.Component.extend
|
||||
tagName: 'li'
|
||||
classNameBindings: ['job.state']
|
||||
classNames: ['tile', 'tile--jobs', 'row']
|
||||
|
||||
languages: (->
|
||||
output = []
|
||||
|
||||
if config = @get('job.config')
|
||||
for key, languageName of languageConfigKeys
|
||||
if version = config[key]
|
||||
output.push(languageName + ': ' + version)
|
||||
|
||||
output.join(' ')
|
||||
).property('job.config')
|
||||
|
||||
`export default JobsItemComponent`
|
11
app/components/jobs-list.coffee
Normal file
|
@ -0,0 +1,11 @@
|
|||
`import Ember from 'ember'`
|
||||
|
||||
JobsListComponent = Ember.Component.extend
|
||||
jobTableId: Ember.computed(->
|
||||
if @get('required')
|
||||
'jobs'
|
||||
else
|
||||
'allowed_failure_jobs'
|
||||
)
|
||||
|
||||
`export default JobsListComponent`
|
|
@ -12,6 +12,11 @@ Controller = Ember.Controller.extend GithubUrlPropertievs,
|
|||
|
||||
currentItemBinding: 'build'
|
||||
|
||||
jobsLoaded: (->
|
||||
if jobs = @get('build.jobs')
|
||||
jobs.everyBy('config')
|
||||
).property('build.jobs.@each.config')
|
||||
|
||||
loading: (->
|
||||
@get('build.isLoading')
|
||||
).property('build.isLoading')
|
||||
|
|
|
@ -8,7 +8,7 @@ Controller = Ember.ArrayController.extend
|
|||
|
||||
init: ->
|
||||
@_super.apply this, arguments
|
||||
@set('flashes', LimitedArray.create(limit: 2, content: []))
|
||||
@set('flashes', LimitedArray.create(limit: 1, content: []))
|
||||
|
||||
model: (->
|
||||
broadcasts = @get('unseenBroadcasts')
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
`import Ember from 'ember'`
|
||||
|
||||
Controller = Ember.ArrayController.extend
|
||||
isLoaded: false
|
||||
content: (->
|
||||
@store.filter 'job', {}, (job) ->
|
||||
result = @store.filter('job', {}, (job) ->
|
||||
['created', 'queued'].indexOf(job.get('state')) != -1
|
||||
)
|
||||
result.then =>
|
||||
@set('isLoaded', true)
|
||||
result
|
||||
).property()
|
||||
|
||||
`export default Controller`
|
||||
|
|
|
@ -7,6 +7,19 @@ Controller = Ember.ArrayController.extend
|
|||
activate: (name) ->
|
||||
@activate(name)
|
||||
|
||||
showRunningJobs: ->
|
||||
@activate('running')
|
||||
|
||||
showMyRepositories: ->
|
||||
# this is a bit of a hack. I don't want to switch URL for 'running'
|
||||
# so depending on current state I'm either just switching back or
|
||||
# redirecting
|
||||
if @get('tab') == 'running'
|
||||
@activate('owned')
|
||||
else
|
||||
@transitionToRoute('main.repositories')
|
||||
|
||||
|
||||
tabOrIsLoadedDidChange: (->
|
||||
@possiblyRedirectToGettingStartedPage()
|
||||
).observes('isLoaded', 'tab', 'length')
|
||||
|
@ -17,7 +30,7 @@ Controller = Ember.ArrayController.extend
|
|||
@container.lookup('router:main').send('redirectToGettingStarted')
|
||||
|
||||
isLoadedBinding: 'content.isLoaded'
|
||||
needs: ['currentUser', 'repo']
|
||||
needs: ['currentUser', 'repo', 'runningJobs', 'queue']
|
||||
currentUserBinding: 'controllers.currentUser'
|
||||
selectedRepo: (->
|
||||
# we need to observe also repo.content here, because we use
|
||||
|
@ -26,6 +39,11 @@ Controller = Ember.ArrayController.extend
|
|||
@get('controllers.repo.repo.content') || @get('controllers.repo.repo')
|
||||
).property('controllers.repo.repo', 'controllers.repo.repo.content')
|
||||
|
||||
startedJobsCount: Ember.computed.alias('controllers.runningJobs.length')
|
||||
allJobsCount: (->
|
||||
@get('startedJobsCount') + @get('controllers.queue.length')
|
||||
).property('startedJobsCount', 'controllers.queue.length')
|
||||
|
||||
init: ->
|
||||
@_super.apply this, arguments
|
||||
if !Ember.testing
|
||||
|
@ -57,6 +75,8 @@ Controller = Ember.ArrayController.extend
|
|||
viewOwned: ->
|
||||
@set('content', @get('userRepos'))
|
||||
|
||||
viewRunning: ->
|
||||
|
||||
userRepos: (->
|
||||
if login = @get('currentUser.login')
|
||||
Repo.accessibleBy(@store, login)
|
||||
|
@ -91,4 +111,8 @@ Controller = Ember.ArrayController.extend
|
|||
'Could not find any repos'
|
||||
).property('tab')
|
||||
|
||||
showRunningJobs: (->
|
||||
@get('tab') == 'running'
|
||||
).property('tab')
|
||||
|
||||
`export default Controller`
|
||||
|
|
|
@ -1,9 +1,23 @@
|
|||
`import Ember from 'ember'`
|
||||
|
||||
Controller = Ember.ArrayController.extend
|
||||
init: ->
|
||||
@_super.apply this, arguments
|
||||
if !Ember.testing
|
||||
Visibility.every @config.intervals.updateTimes, @updateTimes.bind(this)
|
||||
|
||||
updateTimes: ->
|
||||
if content = @get('content')
|
||||
content.forEach (job) -> job.updateTimes()
|
||||
|
||||
isLoaded: false
|
||||
content: (->
|
||||
@store.filter 'job', { state: 'started' }, (job) ->
|
||||
result = @store.filter('job', { state: 'started' }, (job) ->
|
||||
['started', 'received'].indexOf(job.get('state')) != -1
|
||||
)
|
||||
result.then =>
|
||||
@set('isLoaded', true)
|
||||
result
|
||||
).property()
|
||||
|
||||
`export default Controller`
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
`import Ember from 'ember'`
|
||||
|
||||
Controller = Ember.ArrayController.extend
|
||||
init: ->
|
||||
@_super.apply this, arguments
|
||||
@tickables = []
|
||||
|
||||
tips: [
|
||||
"Did you know that you can parallelize tests on Travis CI? <a href=\"http://docs.travis-ci.com/user/speeding-up-the-build/#Paralellizing-your-build-on-one-VM?utm_source=tips\">Learn more</a>"
|
||||
"Did you know that you can split a build into several smaller pieces? <a href=\"http://docs.travis-ci.com/user/speeding-up-the-build/#Parallelizing-your-builds-across-virtual-machines?utm_source=tips\">Learn more</a>"
|
||||
"Did you know that you can skip a build? <a href=\"http://docs.travis-ci.com/user/how-to-skip-a-build/?utm_source=tips\">Learn more</a>"
|
||||
]
|
||||
|
||||
tip: (->
|
||||
if tips = @get('tips')
|
||||
tips[Math.floor(Math.random()*tips.length)]
|
||||
).property().volatile()
|
||||
|
||||
`export default Controller`
|
|
@ -10,7 +10,7 @@
|
|||
@import "app/auth";
|
||||
@import "app/caches";
|
||||
@import "app/charm";
|
||||
@import "app/flash";
|
||||
// @import "app/flash";
|
||||
@import "app/forms";
|
||||
@import "app/getting_started";
|
||||
@import "app/github";
|
||||
|
@ -21,24 +21,19 @@
|
|||
@import "app/main/annotations";
|
||||
@import "app/main/list";
|
||||
@import "app/main/log";
|
||||
// @import "app/main/repository";
|
||||
@import "app/main/sponsors";
|
||||
// @import "app/main/summary";
|
||||
// @import "app/main/tools";
|
||||
@import "app/main";
|
||||
@import "app/maximize";
|
||||
// @import "app/maximize";
|
||||
@import "app/misc";
|
||||
@import "app/popup";
|
||||
@import "app/pro";
|
||||
@import "app/profile/hooks";
|
||||
@import "app/profile";
|
||||
@import "app/requests";
|
||||
@import "app/right/lists";
|
||||
@import "app/right/sponsors";
|
||||
@import "app/right";
|
||||
// @import "app/right/lists";
|
||||
// @import "app/right/sponsors";
|
||||
// @import "app/right";
|
||||
@import "app/settings";
|
||||
// @import "app/stats";
|
||||
// @import "app/status";
|
||||
@import "app/tabs";
|
||||
@import "app/tipsy";
|
||||
|
||||
|
@ -54,6 +49,7 @@
|
|||
@import "app/modules/dropdown";
|
||||
@import "app/modules/tabs";
|
||||
@import "app/modules/tooltips";
|
||||
@import "app/modules/flash";
|
||||
|
||||
@import "app/layout";
|
||||
@import "app/layouts/dashboard";
|
||||
|
|
|
@ -41,49 +41,25 @@
|
|||
.wrapper
|
||||
overflow: hidden
|
||||
#main,
|
||||
#left,
|
||||
#right
|
||||
#left
|
||||
margin-bottom: -99999px
|
||||
padding-bottom: 100034px
|
||||
|
||||
@media #{$medium-up}
|
||||
|
||||
// layout magic http://lea.verou.me/2011/01/styling-children-based-on-their-number-with-css3/
|
||||
.wrapper-main
|
||||
overflow: hidden
|
||||
& > div:first-child:nth-last-child(2)
|
||||
width: grid-calc(20, 24)
|
||||
float: left
|
||||
|
||||
& > div:first-child:nth-last-child(2) ~ div
|
||||
width: grid-calc(4, 24)
|
||||
max-width: 180px
|
||||
float: right
|
||||
|
||||
.maximized
|
||||
.wrapper-main
|
||||
& > div:first-child:nth-last-child(2)
|
||||
width: grid-calc(24, 24)
|
||||
float: none
|
||||
|
||||
& > div:first-child:nth-last-child(2) ~ div
|
||||
display: none
|
||||
|
||||
@media #{$large-up}
|
||||
|
||||
#left, #right, .wrapper-main
|
||||
min-height: 100vh
|
||||
|
||||
#left
|
||||
width: grid-calc(5, 24)
|
||||
width: grid-calc(6, 24)
|
||||
float: left
|
||||
margin-left: -100%
|
||||
max-width: 325px
|
||||
|
||||
.wrapper-main
|
||||
width: grid-calc(19, 24)
|
||||
width: grid-calc(18, 24)
|
||||
float: left
|
||||
margin-left: grid-calc(5, 24)
|
||||
margin-left: grid-calc(6, 24)
|
||||
overflow: visible
|
||||
|
||||
@media #{$xlarge-up}
|
||||
|
@ -120,56 +96,56 @@
|
|||
a
|
||||
margin-left: 5px
|
||||
|
||||
@media screen and (max-width: 1400px)
|
||||
#left .duration_label
|
||||
display: inline-block
|
||||
width: 11px
|
||||
height: 11px
|
||||
margin-right: 1px
|
||||
text-indent: 10px
|
||||
overflow: hidden
|
||||
background: inline-image('ui/clock.svg') no-repeat 0px 0px
|
||||
background-size: contain
|
||||
// @media screen and (max-width: 1400px)
|
||||
// #left .duration_label
|
||||
// display: inline-block
|
||||
// width: 11px
|
||||
// height: 11px
|
||||
// margin-right: 1px
|
||||
// text-indent: 10px
|
||||
// overflow: hidden
|
||||
// background: inline-image('ui/clock.svg') no-repeat 0px 0px
|
||||
// background-size: contain
|
||||
|
||||
@media screen and (max-width: 1400px)
|
||||
#left .finished_at_label
|
||||
display: none
|
||||
// @media screen and (max-width: 1400px)
|
||||
// #left .finished_at_label
|
||||
// display: none
|
||||
|
||||
@media screen and (max-width: 1400px)
|
||||
table#builds .committer
|
||||
display: none
|
||||
// @media screen and (max-width: 1400px)
|
||||
// table#builds .committer
|
||||
// display: none
|
||||
|
||||
@media handheld, only screen and (max-device-width: 980px)
|
||||
#left
|
||||
display: none
|
||||
#main
|
||||
min-width: 99%
|
||||
max-width: 99%
|
||||
padding: 0px
|
||||
// @media handheld, only screen and (max-device-width: 980px)
|
||||
// #left
|
||||
// display: none
|
||||
// #main
|
||||
// min-width: 99%
|
||||
// max-width: 99%
|
||||
// padding: 0px
|
||||
|
||||
.tabs
|
||||
margin-top: 5px
|
||||
// .tabs
|
||||
// margin-top: 5px
|
||||
|
||||
p.description
|
||||
margin: 5px 0px
|
||||
// p.description
|
||||
// margin: 5px 0px
|
||||
|
||||
#repo
|
||||
padding: 15px 10px
|
||||
width: 95%
|
||||
// #repo
|
||||
// padding: 15px 10px
|
||||
// width: 95%
|
||||
|
||||
#top
|
||||
width: 100%
|
||||
min-width: 960px
|
||||
#tools
|
||||
display: none
|
||||
// #top
|
||||
// width: 100%
|
||||
// min-width: 960px
|
||||
// #tools
|
||||
// display: none
|
||||
|
||||
a
|
||||
text-decoration : none
|
||||
// a
|
||||
// text-decoration : none
|
||||
|
||||
.application,
|
||||
.dashboard
|
||||
height: 100%
|
||||
// .application,
|
||||
// .dashboard
|
||||
// height: 100%
|
||||
|
||||
|
||||
.no-padding
|
||||
padding : 0
|
||||
// .no-padding
|
||||
// padding : 0
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
p
|
||||
white-space: normal
|
||||
a
|
||||
color: $grey1
|
||||
color: $grey2
|
||||
.tile-status--job
|
||||
width: 2em
|
||||
|
||||
|
@ -120,4 +120,8 @@
|
|||
@include colorJobs($created-color, #f4efd8)
|
||||
|
||||
.is-empty
|
||||
opacity: .3
|
||||
opacity: .5
|
||||
|
||||
.jobs-list
|
||||
@include resetul
|
||||
|
||||
|
|
|
@ -23,7 +23,8 @@ $sb-font-size: 14px
|
|||
@include colorSidebarTiles($pass-color)
|
||||
&.started,
|
||||
&.created,
|
||||
&.received
|
||||
&.received,
|
||||
&.queued
|
||||
@include colorSidebarTiles($created-color)
|
||||
|
||||
h2, p
|
||||
|
@ -60,10 +61,11 @@ $sb-font-size: 14px
|
|||
border-bottom: solid 2px $sb-grey
|
||||
width: 90%
|
||||
margin: auto
|
||||
ul
|
||||
height: 1.7em
|
||||
li.float-right
|
||||
padding-right: 0
|
||||
|
||||
.active a:after,
|
||||
a:hover:after
|
||||
bottom: -4px
|
||||
|
||||
.icon--plus
|
||||
&:after
|
||||
transform: translateX(35%)
|
||||
|
@ -73,14 +75,37 @@ $sb-font-size: 14px
|
|||
.icon--plus:after
|
||||
color: $teal1
|
||||
&:after
|
||||
bottom: 0.05em
|
||||
bottom: 0
|
||||
|
||||
@media (min-width: #{lower-bound($large-range)})
|
||||
ul
|
||||
height: 1.7em
|
||||
li
|
||||
padding-right: 1em
|
||||
|
||||
@media #{$xxlarge-up}
|
||||
li
|
||||
padding-right: 2em
|
||||
|
||||
@media (max-width: #{lower-bound($large-range)})
|
||||
li
|
||||
display: block !important
|
||||
float: none
|
||||
a
|
||||
padding: 0 0 .35em
|
||||
margin-bottom: .8em
|
||||
|
||||
|
||||
.sidebar-list
|
||||
margin-top: 1.4rem
|
||||
color: $grey1
|
||||
ul
|
||||
@include resetul
|
||||
border-bottom: .46rem solid #FAF9F7
|
||||
background-color: #FAF9F7
|
||||
|
||||
|
||||
.sidebar-seperator
|
||||
width: 90%
|
||||
margin: 1rem auto
|
||||
border: none
|
||||
border-bottom: solid 2px #f2f2f2
|
||||
|
|
|
@ -1,94 +0,0 @@
|
|||
|
||||
// #repo
|
||||
// position: relative
|
||||
// width: 100%
|
||||
// overflow-x: hidden
|
||||
// padding: 1px 0 0 10px
|
||||
|
||||
// h3
|
||||
// margin-right: 5px
|
||||
|
||||
// .status-image
|
||||
// display: inline-block
|
||||
// position: relative
|
||||
// width: 90px
|
||||
// height: 25px
|
||||
// vertical-align: top
|
||||
|
||||
// a#status-image-popup
|
||||
// display: inline-block
|
||||
// opacity: 1.0
|
||||
// img
|
||||
// border: none
|
||||
|
||||
// .github-icon
|
||||
// width: 21px
|
||||
// height: 21px
|
||||
// display: inline-block
|
||||
// position: relative
|
||||
// vertical-align: top
|
||||
// img
|
||||
// opacity: 0.65
|
||||
|
||||
// .not-found
|
||||
// display: block
|
||||
// padding: 10px 5px
|
||||
// font-size: 12px
|
||||
|
||||
// .description, .language
|
||||
// font-weight: normal
|
||||
// font-size: 15px
|
||||
|
||||
// .description
|
||||
// margin: 10px 0 35px 0
|
||||
// color: #9ca0a7
|
||||
|
||||
// .language
|
||||
// display: none
|
||||
// padding-right: 5px
|
||||
// color: #666a72
|
||||
|
||||
// .github-stats
|
||||
// position: absolute
|
||||
// top: 15px
|
||||
// right: 10px
|
||||
// > *
|
||||
// float: left
|
||||
// a
|
||||
// height: 16px
|
||||
// display: block
|
||||
// font-size: $font-size-smaller
|
||||
// font-weight: bold
|
||||
// text-decoration: none
|
||||
// margin-left: 10px
|
||||
// padding-left: 20px
|
||||
// background: no-repeat 0px 2px
|
||||
// color: $color-text-light
|
||||
// &.watchers
|
||||
// background-image: inline-image('ui/github-watchers.png')
|
||||
// &.forks
|
||||
// background-image: inline-image('ui/github-forks.png')
|
||||
|
||||
// .tab dd
|
||||
// a[href^="https://github.com"],
|
||||
// a[href^="http://github.com"],
|
||||
// a[href^="https://www.github.com"],
|
||||
// a[href^="http://www.github.com"]
|
||||
// &:hover
|
||||
// background: transparent url(/images/icons/github.png) center right no-repeat
|
||||
// background-size: 12px
|
||||
// opacity: 1
|
||||
// padding-right: 16px
|
||||
|
||||
|
||||
// @media #{$large-up}
|
||||
// h3
|
||||
// display: inline-block
|
||||
// .github-icon
|
||||
// display: inline-block
|
||||
// top: 17px
|
||||
// margin-right: 1em
|
||||
// .status-image
|
||||
// top: 18px
|
||||
|
||||
|
|
@ -1,241 +0,0 @@
|
|||
|
||||
.green .build-status
|
||||
background:
|
||||
color: #549e54
|
||||
image: inline-image('icons/state-passed-white.svg')
|
||||
|
||||
.yellow .build-status
|
||||
background:
|
||||
color: #bcaf39
|
||||
image: inline-image('icons/state-pending-white.svg')
|
||||
|
||||
.red .build-status
|
||||
background:
|
||||
color: #b54223
|
||||
image: inline-image('icons/state-failed-white.svg')
|
||||
|
||||
.gray .build-status
|
||||
background:
|
||||
color: #a8a8a9
|
||||
image: inline-image('icons/state-errored-white.svg')
|
||||
|
||||
.build-status
|
||||
background-size: 14px 14px
|
||||
background-position: 12px 12px
|
||||
background-repeat: no-repeat
|
||||
|
||||
#new-summary
|
||||
@include clearfix
|
||||
border-radius: 4px
|
||||
padding: 0 11px 0 51px
|
||||
position: relative
|
||||
min-height: 155px
|
||||
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mN4/+HDfwAJcAPPMJixRQAAAABJRU5ErkJggg=='), #fafafa
|
||||
background-size: 41px 100%
|
||||
background-repeat: no-repeat
|
||||
|
||||
@media #{$large-up}
|
||||
padding-right: 240px
|
||||
|
||||
.mainline
|
||||
display: -webkit-flex
|
||||
display: flex
|
||||
width: 100%
|
||||
-webkit-flex-wrap: wrap
|
||||
flex-wrap: wrap
|
||||
margin: 0 auto
|
||||
-webkit-align-items: flex-start
|
||||
align-items: flex-start
|
||||
|
||||
.request-kind
|
||||
opacity: 0.55
|
||||
position: absolute
|
||||
top: 15px
|
||||
left: 11px
|
||||
background-size: contain
|
||||
background-repeat: no-repeat
|
||||
height: 21px
|
||||
width: 21px
|
||||
|
||||
&.push
|
||||
background-image: inline-image('icons/push.svg')
|
||||
|
||||
&.pull_request
|
||||
background-image: inline-image('icons/pull-request.svg')
|
||||
|
||||
.branch
|
||||
margin-right: 5px
|
||||
font-weight: bold
|
||||
color: #6c878e
|
||||
font-size: 16px
|
||||
max-width: 300px
|
||||
margin-top: 10px
|
||||
overflow: hidden
|
||||
white-space: nowrap
|
||||
|
||||
.subject
|
||||
font-size: 15px
|
||||
color: #6c878e
|
||||
margin-top: 12px
|
||||
overflow: hidden
|
||||
margin-right: 2px
|
||||
line-height: 20px
|
||||
word-wrap: break-word
|
||||
padding-left: 0.55em
|
||||
text-indent: -0.55em
|
||||
|
||||
.body
|
||||
display: block
|
||||
font-size: 12px
|
||||
font-family: Monaco, 'Liberation Mono', Courier, monospace
|
||||
margin-bottom: 3.5em
|
||||
margin-top: 17px
|
||||
overflow: hidden
|
||||
word-break: break-word
|
||||
white-space: pre-wrap
|
||||
|
||||
a
|
||||
text-decoration: underline
|
||||
|
||||
.build-status
|
||||
border-radius: 4px
|
||||
color: white
|
||||
padding: 8px 0
|
||||
font-size: 16px
|
||||
text-align: left
|
||||
padding-left: 10px
|
||||
|
||||
a
|
||||
color: white
|
||||
padding-left: 21px
|
||||
|
||||
.runtime
|
||||
background-image: inline-image('icons/run-time.svg')
|
||||
|
||||
.finished
|
||||
background-image: inline-image('icons/finished.svg')
|
||||
|
||||
.tags
|
||||
background-image: inline-image('icons/tags.svg')
|
||||
|
||||
.commit-changes
|
||||
background-image: inline-image('icons/github.svg')
|
||||
|
||||
.runtime
|
||||
margin-top: 5px
|
||||
|
||||
.runtime, .finished, .tags, .commit-changes
|
||||
background-position: left center
|
||||
background-repeat: no-repeat
|
||||
background-size: 14px 14px
|
||||
padding-left: 20px
|
||||
font-size: 13px
|
||||
display: block
|
||||
width: 100%
|
||||
height: 24px
|
||||
text-align: left
|
||||
line-height: 24px
|
||||
margin-left: 12px
|
||||
|
||||
.commit-changes
|
||||
div
|
||||
display: inline
|
||||
clear: none
|
||||
height: 24px
|
||||
|
||||
a
|
||||
text-overflow: ellipsis
|
||||
white-space: nowrap
|
||||
overflow: hidden
|
||||
display: inline-block
|
||||
max-width: 175px
|
||||
line-height: 24px
|
||||
color: $color-link
|
||||
|
||||
.right
|
||||
font-size: 11px
|
||||
|
||||
color: $color-link
|
||||
a:hover
|
||||
text-decoration: underline
|
||||
|
||||
@media #{$large-up}
|
||||
position: absolute
|
||||
top: 10px
|
||||
right: 10px
|
||||
width: 220px
|
||||
|
||||
.footer
|
||||
a
|
||||
color: #818181
|
||||
text-decoration: underline
|
||||
|
||||
img
|
||||
vertical-align: middle
|
||||
border-radius: 100px
|
||||
|
||||
.text
|
||||
line-height: 15px
|
||||
display: inline-block
|
||||
position: relative
|
||||
top: 2px
|
||||
font-size: $font-size-small
|
||||
|
||||
.author
|
||||
float: left
|
||||
margin-top: 10px
|
||||
position: absolute
|
||||
bottom: 9px
|
||||
left: 48px
|
||||
|
||||
div
|
||||
display: inline
|
||||
clear: none
|
||||
color: #818181
|
||||
|
||||
img
|
||||
height: 16px
|
||||
width: 16px
|
||||
margin-right: 4px
|
||||
margin-left: 2px
|
||||
|
||||
#summary
|
||||
margin: 0 0 0 12px
|
||||
@include clearfix
|
||||
|
||||
.left,
|
||||
.right
|
||||
float: left
|
||||
|
||||
a
|
||||
text-decoration: underline
|
||||
|
||||
dt, dd
|
||||
float: left
|
||||
min-height: 25px
|
||||
margin: 0
|
||||
dt
|
||||
clear: left
|
||||
width: 90px
|
||||
dd
|
||||
width: 150px
|
||||
white-space: nowrap
|
||||
> dd
|
||||
width: 80%
|
||||
min-width: 315px
|
||||
overflow: hidden
|
||||
text-overflow: ellipsis
|
||||
white-space: nowrap
|
||||
|
||||
.message
|
||||
white-space: normal
|
||||
min-width: 0
|
||||
|
||||
pre
|
||||
font-size: 12px
|
||||
display: inline-block
|
||||
width: 100%
|
||||
line-height: 18px
|
||||
margin-bottom: 0
|
||||
font-family: Monaco, 'Liberation Mono', Courier, monospace
|
|
@ -1,138 +0,0 @@
|
|||
|
||||
#tools
|
||||
position: relative
|
||||
margin-top: 5px
|
||||
|
||||
& > a.menu-popup-button
|
||||
display: inline-block
|
||||
text-align: left
|
||||
color: #fff
|
||||
font-size: 13px
|
||||
padding: 3px 24px 3px 25px
|
||||
background-image: inline-image('icons/settings.svg'), inline-image('icons/dropdown-arrow-white.svg')
|
||||
background-size: 14px 14px, 8px 8px
|
||||
background-position: 6px 7px, right 9px center
|
||||
background-color: #a6adad
|
||||
background-repeat: no-repeat
|
||||
border-radius: 4px
|
||||
cursor: pointer
|
||||
img
|
||||
width: 7px
|
||||
padding-left: 10px
|
||||
|
||||
.menu
|
||||
@include resetul
|
||||
@include border-bottom-radius(4px)
|
||||
margin-top: 1px
|
||||
z-index: 1000
|
||||
display: none
|
||||
position: absolute
|
||||
width: 140px
|
||||
background-color: #a6adad
|
||||
a
|
||||
display: block
|
||||
color: $white
|
||||
font-size: $font-size-small
|
||||
padding: 5px 25px 5px 25px
|
||||
&:hover:not(.disabled)
|
||||
background-color: #909393
|
||||
&:last-child
|
||||
@include border-bottom-radius(4px)
|
||||
&.disabled
|
||||
cursor: default
|
||||
color: $color-link-disabled
|
||||
|
||||
@media screen and (min-width: 46em)
|
||||
position: relative
|
||||
top: 2px
|
||||
width: 600px
|
||||
float: right
|
||||
& > a.menu-popup-button
|
||||
margin-top: -37px
|
||||
float: right
|
||||
.menu
|
||||
right: 0
|
||||
top: -8px
|
||||
margin-top: 0
|
||||
|
||||
#code-climate
|
||||
a
|
||||
text-decoration: underline
|
||||
font-weight: bold
|
||||
|
||||
img
|
||||
&#code-climate-logo
|
||||
float: right
|
||||
width: 150px
|
||||
margin-top: 5px
|
||||
margin-right: 10px
|
||||
|
||||
#actions
|
||||
text-align: right
|
||||
|
||||
ul
|
||||
@include resetul
|
||||
li
|
||||
display: inline
|
||||
|
||||
@media #{$medium-up}
|
||||
float: right
|
||||
position: relative
|
||||
top: 1.8em
|
||||
ul
|
||||
margin-top: -21px
|
||||
|
||||
li.restart-build a, li.restart-job a
|
||||
background-image: inline-image('icons/repeat.svg')
|
||||
|
||||
li.cancel-build a, li.cancel-job a
|
||||
background-image: inline-image('icons/off.svg')
|
||||
|
||||
li.code-climate a
|
||||
background-image: inline-image('icons/code-climate-icon.svg')
|
||||
|
||||
li.icon
|
||||
span.loading
|
||||
background: inline-image('ui/round-spinner.svg') no-repeat
|
||||
background-size: 17px 17px
|
||||
display: inline-block
|
||||
height: 28px
|
||||
width: 28px
|
||||
position: relative
|
||||
top: -7px
|
||||
cursor: pointer
|
||||
color: #ffffff
|
||||
background-color: #5e869a
|
||||
text-align: center
|
||||
border-radius: 50%
|
||||
background-position: center center
|
||||
|
||||
a
|
||||
text-indent: -9999px
|
||||
display: inline-block
|
||||
width: 28px
|
||||
height: 28px
|
||||
position: relative
|
||||
top: -7px
|
||||
cursor: pointer
|
||||
color: #fef4e9
|
||||
border-radius: 50%
|
||||
background-color: #5e869a
|
||||
background-size: 16px 16px
|
||||
background-position: center center
|
||||
background-repeat: no-repeat
|
||||
text-align: center
|
||||
|
||||
img
|
||||
width: 16px
|
||||
height: 16px
|
||||
margin-top: 6px
|
||||
margin-left: 0px
|
||||
|
||||
&:hover
|
||||
opacity: 1.0
|
||||
|
||||
&.disabled
|
||||
opacity: 0.6
|
||||
display: none
|
||||
visibility: hidden
|
|
@ -18,7 +18,7 @@
|
|||
width: 20px
|
||||
height: 20px
|
||||
border-bottom-left-radius: 4px
|
||||
display: block
|
||||
// display: block
|
||||
|
||||
&:hover
|
||||
background-color: $color-border-slider-hover
|
||||
|
|
52
app/styles/app/modules/flash.sass
Normal file
|
@ -0,0 +1,52 @@
|
|||
.flash
|
||||
@include resetul
|
||||
font-size: 18px
|
||||
text-align: center
|
||||
li
|
||||
opacity: 0
|
||||
position: relative
|
||||
max-height: 3.5rem
|
||||
height: 0
|
||||
animation: comeIn 7s 1 ease
|
||||
|
||||
.close
|
||||
@extend .icon
|
||||
position: absolute
|
||||
top: 1em
|
||||
right: 1em
|
||||
width: 1.1rem
|
||||
height: 1.1rem
|
||||
|
||||
p
|
||||
padding: .7em 0
|
||||
margin: 0
|
||||
|
||||
.success,
|
||||
.notice
|
||||
color: #3ba85b
|
||||
background-color: #deebdd
|
||||
.close
|
||||
@extend .icon--dismiss-green
|
||||
|
||||
.error
|
||||
color: #de4248
|
||||
background-color: #f1b6ad
|
||||
.close
|
||||
@extend .icon--dismiss-red
|
||||
|
||||
@keyframes comeIn
|
||||
0%
|
||||
opacity: 1
|
||||
height: 0
|
||||
top: -10em
|
||||
5%
|
||||
height: 3.5rem
|
||||
top: 0
|
||||
95%
|
||||
height: 3.5rem
|
||||
opacity: 1
|
||||
99%
|
||||
height: 3.5em
|
||||
100%
|
||||
height: 0
|
||||
opacity: 0
|
|
@ -14,6 +14,10 @@
|
|||
.icon--clock
|
||||
background-image: inline-image('svg/duration-icon.svg')
|
||||
|
||||
.icon-clock-dark,
|
||||
.icon--clock-dark
|
||||
background-image: inline-image('svg/duration-icon-dark2.svg')
|
||||
|
||||
.icon-github,
|
||||
.icon--github
|
||||
background-image: inline-image('svg/commit-icon.svg')
|
||||
|
@ -29,6 +33,10 @@
|
|||
.icon--hash
|
||||
background-image: inline-image('svg/build-number-icon.svg')
|
||||
|
||||
.icon-hash-dark,
|
||||
.icon--hash-dark
|
||||
background-image: inline-image('svg/build-number-icon-dark2.svg')
|
||||
|
||||
.icon-cog,
|
||||
.icon--cog
|
||||
background-image: inline-image('icons/settings.svg')
|
||||
|
@ -87,7 +95,7 @@
|
|||
|
||||
|
||||
.icon--env
|
||||
background-image: inline-image('svg/icon-environment.svg')
|
||||
background-image: inline-image('svg/icon-environment-dark2.svg')
|
||||
.icon--cross-red,
|
||||
.icon--job.failed
|
||||
background-image: inline-image('svg/icon-job-failed.svg')
|
||||
|
@ -107,14 +115,14 @@
|
|||
background-image: inline-image('svg/icon-job-canceled.svg')
|
||||
|
||||
.icon--lang
|
||||
background-image: inline-image('svg/icon-language.svg')
|
||||
background-image: inline-image('svg/icon-language-dark2.svg')
|
||||
.icon--linux,
|
||||
.icon.linux
|
||||
background-image: inline-image('svg/icon-linux.svg')
|
||||
background-image: inline-image('svg/icon-linux-dark2.svg')
|
||||
.icon--mac,
|
||||
.icon.mac
|
||||
.icon.osx
|
||||
background-image: inline-image('svg/icon-mac.svg')
|
||||
background-image: inline-image('svg/icon-mac-dark2.svg')
|
||||
.icon--eye
|
||||
background-image: inline-image('svg/icon-showmore.svg')
|
||||
.icon--question
|
||||
|
@ -127,6 +135,12 @@
|
|||
.icon--search
|
||||
background-image: inline-image('svg/search.svg')
|
||||
|
||||
.icon--dismiss-green
|
||||
background-image: inline-image('svg/icon-success-dismiss.svg')
|
||||
.icon--dismiss-red
|
||||
background-image: inline-image('svg/icon-error-dismiss.svg')
|
||||
|
||||
|
||||
.icon--plus
|
||||
&:after
|
||||
content: "+"
|
||||
|
|
|
@ -5,4 +5,4 @@
|
|||
background-color: $white
|
||||
|
||||
.section--maxheight
|
||||
height: 3.3em
|
||||
height: 3.3em
|
||||
|
|
|
@ -32,7 +32,7 @@ $tooltip-grey: #6A6C6D
|
|||
bottom: -2.5em
|
||||
|
||||
@media #{$medium-up}
|
||||
width: 25rem
|
||||
width: 18rem
|
||||
|
||||
.tooltip-inner
|
||||
height: 4.1em
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
|
||||
#repo_count_container,
|
||||
#build_count_container
|
||||
width: 100%
|
||||
height: 300px
|
||||
margin: 30px 0
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
|
||||
.status
|
||||
display: inline-block
|
||||
width: 10px
|
||||
height: 10px
|
||||
margin-right: 2px
|
||||
background-size: auto auto
|
||||
background-position: 0px 0px
|
||||
|
||||
.list .status
|
||||
margin-left: 7px
|
||||
|
||||
#repos .yellow,
|
||||
.yellow #summary .number,
|
||||
.list .yellow .number
|
||||
.status
|
||||
background-image: inline-image('icons/state-pending.svg')
|
||||
a
|
||||
color: $color-text-status-pending
|
||||
|
||||
#repos .green,
|
||||
.green #summary .number,
|
||||
.list .green .number,
|
||||
#requests .accepted .request-id
|
||||
.status
|
||||
background-image: inline-image('icons/state-passed.svg')
|
||||
a
|
||||
color: $color-text-status-passed
|
||||
|
||||
#repos .red,
|
||||
.red #summary .number,
|
||||
.list .red .number,
|
||||
#requests .rejected .request-id
|
||||
.status
|
||||
background-image: inline-image('icons/state-failed.svg')
|
||||
a
|
||||
color: $color-text-status-failed
|
||||
|
||||
#repos .gray,
|
||||
.gray #summary .number,
|
||||
.list .gray .number
|
||||
.status
|
||||
background-image: inline-image('icons/state-errored.svg')
|
||||
a
|
||||
color: $color-text-status-gray
|
||||
|
||||
table.list
|
||||
tbody
|
||||
td
|
||||
background-color: $color-bg-job
|
||||
tr:hover td
|
||||
background-color: $color-bg-job-highlight
|
||||
|
||||
.green, .accepted
|
||||
td
|
||||
background-color: $color-bg-job-passed
|
||||
&:hover td
|
||||
background-color: $color-bg-job-passed-highlight
|
||||
.number a, .request-id a
|
||||
color: $color-text-status-passed
|
||||
|
||||
.red, .rejected
|
||||
td
|
||||
background-color: $color-bg-job-failed
|
||||
&:hover td
|
||||
background-color: $color-bg-job-failed-highlight
|
||||
.number a, .request-id a
|
||||
color: $color-text-status-failed
|
||||
|
||||
.gray
|
||||
td
|
||||
background-color: $color-bg-job-gray
|
||||
&:hover td
|
||||
background-color: $color-bg-job-gray-highlight
|
||||
.number a
|
||||
color: $color-text-status-gray
|
||||
|
||||
.number a
|
||||
display: inline-block
|
||||
text-decoration: none
|
||||
&:hover
|
||||
text-decoration: underline
|
||||
|
||||
#workers
|
||||
.status
|
||||
background-color: $color-bg-status-waiting
|
||||
|
||||
.waiting .status
|
||||
background-color: $color-bg-status-waiting
|
||||
|
||||
.errored .status
|
||||
background-color: $color-bg-status-errored
|
||||
|
||||
.stopped .status
|
||||
background-color: $color-bg-status-stopped
|
||||
|
||||
|
|
@ -96,26 +96,6 @@
|
|||
@media #{$medium-up}
|
||||
display: inline-block
|
||||
|
||||
// .tab
|
||||
// margin-top: 15px
|
||||
// ul.navigation
|
||||
// @include resetul
|
||||
// border-bottom: 1px solid #EAEAEA
|
||||
// li
|
||||
// margin-right: 10px
|
||||
// a
|
||||
// color: #ACACAC
|
||||
// font-weight: 600
|
||||
// font-size: 14px
|
||||
// a.active
|
||||
// color: #55888E
|
||||
// @media #{$small-up}
|
||||
// li
|
||||
// display: inline-block
|
||||
// @media #{$medium-up}
|
||||
// height: 40px
|
||||
// line-height: 40px
|
||||
|
||||
#builds
|
||||
a
|
||||
display: inline
|
||||
|
@ -136,24 +116,17 @@
|
|||
.tab
|
||||
margin: 30px 0 0 12px
|
||||
|
||||
#right
|
||||
.tabs
|
||||
margin-left: -3px
|
||||
// #right
|
||||
// .tabs
|
||||
// margin-left: -3px
|
||||
|
||||
.active
|
||||
background-color: $color-bg-right
|
||||
border-bottom-color: $color-bg-right
|
||||
h5
|
||||
font-weight: bold
|
||||
// .active
|
||||
// background-color: $color-bg-right
|
||||
// border-bottom-color: $color-bg-right
|
||||
// h5
|
||||
// font-weight: bold
|
||||
|
||||
@media handheld, only screen and (max-device-width: 980px)
|
||||
#main
|
||||
// .tabs
|
||||
// margin-top: 5px
|
||||
// li
|
||||
// margin-right: 0px
|
||||
// h5
|
||||
// min-width: 0px
|
||||
|
||||
#tab_branches
|
||||
display: none
|
||||
// @media handheld, only screen and (max-device-width: 980px)
|
||||
// #main
|
||||
// #tab_branches
|
||||
// display: none
|
||||
|
|
|
@ -1,8 +1 @@
|
|||
{{outlet}}
|
||||
|
||||
|
||||
{{#if config.pro}}
|
||||
<div id="global_slider" {{action toggle target=slider}}>
|
||||
<div class='icon'></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<li>
|
||||
<span class="icon icon--clock"></span>
|
||||
{{#if build.isFinished}}ran{{else}}running{{/if}} for {{format-duration build.duration}}
|
||||
<li>
|
||||
<li {{bind-attr title="build.finishedAt"}}>
|
||||
<span class="icon icon--cal"></span>
|
||||
{{format-time build.finishedAt}}
|
||||
</li>
|
||||
|
@ -76,8 +76,14 @@
|
|||
{{/unless}}
|
||||
|
||||
{{#if build.isMatrix}}
|
||||
{{view 'jobs' jobs=build.requiredJobs required="true"}}
|
||||
{{view 'jobs' jobs=build.allowedFailureJobs}}
|
||||
{{#if jobsLoaded}}
|
||||
{{jobs-list jobs=build.requiredJobs required="true"}}
|
||||
{{jobs-list jobs=build.allowedFailureJobs}}
|
||||
{{else}}
|
||||
<div class="spinner-container">
|
||||
<span class="sync-spinner sync-spinner--grey"><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{view 'log' job=build.jobs.firstObject}}
|
||||
{{/if}}
|
||||
|
|
46
app/templates/components/jobs-item.hbs
Normal file
|
@ -0,0 +1,46 @@
|
|||
{{#link-to "job" job.repo job}}
|
||||
<div class="tile-status tile-status--job">
|
||||
<span {{bind-attr class=":icon :icon--job job.state"}}></span>
|
||||
</div>
|
||||
|
||||
<p class="job-id jobs-item build-status">
|
||||
<span class="icon icon--hash-dark"></span>
|
||||
{{job.number}}
|
||||
</p>
|
||||
|
||||
<p {{bind-attr class=":job-os :jobs-item :build-os job.config.os"}}>
|
||||
<span {{bind-attr class=":icon job.config.os"}}></span>
|
||||
</p>
|
||||
|
||||
{{#if languages}}
|
||||
<p class="job-lang jobs-item build-lang">
|
||||
<span class="icon icon--lang"></span>
|
||||
{{languages}}
|
||||
</p>
|
||||
{{else}}
|
||||
<p class="job-lang jobs-item build-lang is-empty">
|
||||
<span class="icon icon--lang"></span>
|
||||
no language set
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
<div class="job-anchor jobs-item">
|
||||
{{#if job.config.env}}
|
||||
<p class="job-env jobs-item build-env">
|
||||
<span class="icon icon--env"></span>
|
||||
{{job.config.env}}
|
||||
</p>
|
||||
{{else}}
|
||||
<p class="job-env jobs-item build-env is-empty">
|
||||
<span class="icon icon--env"></span>
|
||||
no environment variables set
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
<p class="job-duration jobs-item" {{bind-attr title="job.startedAt"}}>
|
||||
<span class="icon icon--clock-dark"></span>
|
||||
{{format-duration job.duration}}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
{{/link-to}}
|
21
app/templates/components/jobs-list.hbs
Normal file
|
@ -0,0 +1,21 @@
|
|||
{{#if jobs.length}}
|
||||
<section>
|
||||
|
||||
{{#if required}}
|
||||
<h2 class="build-title">Build Jobs</h2>
|
||||
{{else}}
|
||||
<h2 class="build-title">Allowed Failures
|
||||
<span class="icon icon--question"></span>
|
||||
<div class="tooltip">
|
||||
<p class="tooltip-inner">These are jobs you can allow to fail without failing your entire build</p>
|
||||
</div>
|
||||
</h2>
|
||||
{{/if}}
|
||||
|
||||
<ul class="jobs-list">
|
||||
{{#each job in jobs}}
|
||||
{{jobs-item job=job}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</section>
|
||||
{{/if}}
|
|
@ -7,7 +7,7 @@
|
|||
<h2 class="build-title">Allowed Failures
|
||||
<span class="icon icon--question"></span>
|
||||
<div class="tooltip">
|
||||
<p class="tooltip-inner">These are jobs you can allow to fail without failing your entire build</p>
|
||||
<p class="tooltip-inner">These are jobs are allowed to fail, without failing your entire build.</p>
|
||||
</div>
|
||||
</h2>
|
||||
{{/if}}
|
||||
|
@ -23,7 +23,7 @@
|
|||
</div>
|
||||
|
||||
<p class="job-id jobs-item build-status">
|
||||
<span class="icon icon--hash"></span>
|
||||
<span class="icon icon--hash-dark"></span>
|
||||
{{#if job.id}}
|
||||
{{#if job.repo.slug}}
|
||||
{{number}}
|
||||
|
@ -57,12 +57,12 @@
|
|||
{{else}}
|
||||
<p class="job-env jobs-item build-env is-empty">
|
||||
<span class="icon icon--env"></span>
|
||||
no environments set
|
||||
no environment variables set
|
||||
</p>
|
||||
{{/if}}
|
||||
|
||||
<p class="job-duration jobs-item" {{bind-attr title="startedAt"}}>
|
||||
<span class="icon icon--clock"></span>
|
||||
<span class="icon icon--clock-dark"></span>
|
||||
{{format-duration duration}}
|
||||
</p>
|
||||
|
||||
|
|
|
@ -4,16 +4,12 @@
|
|||
{{render "top"}}
|
||||
</header>
|
||||
|
||||
{{render "flash"}}
|
||||
|
||||
<div class="wrapper-main">
|
||||
<div id="main" role="main">
|
||||
{{render "flash"}}
|
||||
{{yield}}
|
||||
</div>
|
||||
{{#if config.pro}}
|
||||
<div id="right">
|
||||
{{render "sidebar"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<aside id="left">
|
||||
|
|
|
@ -3,31 +3,12 @@
|
|||
{{render "top"}}
|
||||
</header>
|
||||
|
||||
{{render "flash"}}
|
||||
|
||||
<div class="wrapper-main">
|
||||
<div id="main" role="main">
|
||||
{{render "flash"}}
|
||||
{{yield}}
|
||||
</div>
|
||||
|
||||
<div id="right">
|
||||
<div id="slider" {{action "toggle" target=slider}}>
|
||||
<div class='icon'></div>
|
||||
</div>
|
||||
|
||||
<div class="box">
|
||||
<h4>Getting started?</h4>
|
||||
<p>
|
||||
Please read our <a href="http://docs.travis-ci.com/user/getting-started">guide</a>.
|
||||
You'll be up and running in no time!
|
||||
</p>
|
||||
<p>
|
||||
You can find detailed docs on our <a href="http://docs.travis-ci.com">documentation</a> site.
|
||||
</p>
|
||||
<p>
|
||||
If you need help <a href="http://stackoverflow.com/questions/ask?tags=travis-ci">ask a question</a> or hop on <a href="irc://irc.freenode.net/#travis">#travis</a> on irc.freenode.net
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<aside id="left">
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
{{render "top"}}
|
||||
</div>
|
||||
|
||||
{{render "flash"}}
|
||||
|
||||
<div id="main">
|
||||
{{render "flash"}}
|
||||
{{yield}}
|
||||
</div>
|
||||
|
|
|
@ -1,23 +1,32 @@
|
|||
<ul id="queues">
|
||||
<li class="queue">
|
||||
<h4>Queue ({{length}})</h4>
|
||||
<ul>
|
||||
{{#if length}}
|
||||
{{#each job in controller}}
|
||||
<li>
|
||||
{{#if job.repo.slug}}
|
||||
{{#link-to "job" job.repo job}}
|
||||
<span class="slug" {{bind-attr title="job.slug"}}>
|
||||
{{job.repo.slug}}
|
||||
</span>
|
||||
#{{job.number}}
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
</li>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
There are no jobs
|
||||
{{/if}}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
{{#if isLoaded}}
|
||||
{{#if length}}
|
||||
{{#each job in controller}}
|
||||
<div {{bind-attr class=":tile :tile--sidebar job.state"}}>
|
||||
{{#if job.repo.slug}}
|
||||
<span {{bind-attr class=":icon :icon--job job.state"}}></span>
|
||||
{{#link-to "job" job.repo job}}{{job.repo.slug}}{{/link-to}}
|
||||
{{/if}}
|
||||
</h2>
|
||||
|
||||
<p class="tile-title float-right">
|
||||
<span class="icon icon--hash"></span>
|
||||
{{#if job.repo.slug}}
|
||||
{{#link-to "job" job.repo job}}{{job.number}}{{/link-to}}
|
||||
{{/if}}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class="icon icon--clock"></span> Queued
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<div class="spinner-container">There are no jobs queued</div>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<div class="spinner-container">
|
||||
<span class="sync-spinner sync-spinner--grey"><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
@ -6,52 +6,68 @@
|
|||
|
||||
{{view 'repos-list-tabs'}}
|
||||
|
||||
<div class="tabbody sidebar-list">
|
||||
|
||||
{{#if isLoaded}}
|
||||
{{#collection 'repos-list' content=this}}
|
||||
{{#with view.repo as repo}}
|
||||
<div {{bind-attr class=":tile :tile--sidebar repo.lastBuildState"}}>
|
||||
<h2 class="tile-title">
|
||||
{{#if repo.slug}}
|
||||
<span {{bind-attr class=":icon :icon--job repo.lastBuildState"}}></span>
|
||||
{{#link-to "repo" repo class="slug"}}{{repo.slug}}{{/link-to}}
|
||||
{{/if}}
|
||||
</h2>
|
||||
{{#with repo.lastBuildHash as lastBuild}}
|
||||
{{#if repo.slug}}
|
||||
{{#if lastBuild.id}}
|
||||
<p class="tile-title float-right">
|
||||
<span class="icon icon--hash"></span>
|
||||
{{#link-to "build" repo lastBuild.id
|
||||
class="last_build"}}{{lastBuild.number}}{{/link-to}}
|
||||
</p>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/with}}
|
||||
<p>
|
||||
<span class="icon icon--clock"></span>
|
||||
Duration:
|
||||
<abbr class="duration" {{bind-attr title="lastBuildStartedAt"}}>
|
||||
{{format-duration repo.lastBuildDuration}}
|
||||
</abbr>
|
||||
</p>
|
||||
<p>
|
||||
<span class="icon icon--cal"></span>
|
||||
Finished:
|
||||
<abbr clas s="finished_at timeago" {{bind-attr title="lastBuildFinishedAt"}}>
|
||||
{{format-time repo.lastBuildFinishedAt}}
|
||||
</abbr>
|
||||
</p>
|
||||
</div>
|
||||
{{/with}}
|
||||
{{else}}
|
||||
<p class="empty">{{noReposMessage}}</p>
|
||||
{{/collection}}
|
||||
|
||||
{{else}}
|
||||
<div class="spinner-container">
|
||||
<span class="sync-spinner sync-spinner--grey"><i></i><i></i><i></i></span>
|
||||
{{#if showRunningJobs}}
|
||||
<div class="tabbody sidebar-list">
|
||||
<div>
|
||||
{{render "runningJobs"}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<hr class="sidebar-seperator">
|
||||
<div>
|
||||
{{render "queue"}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="tabbody sidebar-list">
|
||||
{{#if isLoaded}}
|
||||
{{#collection 'repos-list' content=this}}
|
||||
|
||||
{{#with view.repo as repo}}
|
||||
<div {{bind-attr class=":tile :tile--sidebar repo.lastBuildState"}}>
|
||||
<h2 class="tile-title">
|
||||
{{#if repo.slug}}
|
||||
<span {{bind-attr class=":icon :icon--job repo.lastBuildState"}}></span>
|
||||
{{#link-to "repo" repo class="slug"}}{{repo.slug}}{{/link-to}}
|
||||
{{/if}}
|
||||
</h2>
|
||||
{{#with repo.lastBuildHash as lastBuild}}
|
||||
{{#if repo.slug}}
|
||||
{{#if lastBuild.id}}
|
||||
<p class="tile-title float-right">
|
||||
<span class="icon icon--hash"></span>
|
||||
{{#link-to "build" repo lastBuild.id
|
||||
class="last_build"}}{{lastBuild.number}}{{/link-to}}
|
||||
</p>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/with}}
|
||||
|
||||
<p>
|
||||
<span class="icon icon--clock"></span>
|
||||
Duration:
|
||||
<abbr class="duration" {{bind-attr title="lastBuildStartedAt"}}>
|
||||
{{format-duration repo.lastBuildDuration}}
|
||||
</abbr>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class="icon icon--cal"></span>
|
||||
Finished:
|
||||
<abbr class="finished_at timeago" {{bind-attr title="lastBuildFinishedAt"}}>
|
||||
{{format-time repo.lastBuildFinishedAt}}
|
||||
</abbr>
|
||||
</p>
|
||||
</div>
|
||||
{{/with}}
|
||||
|
||||
{{else}}
|
||||
<p class="empty">{{noReposMessage}}</p>
|
||||
{{/collection}}
|
||||
|
||||
{{else}}
|
||||
<div class="spinner-container">
|
||||
<span class="sync-spinner sync-spinner--grey"><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="tabnav tabnav--sidebar" role="tablist">
|
||||
<ul class="tab tabs--sidebar">
|
||||
<li id="tab_owned" {{bind-attr class="view.classOwned"}}>
|
||||
{{#link-to "main.repositories"}}My Repositories{{/link-to}}
|
||||
<a href="#" {{action "showMyRepositories"}}>My Repositories</a>
|
||||
</li>
|
||||
|
||||
{{#unless config.pro}}
|
||||
|
@ -10,11 +10,13 @@
|
|||
</li>
|
||||
{{/unless}}
|
||||
|
||||
{{!-- <li id="tab_search" {{bind-attr class="view.classSearch"}}>
|
||||
<h5>Search</h5>
|
||||
</li> --}}
|
||||
{{#if config.pro}}
|
||||
<li id="tab_running" {{bind-attr class="view.classRunning"}}>
|
||||
<a href="#" {{action "showRunningJobs"}}>Running ({{startedJobsCount}}/{{allJobsCount}})</a>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li id="tab_new" {{bind-attr class="view.classNew :float-right"}}>
|
||||
<li id="tab_new" {{bind-attr class="view.classNew"}}>
|
||||
{{#link-to "profile" trackEvent="add-repository-from-list" title="Add New Repository"}}
|
||||
<span class="icon icon--plus"></span>
|
||||
{{/link-to}}
|
||||
|
|
|
@ -1,17 +1,36 @@
|
|||
<h4>Running Jobs ({{controller.length}})</h4>
|
||||
|
||||
<ul class="jobs">
|
||||
{{#if isLoaded}}
|
||||
{{#if controller.length}}
|
||||
{{#each job in controller}}
|
||||
<li {{bind-attr title="job.slug"}}">
|
||||
{{#if job.repo.slug}}
|
||||
{{#link-to "job" job.repo job}}
|
||||
{{job.repo.slug}} #{{job.number}}
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
</li>
|
||||
<div {{bind-attr class=":tile :tile--sidebar job.state"}}>
|
||||
{{#if job.repo.slug}}
|
||||
<span {{bind-attr class=":icon :icon--job job.state"}}></span>
|
||||
{{#link-to "job" job.repo job}}{{job.repo.slug}}{{/link-to}}
|
||||
{{/if}}
|
||||
</h2>
|
||||
|
||||
<p class="tile-title float-right">
|
||||
<span class="icon icon--hash"></span>
|
||||
{{#if job.repo.slug}}
|
||||
{{#link-to "job" job.repo job}}{{job.number}}{{/link-to}}
|
||||
{{/if}}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span class="icon icon--clock"></span>
|
||||
Duration:
|
||||
<abbr class="duration" {{bind-attr title="job.startedAt"}}>
|
||||
{{format-duration job.duration}}
|
||||
</abbr>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
{{/each}}
|
||||
{{else}}
|
||||
There are no jobs
|
||||
<div class="spinner-container">There are no jobs running</div>
|
||||
{{/if}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<div class="spinner-container">
|
||||
<span class="sync-spinner sync-spinner--grey"><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
<div id="slider" {{action toggle target=slider}}>
|
||||
<div class='icon'></div>
|
||||
</div>
|
||||
|
||||
{{#if tip}}
|
||||
<div class="tip box">
|
||||
<h4>Tip:</h4>
|
||||
|
||||
<p>{{{tip}}}</p>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if config.sidebar_support_box}}
|
||||
{{view templateName="layouts/support"}}
|
||||
{{/if}}
|
||||
|
||||
{{render "runningJobs"}}
|
||||
|
||||
{{render "queue"}}
|
|
@ -28,8 +28,8 @@ podStatusImage = ( (url, slug, branch) ->
|
|||
"=for HTML <a href=\"#{url}\"><img src=\"#{statusImageUrl(slug, branch)}\"></a>"
|
||||
)
|
||||
|
||||
ccxmlStatusUrl = ( (slug) ->
|
||||
ccXmlUrl(slug)
|
||||
ccxmlStatusUrl = ( (slug, branch) ->
|
||||
ccXmlUrl(slug, branch)
|
||||
)
|
||||
|
||||
format = (version, slug, branch) ->
|
||||
|
@ -43,7 +43,7 @@ format = (version, slug, branch) ->
|
|||
when 'AsciiDoc' then asciidocStatusImage(url, slug, branch)
|
||||
when 'Rst' then rstStatusImage(url, slug, branch)
|
||||
when 'Pod' then podStatusImage(url, slug, branch)
|
||||
when 'CCTray' then ccxmlStatusUrl(url, slug, branch)
|
||||
when 'CCTray' then ccxmlStatusUrl(slug, branch)
|
||||
|
||||
|
||||
`export default format`
|
||||
|
|
|
@ -28,12 +28,17 @@ statusImage = (slug, branch) ->
|
|||
else
|
||||
"#{location.protocol}//#{location.host}/#{slug}.svg" + if branch then "?branch=#{encodeURIComponent(branch)}" else ''
|
||||
|
||||
ccXml = (slug) ->
|
||||
ccXml = (slug, branch) ->
|
||||
url = "##{config.apiEndpoint}/repos/#{slug}/cc.xml"
|
||||
if branch
|
||||
url = "#{url}?branch=#{branch}"
|
||||
|
||||
if config.pro
|
||||
delimiter = if url.indexOf('?') == -1 then '?' else '&'
|
||||
token = Travis.__container__.lookup('controller:currentUser').get('token')
|
||||
"##{config.apiEndpoint}/repos/#{slug}/cc.xml?token=#{token}"
|
||||
else
|
||||
"#{config.apiEndpoint}/repos/#{slug}/cc.xml"
|
||||
url = "#{url}#{delimiter}token=#{token}"
|
||||
|
||||
url
|
||||
|
||||
email = (email) ->
|
||||
"mailto:#{email}"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
View = BasicView.extend
|
||||
classNames: ['flash']
|
||||
tagname: 'ul'
|
||||
tagName: 'ul'
|
||||
templateName: 'layouts/flash'
|
||||
|
||||
`export default View`
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
`import BasicView from 'travis/views/basic'`
|
||||
`import { colorForState } from 'travis/utils/helpers'`
|
||||
`import { languageConfigKeys } from 'travis/utils/keys-map';`
|
||||
|
||||
View = BasicView.extend
|
||||
tagName: 'div'
|
||||
classNameBindings: ['color']
|
||||
repoBinding: 'context.repo'
|
||||
jobBinding: 'context'
|
||||
|
||||
color: (->
|
||||
colorForState(@get('job.state'))
|
||||
).property('job.state')
|
||||
|
||||
languages: (->
|
||||
output = []
|
||||
|
||||
if config = @get('job.config')
|
||||
for key, languageName of languageConfigKeys
|
||||
if version = config[key]
|
||||
output.push(languageName + ': ' + version)
|
||||
|
||||
output.join(' ')
|
||||
).property()
|
||||
|
||||
`export default View`
|
|
@ -1,23 +0,0 @@
|
|||
`import Ember from 'ember'`
|
||||
`import BasicView from 'travis/views/basic'`
|
||||
|
||||
View = BasicView.extend
|
||||
templateName: 'jobs'
|
||||
buildBinding: 'controller.build'
|
||||
|
||||
jobTableId: Ember.computed(->
|
||||
if @get('required')
|
||||
'jobs'
|
||||
else
|
||||
'allowed_failure_jobs'
|
||||
)
|
||||
|
||||
actions:
|
||||
popupClose: ->
|
||||
@popupCloseAll()
|
||||
|
||||
openHelpPopup: ->
|
||||
@popupCloseAll()
|
||||
@popup('help-allowed_failures')
|
||||
|
||||
`export default View`
|
|
@ -12,6 +12,12 @@ View = Ember.View.extend
|
|||
'hidden'
|
||||
).property('tab')
|
||||
|
||||
classRunning: (->
|
||||
classes = []
|
||||
classes.push('active') if @get('tab') == 'running'
|
||||
classes.join(' ')
|
||||
).property('tab')
|
||||
|
||||
classOwned: (->
|
||||
classes = []
|
||||
classes.push('active') if @get('tab') == 'owned'
|
||||
|
|
14
public/images/svg/build-number-icon-dark.svg
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="16.96px" height="16.15px" viewBox="0 0 16.96 16.15" enable-background="new 0 0 16.96 16.15" xml:space="preserve">
|
||||
<path fill="#808080" d="M15.748,6.406c0.668,0,1.213-0.542,1.213-1.21c0-0.669-0.545-1.212-1.213-1.212h-3.172l0.209-2.678
|
||||
c0.051-0.667-0.445-1.249-1.115-1.303c-0.666-0.051-1.248,0.447-1.299,1.113l-0.228,2.867H7.454l0.212-2.678
|
||||
C7.72,0.639,7.22,0.057,6.553,0.003C5.886-0.048,5.303,0.45,5.25,1.117L5.024,3.984H2.02c-0.67,0-1.212,0.542-1.212,1.212
|
||||
c0,0.668,0.542,1.21,1.212,1.21h2.815L4.602,9.371H1.211C0.542,9.371,0,9.913,0,10.583s0.542,1.212,1.211,1.212h3.2l-0.239,3.049
|
||||
c-0.053,0.667,0.446,1.25,1.112,1.303C5.317,16.15,5.35,16.15,5.381,16.15c0.626,0,1.157-0.481,1.207-1.116l0.253-3.239H9.53
|
||||
l-0.239,3.049c-0.053,0.667,0.447,1.25,1.112,1.303c0.032,0.005,0.063,0.005,0.097,0.005c0.627,0,1.154-0.481,1.209-1.116
|
||||
l0.254-3.239h2.977c0.67,0,1.211-0.542,1.211-1.212s-0.541-1.212-1.211-1.212h-2.787l0.232-2.965L15.748,6.406L15.748,6.406z
|
||||
M9.722,9.371h-2.69l0.232-2.965h2.688L9.722,9.371z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
14
public/images/svg/build-number-icon-dark2.svg
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="16.96px" height="16.15px" viewBox="0 0 16.96 16.15" enable-background="new 0 0 16.96 16.15" xml:space="preserve">
|
||||
<path fill="#969496" d="M15.748,6.406c0.668,0,1.213-0.542,1.213-1.21c0-0.669-0.545-1.212-1.213-1.212h-3.172l0.209-2.678
|
||||
c0.051-0.667-0.445-1.249-1.115-1.304c-0.666-0.051-1.248,0.447-1.299,1.113l-0.228,2.867H7.454l0.212-2.678
|
||||
C7.72,0.639,7.22,0.057,6.553,0.003C5.886-0.048,5.303,0.45,5.25,1.117L5.024,3.984H2.02c-0.67,0-1.212,0.542-1.212,1.212
|
||||
c0,0.668,0.542,1.21,1.212,1.21h2.815L4.602,9.371H1.211C0.542,9.371,0,9.913,0,10.583s0.542,1.212,1.211,1.212h3.2l-0.239,3.049
|
||||
c-0.053,0.667,0.446,1.25,1.112,1.304C5.317,16.15,5.35,16.15,5.381,16.15c0.626,0,1.157-0.481,1.207-1.116l0.253-3.239H9.53
|
||||
l-0.239,3.049c-0.053,0.667,0.447,1.25,1.112,1.304c0.032,0.005,0.063,0.005,0.097,0.005c0.627,0,1.154-0.481,1.209-1.116
|
||||
l0.254-3.239h2.978c0.67,0,1.211-0.542,1.211-1.212S15.61,9.373,14.94,9.373h-2.787l0.231-2.965L15.748,6.406L15.748,6.406z
|
||||
M9.722,9.371h-2.69l0.232-2.965h2.688L9.722,9.371z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
15
public/images/svg/duration-icon-dark.svg
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="15.375px" height="15.372px" viewBox="0 0 15.375 15.372" enable-background="new 0 0 15.375 15.372" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#808080" d="M7.7,0.2c-4.142,0-7.5,3.358-7.5,7.5c0,4.14,3.358,7.5,7.5,7.5c4.143,0,7.5-3.359,7.5-7.5
|
||||
C15.201,3.558,11.843,0.2,7.7,0.2z M7.7,13.327c-3.102,0-5.625-2.523-5.625-5.625S4.599,2.075,7.7,2.075
|
||||
c3.1,0,5.625,2.523,5.625,5.625C13.326,10.801,10.802,13.327,7.7,13.327z"/>
|
||||
<path fill="#808080" d="M11.339,9.381L8.373,7.377V3.928c0-0.083-0.033-0.163-0.092-0.221C8.223,3.648,8.142,3.615,8.06,3.615H7.24
|
||||
c-0.083,0-0.163,0.034-0.221,0.092C6.96,3.765,6.927,3.845,6.927,3.928v4.074c0,0.082,0.033,0.162,0.092,0.221
|
||||
c0.023,0.023,0.051,0.043,0.08,0.059l3.457,2.315c0.052,0.034,0.111,0.053,0.173,0.053c0.022,0,0.045-0.002,0.065-0.008
|
||||
c0.084-0.017,0.154-0.065,0.199-0.14l0.437-0.694C11.519,9.665,11.479,9.475,11.339,9.381z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
15
public/images/svg/duration-icon-dark2.svg
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="15.375px" height="15.372px" viewBox="0 0 15.375 15.372" enable-background="new 0 0 15.375 15.372" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#969496" d="M7.7,0.2c-4.142,0-7.5,3.358-7.5,7.5c0,4.14,3.358,7.5,7.5,7.5c4.143,0,7.5-3.359,7.5-7.5
|
||||
C15.201,3.558,11.843,0.2,7.7,0.2z M7.7,13.327c-3.102,0-5.625-2.522-5.625-5.625S4.599,2.075,7.7,2.075
|
||||
c3.1,0,5.625,2.523,5.625,5.625C13.326,10.801,10.802,13.327,7.7,13.327z"/>
|
||||
<path fill="#969496" d="M11.339,9.381L8.373,7.377V3.928c0-0.083-0.033-0.163-0.092-0.221C8.223,3.648,8.142,3.615,8.06,3.615H7.24
|
||||
c-0.083,0-0.163,0.034-0.221,0.092C6.96,3.765,6.927,3.845,6.927,3.928v4.074c0,0.082,0.033,0.162,0.092,0.221
|
||||
c0.023,0.023,0.051,0.043,0.08,0.059l3.458,2.315c0.051,0.034,0.11,0.053,0.172,0.053c0.022,0,0.045-0.002,0.065-0.008
|
||||
c0.084-0.017,0.154-0.065,0.199-0.14l0.437-0.694C11.52,9.665,11.479,9.475,11.339,9.381z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
13
public/images/svg/icon-environment-dark.svg
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
||||
<path fill="#808080" d="M15.312,2.454C15.312,2.453,15.312,2.453,15.312,2.454l-0.006-0.002c-0.013-0.004-0.024-0.008-0.039-0.011
|
||||
L8.2,0.528c-0.132-0.036-0.271-0.036-0.402,0L0.686,2.453C0.369,2.539,0.15,2.816,0.126,3.14C0.123,3.154,0.121,3.169,0.118,3.184
|
||||
c0,0.005-0.001,0.009-0.001,0.013c0,0.001,0,0.002,0,0.003C0.112,3.235,0.106,3.271,0.106,3.309v8.534
|
||||
c0,0.312,0.188,0.595,0.476,0.712l6.995,2.889c0.095,0.039,0.194,0.059,0.294,0.059c0.022,0,0.044-0.004,0.067-0.006
|
||||
c0.02,0.002,0.04,0.006,0.061,0.006c0.188,0,0.357-0.068,0.491-0.182l6.904-2.629c0.299-0.113,0.496-0.399,0.496-0.719V3.196
|
||||
C15.891,2.838,15.645,2.539,15.312,2.454z M7.999,2.069l4.166,1.127L7.999,4.323L3.833,3.196L7.999,2.069z M1.646,4.2l5.583,1.51
|
||||
v7.923l-5.583-2.305V4.2z M8.77,13.564V5.71l5.582-1.51v7.239L8.77,13.564z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
13
public/images/svg/icon-environment-dark2.svg
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
|
||||
<path fill="#969496" d="M15.312,2.454C15.312,2.453,15.312,2.453,15.312,2.454l-0.006-0.002c-0.014-0.004-0.024-0.008-0.039-0.011
|
||||
L8.2,0.528c-0.132-0.036-0.271-0.036-0.402,0L0.686,2.453C0.369,2.539,0.15,2.816,0.126,3.14C0.123,3.154,0.121,3.169,0.118,3.184
|
||||
c0,0.005-0.001,0.009-0.001,0.013c0,0.001,0,0.002,0,0.003C0.112,3.235,0.106,3.271,0.106,3.309v8.534
|
||||
c0,0.312,0.188,0.595,0.476,0.712l6.995,2.889c0.095,0.039,0.194,0.06,0.294,0.06c0.022,0,0.044-0.004,0.067-0.006
|
||||
c0.02,0.002,0.04,0.006,0.061,0.006c0.188,0,0.357-0.067,0.491-0.183l6.904-2.629c0.299-0.112,0.496-0.398,0.496-0.719V3.196
|
||||
C15.891,2.838,15.645,2.539,15.312,2.454z M7.999,2.069l4.166,1.127L7.999,4.323L3.833,3.196L7.999,2.069z M1.646,4.2l5.583,1.51
|
||||
v7.923l-5.583-2.305V4.2z M8.77,13.564V5.71l5.582-1.51v7.239L8.77,13.564z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
8
public/images/svg/icon-error-dismiss.svg
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="14px" height="14px" viewBox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve">
|
||||
<polygon fill="#E16C5E" points="10.914,0 6.998,3.913 3.088,0 0,3.085 3.912,7 0,10.915 3.092,14 6.998,10.088 10.914,14 14,10.915
|
||||
10.092,7 14,3.085 "/>
|
||||
</svg>
|
After Width: | Height: | Size: 631 B |
11
public/images/svg/icon-language-dark.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="21.104px" height="12.938px" viewBox="0 0 21.104 12.938" enable-background="new 0 0 21.104 12.938" xml:space="preserve">
|
||||
<g>
|
||||
<polygon fill="#808080" points="6.703,3.362 5.008,2 0,6.775 5.055,11.551 6.75,10.189 3.113,6.775 "/>
|
||||
<polygon fill="#808080" points="15.958,2 14.263,3.361 17.899,6.775 14.31,10.189 16.005,11.551 21.013,6.775 "/>
|
||||
<polygon fill="#808080" points="8.075,12.917 10.032,12.917 13.163,0 11.208,0 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 814 B |
11
public/images/svg/icon-language-dark2.svg
Normal file
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="21.104px" height="12.938px" viewBox="0 0 21.104 12.938" enable-background="new 0 0 21.104 12.938" xml:space="preserve">
|
||||
<g>
|
||||
<polygon fill="#969496" points="6.703,3.362 5.008,2 0,6.775 5.055,11.551 6.75,10.189 3.113,6.775 "/>
|
||||
<polygon fill="#969496" points="15.958,2 14.263,3.361 17.899,6.775 14.31,10.189 16.005,11.551 21.013,6.775 "/>
|
||||
<polygon fill="#969496" points="8.075,12.917 10.032,12.917 13.163,0 11.208,0 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 814 B |
53
public/images/svg/icon-linux-dark.svg
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="13.604px" height="16.021px" viewBox="0 0 13.604 16.021" enable-background="new 0 0 13.604 16.021" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#808080" d="M13.163,12.911c-0.048-0.018-0.095-0.045-0.139-0.072c-0.302-0.175-0.502-0.413-0.485-0.791
|
||||
c0.01-0.265-0.083-0.508-0.24-0.715c-0.094-0.13-0.113-0.242-0.078-0.396c0.215-1.01,0.043-1.94-0.509-2.828
|
||||
c-0.509-0.822-1.038-1.627-1.6-2.408C9.761,5.208,9.598,4.665,9.57,4.06c-0.021-0.5-0.021-1.007-0.108-1.503
|
||||
C9.255,1.4,8.812,0.431,7.535,0.12c-0.328,0-0.657,0-0.985,0C6.49,0.137,6.431,0.152,6.371,0.167
|
||||
C5.72,0.347,5.134,0.61,4.861,1.303C4.682,1.76,4.633,2.24,4.649,2.723C4.67,3.346,4.722,3.971,4.753,4.593
|
||||
c0.031,0.612-0.142,1.109-0.526,1.582C3.688,6.833,3.198,7.53,2.941,8.364c-0.163,0.531-0.367,1.045-0.603,1.55
|
||||
c-0.072,0.158-0.136,0.327-0.118,0.503c0.035,0.308-0.063,0.54-0.242,0.802c-0.263,0.394-0.586,0.616-1.027,0.711
|
||||
c-0.101,0.023-0.2,0.045-0.297,0.077c-0.34,0.118-0.499,0.336-0.407,0.688c0.128,0.487,0.075,0.945-0.082,1.411
|
||||
c-0.117,0.352,0,0.565,0.341,0.715c0.199,0.085,0.407,0.15,0.621,0.175c0.813,0.08,1.576,0.354,2.339,0.633
|
||||
c0.261,0.096,0.53,0.159,0.805,0.194c0.313,0.04,0.622-0.035,0.81-0.282c0.208-0.273,0.476-0.326,0.771-0.363
|
||||
c0.104-0.014,0.204-0.025,0.305-0.04c0.841-0.11,1.675-0.098,2.507,0.08c0.114,0.026,0.215,0.049,0.274,0.165
|
||||
c0.358,0.689,1.361,0.668,1.849,0.221c0.386-0.357,0.824-0.641,1.284-0.896c0.396-0.218,0.802-0.423,1.177-0.671
|
||||
C13.769,13.687,13.687,13.1,13.163,12.911z M7.406,2.135c0.314-0.341,0.796-0.322,1.095,0.026
|
||||
c0.312,0.365,0.374,0.957,0.14,1.375C8.566,3.668,8.485,3.809,8.307,3.833C8.251,3.704,8.352,3.635,8.384,3.554
|
||||
c0.047-0.13,0.07-0.261,0.055-0.397C8.404,2.854,8.186,2.613,7.942,2.601C7.69,2.589,7.51,2.797,7.436,3.131
|
||||
C7.411,3.239,7.534,3.445,7.319,3.447c-0.178,0-0.188-0.188-0.212-0.336C7.046,2.734,7.151,2.405,7.406,2.135z M6.468,3.841
|
||||
c0.417,0.11,0.82,0.258,1.2,0.461C7.824,4.385,7.849,4.51,7.684,4.606c-0.41,0.23-0.791,0.509-1.233,0.682
|
||||
C6.396,5.31,6.335,5.321,6.296,5.333C6.073,5.329,5.46,4.873,5.374,4.674c-0.042-0.098,0.01-0.155,0.074-0.207
|
||||
c0.229-0.185,0.465-0.369,0.699-0.551C6.241,3.849,6.354,3.812,6.468,3.841z M5.426,2.11c0.19-0.098,0.361-0.062,0.507,0.077
|
||||
c0.294,0.283,0.375,0.646,0.334,1.04C6.253,3.354,6.159,3.409,6.019,3.445C5.971,3.243,5.98,3.056,5.879,2.896
|
||||
C5.779,2.746,5.654,2.62,5.462,2.649c-0.181,0.022-0.255,0.17-0.299,0.332C5.076,3.296,5.177,3.554,5.407,3.773
|
||||
c0.048,0.044,0.138,0.093,0.047,0.172C5.394,3.994,5.339,3.944,5.291,3.909C4.793,3.557,4.88,2.396,5.426,2.11z M4.622,15.083
|
||||
c-0.138,0.145-0.291,0.213-0.493,0.192c-0.258-0.029-0.507-0.091-0.74-0.192c-0.728-0.319-1.489-0.51-2.272-0.627
|
||||
c-0.181-0.026-0.411-0.031-0.407-0.338c0.006-0.038,0.006-0.104,0.024-0.159c0.116-0.377,0.204-0.749,0.104-1.144
|
||||
C0.78,12.588,0.88,12.434,1.12,12.39c0.081-0.016,0.158-0.044,0.238-0.058c0.43-0.07,0.753-0.263,0.937-0.69
|
||||
c0.155-0.364,0.349-0.379,0.64-0.115c0.193,0.177,0.341,0.383,0.473,0.604c0.374,0.627,0.753,1.245,1.203,1.819
|
||||
C4.957,14.391,4.939,14.744,4.622,15.083z M8.833,11.749c-0.039,0.33-0.051,0.654-0.045,0.983
|
||||
c0.005,0.151-0.053,0.265-0.152,0.378c-0.569,0.64-1.294,0.907-2.13,0.925c-0.107,0.003-0.216-0.016-0.318,0.004
|
||||
c-0.458,0.089-0.728-0.164-0.965-0.5c-0.064-0.092-0.068-0.135,0.027-0.208c0.265-0.213,0.282-0.476,0.05-0.732
|
||||
c-0.245-0.273-0.533-0.499-0.83-0.705c-0.659-0.461-0.832-1.062-0.626-1.814c0.074-0.267,0.146-0.53,0.282-0.771
|
||||
C4.35,8.912,4.47,8.473,4.632,8.049c0.077-0.198,0.165-0.391,0.29-0.563C5.174,7.13,5.325,6.738,5.366,6.246
|
||||
c0.177,0.157,0.316,0.293,0.479,0.397C6.1,6.804,6.352,6.83,6.624,6.677c0.361-0.202,0.733-0.39,1.103-0.586
|
||||
C7.855,6.023,7.95,6.023,8.028,6.177c0.57,1.114,1.08,2.257,1.408,3.468c0.133,0.49,0.107,0.999,0.02,1.504
|
||||
c-0.024,0.128-0.062,0.187-0.218,0.188C8.934,11.346,8.87,11.442,8.833,11.749z M12.727,13.726
|
||||
c-0.267,0.152-0.541,0.293-0.812,0.437c-0.371,0.198-0.729,0.416-1.024,0.726c-0.148,0.154-0.337,0.267-0.533,0.356
|
||||
c-0.388,0.179-0.746-0.009-0.824-0.436c-0.021-0.11-0.018-0.227-0.021-0.305c0.021-0.51,0.174-0.959,0.22-1.429
|
||||
c0.028-0.288,0.051-0.571,0-0.858c-0.025-0.15-0.026-0.306-0.008-0.459c0.008-0.062,0.037-0.125,0.109-0.129
|
||||
c0.087-0.002,0.08,0.075,0.092,0.131c0.015,0.092,0.023,0.185,0.047,0.271c0.108,0.404,0.387,0.602,0.801,0.542
|
||||
c0.405-0.06,0.781-0.184,1.016-0.559c0.035-0.06,0.066-0.148,0.152-0.128c0.085,0.018,0.076,0.108,0.085,0.178
|
||||
c0.02,0.121,0.032,0.243,0.059,0.365c0.057,0.271,0.188,0.495,0.428,0.647c0.07,0.046,0.145,0.081,0.212,0.124
|
||||
C13.073,13.421,13.075,13.521,12.727,13.726z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.9 KiB |
52
public/images/svg/icon-linux-dark2.svg
Normal file
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="13.604px" height="16.021px" viewBox="0 0 13.604 16.021" enable-background="new 0 0 13.604 16.021" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#969496" d="M13.163,12.911c-0.048-0.018-0.096-0.045-0.14-0.072c-0.302-0.175-0.502-0.413-0.484-0.791
|
||||
c0.01-0.265-0.083-0.508-0.24-0.715c-0.094-0.13-0.113-0.242-0.078-0.396c0.215-1.011,0.043-1.94-0.509-2.828
|
||||
c-0.509-0.822-1.038-1.627-1.601-2.408C9.761,5.208,9.598,4.665,9.57,4.06c-0.021-0.5-0.021-1.007-0.107-1.503
|
||||
C9.255,1.4,8.812,0.431,7.535,0.12c-0.328,0-0.657,0-0.985,0C6.49,0.137,6.431,0.152,6.371,0.167
|
||||
C5.72,0.347,5.134,0.61,4.861,1.303C4.682,1.76,4.633,2.24,4.649,2.723C4.67,3.346,4.722,3.971,4.753,4.593
|
||||
c0.031,0.612-0.143,1.109-0.526,1.582C3.688,6.833,3.198,7.53,2.941,8.364c-0.163,0.531-0.366,1.045-0.603,1.55
|
||||
c-0.072,0.158-0.136,0.327-0.118,0.503c0.035,0.309-0.062,0.54-0.242,0.802c-0.263,0.395-0.586,0.616-1.026,0.712
|
||||
c-0.102,0.022-0.2,0.045-0.298,0.076c-0.34,0.118-0.499,0.336-0.406,0.688c0.128,0.487,0.074,0.945-0.082,1.411
|
||||
c-0.117,0.352,0,0.564,0.341,0.715c0.199,0.085,0.407,0.15,0.621,0.175c0.812,0.08,1.576,0.354,2.339,0.633
|
||||
c0.261,0.097,0.53,0.159,0.805,0.194c0.313,0.04,0.622-0.035,0.811-0.282c0.208-0.272,0.476-0.326,0.771-0.362
|
||||
c0.104-0.015,0.204-0.025,0.306-0.04c0.841-0.11,1.675-0.099,2.507,0.079c0.113,0.026,0.215,0.05,0.273,0.165
|
||||
c0.358,0.689,1.361,0.668,1.85,0.222c0.386-0.357,0.823-0.642,1.283-0.896c0.396-0.218,0.803-0.423,1.178-0.671
|
||||
C13.769,13.687,13.687,13.1,13.163,12.911z M7.406,2.135C7.72,1.794,8.202,1.813,8.501,2.161c0.312,0.365,0.374,0.957,0.14,1.375
|
||||
C8.566,3.668,8.485,3.809,8.307,3.833C8.251,3.704,8.352,3.635,8.384,3.554c0.047-0.131,0.07-0.262,0.055-0.397
|
||||
C8.404,2.854,8.186,2.613,7.942,2.601C7.69,2.589,7.51,2.797,7.436,3.131C7.411,3.239,7.534,3.445,7.319,3.447
|
||||
c-0.178,0-0.188-0.188-0.212-0.336C7.046,2.734,7.151,2.405,7.406,2.135z M6.468,3.841c0.417,0.11,0.82,0.259,1.2,0.461
|
||||
C7.824,4.385,7.849,4.51,7.684,4.606c-0.41,0.229-0.791,0.509-1.232,0.682C6.396,5.31,6.335,5.321,6.296,5.333
|
||||
C6.073,5.329,5.46,4.873,5.374,4.674c-0.042-0.098,0.01-0.154,0.074-0.207c0.229-0.185,0.465-0.368,0.698-0.551
|
||||
C6.241,3.849,6.354,3.812,6.468,3.841z M5.426,2.11c0.19-0.098,0.361-0.062,0.507,0.077c0.294,0.283,0.375,0.646,0.334,1.04
|
||||
C6.253,3.354,6.159,3.409,6.019,3.445C5.971,3.243,5.98,3.056,5.879,2.896C5.779,2.746,5.654,2.62,5.462,2.649
|
||||
c-0.181,0.021-0.255,0.17-0.299,0.332C5.076,3.296,5.177,3.554,5.407,3.773c0.048,0.044,0.138,0.093,0.047,0.172
|
||||
C5.394,3.994,5.339,3.944,5.291,3.909C4.793,3.557,4.88,2.396,5.426,2.11z M4.622,15.083c-0.139,0.146-0.291,0.213-0.493,0.192
|
||||
c-0.258-0.029-0.507-0.091-0.74-0.192c-0.728-0.318-1.489-0.51-2.271-0.627c-0.182-0.025-0.411-0.031-0.407-0.338
|
||||
c0.006-0.038,0.006-0.104,0.023-0.159c0.116-0.377,0.204-0.749,0.104-1.144C0.78,12.588,0.88,12.434,1.12,12.39
|
||||
c0.081-0.017,0.157-0.044,0.237-0.059c0.431-0.069,0.753-0.263,0.938-0.689c0.155-0.364,0.349-0.379,0.64-0.115
|
||||
c0.193,0.177,0.341,0.383,0.474,0.604c0.374,0.627,0.753,1.245,1.202,1.819C4.957,14.391,4.939,14.744,4.622,15.083z
|
||||
M8.833,11.749c-0.039,0.33-0.051,0.654-0.045,0.983c0.005,0.15-0.054,0.265-0.152,0.378c-0.569,0.64-1.294,0.907-2.13,0.925
|
||||
c-0.107,0.003-0.216-0.016-0.318,0.004c-0.458,0.089-0.728-0.164-0.965-0.5c-0.063-0.092-0.068-0.135,0.027-0.208
|
||||
c0.265-0.213,0.282-0.476,0.05-0.731c-0.245-0.273-0.533-0.499-0.83-0.705c-0.659-0.461-0.832-1.062-0.626-1.814
|
||||
C3.918,9.813,3.99,9.55,4.126,9.309C4.35,8.912,4.47,8.473,4.632,8.049c0.077-0.197,0.165-0.391,0.29-0.562
|
||||
c0.252-0.356,0.403-0.748,0.444-1.24c0.177,0.157,0.315,0.293,0.479,0.397C6.1,6.804,6.352,6.83,6.624,6.677
|
||||
c0.36-0.201,0.732-0.39,1.103-0.586C7.855,6.023,7.95,6.023,8.028,6.177c0.57,1.114,1.08,2.258,1.408,3.469
|
||||
c0.133,0.489,0.107,0.999,0.021,1.504c-0.024,0.128-0.062,0.187-0.219,0.188C8.934,11.346,8.87,11.442,8.833,11.749z
|
||||
M12.727,13.726c-0.267,0.151-0.541,0.293-0.812,0.437c-0.371,0.198-0.729,0.416-1.024,0.727
|
||||
c-0.147,0.153-0.337,0.267-0.533,0.355c-0.388,0.179-0.746-0.009-0.823-0.436c-0.021-0.11-0.019-0.228-0.021-0.306
|
||||
c0.021-0.51,0.174-0.959,0.22-1.429c0.028-0.288,0.052-0.571,0-0.858c-0.024-0.149-0.025-0.306-0.008-0.459
|
||||
c0.008-0.062,0.037-0.125,0.109-0.129c0.087-0.002,0.08,0.075,0.092,0.131c0.015,0.093,0.023,0.186,0.047,0.271
|
||||
c0.108,0.404,0.387,0.602,0.801,0.542c0.405-0.06,0.781-0.184,1.017-0.559c0.035-0.061,0.065-0.148,0.151-0.129
|
||||
c0.085,0.019,0.076,0.108,0.085,0.179c0.021,0.121,0.032,0.243,0.06,0.365c0.057,0.271,0.188,0.494,0.428,0.646
|
||||
c0.07,0.046,0.146,0.081,0.212,0.124C13.073,13.421,13.075,13.521,12.727,13.726z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.9 KiB |
15
public/images/svg/icon-mac-dark.svg
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="13.604px" height="16.021px" viewBox="0 0 13.604 16.021" enable-background="new 0 0 13.604 16.021" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#808080" d="M13.386,5.884c-2.124,1.462-2.068,4.633,0.076,6.041c-0.505,1.263-1.088,2.472-2.174,3.357
|
||||
c-0.573,0.468-1.21,0.591-1.912,0.352c-0.315-0.106-0.63-0.22-0.946-0.341c-0.93-0.364-1.851-0.335-2.769,0.033
|
||||
c-0.264,0.104-0.523,0.213-0.789,0.306c-0.629,0.229-1.216,0.131-1.756-0.26c-0.524-0.373-0.931-0.854-1.272-1.392
|
||||
c-0.949-1.495-1.514-3.129-1.695-4.885C0.054,8.172,0.193,7.269,0.586,6.417c0.862-1.871,2.79-2.719,4.791-2.119
|
||||
C5.615,4.371,5.852,4.441,6.085,4.53c0.724,0.282,1.438,0.258,2.166,0C8.69,4.374,9.145,4.22,9.605,4.151
|
||||
c1.448-0.21,2.893,0.361,3.763,1.681C13.379,5.845,13.382,5.868,13.386,5.884z"/>
|
||||
<path fill="#808080" d="M6.81,4.222c-0.058-2.288,2.165-4.194,4.1-4.081C11.013,2.093,9.085,4.284,6.81,4.222z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
15
public/images/svg/icon-mac-dark2.svg
Normal file
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="13.604px" height="16.021px" viewBox="0 0 13.604 16.021" enable-background="new 0 0 13.604 16.021" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#969496" d="M13.386,5.884c-2.124,1.463-2.068,4.634,0.076,6.041c-0.505,1.264-1.088,2.473-2.174,3.357
|
||||
c-0.573,0.468-1.21,0.591-1.912,0.352c-0.315-0.105-0.63-0.22-0.946-0.341c-0.93-0.363-1.851-0.335-2.769,0.033
|
||||
c-0.265,0.104-0.523,0.213-0.789,0.306c-0.629,0.229-1.216,0.132-1.756-0.26c-0.524-0.373-0.932-0.854-1.272-1.392
|
||||
c-0.949-1.495-1.514-3.129-1.695-4.885C0.054,8.172,0.193,7.269,0.586,6.417c0.862-1.871,2.79-2.719,4.791-2.119
|
||||
C5.615,4.371,5.852,4.441,6.085,4.53c0.724,0.282,1.438,0.258,2.166,0C8.69,4.374,9.145,4.22,9.605,4.151
|
||||
c1.448-0.21,2.894,0.361,3.764,1.681C13.379,5.845,13.382,5.868,13.386,5.884z"/>
|
||||
<path fill="#969496" d="M6.81,4.222C6.752,1.934,8.975,0.028,10.91,0.141C11.013,2.093,9.085,4.284,6.81,4.222z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
8
public/images/svg/icon-success-dismiss.svg
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="14px" height="14px" viewBox="0 0 14 14" enable-background="new 0 0 14 14" xml:space="preserve">
|
||||
<polygon fill="#6CB578" points="10.914,0 6.998,3.913 3.088,0 0,3.085 3.912,7 0,10.915 3.092,14 6.998,10.088 10.914,14 14,10.915
|
||||
10.092,7 14,3.085 "/>
|
||||
</svg>
|
After Width: | Height: | Size: 631 B |
|
@ -6,9 +6,6 @@
|
|||
"SL_firefox"
|
||||
],
|
||||
"launch_in_dev": [
|
||||
"PhantomJS",
|
||||
"Chrome",
|
||||
"Firefox"
|
||||
],
|
||||
"launchers": {
|
||||
"SL_chrome": {
|
||||
|
|
|
@ -13,6 +13,15 @@
|
|||
<link rel="stylesheet" href="assets/vendor.css">
|
||||
<link rel="stylesheet" href="assets/travis.css">
|
||||
<link rel="stylesheet" href="assets/test-support.css">
|
||||
<style>
|
||||
#ember-testing-container {
|
||||
top: 100px;
|
||||
right: -620px;
|
||||
}
|
||||
#ember-testing-container:hover {
|
||||
right: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
{{content-for 'head-footer'}}
|
||||
{{content-for 'test-head-footer'}}
|
||||
|
|
39
tests/unit/components/jobs-item-test.coffee
Normal file
|
@ -0,0 +1,39 @@
|
|||
`import { test, moduleForComponent } from 'ember-qunit'`
|
||||
|
||||
moduleForComponent 'jobs-item', 'JobsItemComponent', {
|
||||
# specify the other units that are required for this test
|
||||
needs: ['helper:format-duration']
|
||||
}
|
||||
|
||||
test 'it renders', ->
|
||||
attributes = {
|
||||
id: 10
|
||||
state: 'passed'
|
||||
number: '2'
|
||||
config: {
|
||||
rvm: '2.1.2'
|
||||
jdk: 'openjdk6'
|
||||
os: 'linux',
|
||||
env: 'TESTS=unit'
|
||||
},
|
||||
duration: 100
|
||||
}
|
||||
job = Ember.Object.create(attributes)
|
||||
component = @subject(job: job)
|
||||
@append()
|
||||
|
||||
ok component.$().hasClass('passed'), 'component should have a state class (passed)'
|
||||
equal component.$('.job-id').text().trim(), '2', 'job number should be displayed'
|
||||
equal component.$('.job-lang').text().trim(), 'JDK: openjdk6 Ruby: 2.1.2', 'langauges list should be displayed'
|
||||
equal component.$('.job-env').text().trim(), 'TESTS=unit', 'env should be displayed'
|
||||
ok component.$('.job-os').hasClass('linux'), 'OS class should be added for OS icon'
|
||||
equal component.$('.job-duration').text().trim(), '1 min 40 sec', 'duration should be displayed'
|
||||
|
||||
test 'ouputs info on not set properties', ->
|
||||
job = Ember.Object.create()
|
||||
|
||||
component = @subject(job: job)
|
||||
@append()
|
||||
|
||||
ok component.$('.job-env').text().match(/no environment variables set/), 'a message for no env vars should be displayed'
|
||||
ok component.$('.job-lang').text().match(/no language set/), 'a message about no language being set should be displayed'
|
25
tests/unit/components/jobs-list-test.coffee
Normal file
|
@ -0,0 +1,25 @@
|
|||
`import { test, moduleForComponent } from 'ember-qunit'`
|
||||
|
||||
moduleForComponent 'jobs-list', 'JobsListComponent', {
|
||||
needs: ['helper:format-duration', 'component:jobs-item']
|
||||
}
|
||||
|
||||
test 'it renders a list of jobs', ->
|
||||
jobs = [Ember.Object.create(id: 1, state: 'passed'),
|
||||
Ember.Object.create(id: 1, state: 'failed')]
|
||||
|
||||
component = @subject(jobs: jobs, required: true)
|
||||
@append()
|
||||
|
||||
equal component.$('.build-title').text().trim(), 'Build Jobs'
|
||||
equal component.$('.tile--jobs').length, 2, 'there should be 2 job items'
|
||||
ok component.$('.tile--jobs:nth(0)').hasClass('passed'), 'passed class should be applied to a job'
|
||||
ok component.$('.tile--jobs:nth(1)').hasClass('failed'), 'failed class should be applied to a job'
|
||||
|
||||
test 'it renders "Allowed Failures" version without a `required` property', ->
|
||||
jobs = [Ember.Object.create(id: 1)]
|
||||
|
||||
component = @subject(jobs: jobs)
|
||||
@append()
|
||||
|
||||
ok component.$('.build-title').text().match /Allowed Failures/
|
13
tests/unit/utils/status-image-formats-test.coffee
Normal file
|
@ -0,0 +1,13 @@
|
|||
`import Ember from 'ember'`
|
||||
`import format from 'travis/utils/status-image-formats'`
|
||||
`import config from 'travis/config/environment'`
|
||||
|
||||
module 'Status image formats'
|
||||
|
||||
test 'it generates CCTray url with a slug', ->
|
||||
url = format('CCTray', 'travis-ci/travis-web')
|
||||
equal url, '#/repos/travis-ci/travis-web/cc.xml'
|
||||
|
||||
test 'it generates CCTray url with a slug and a branch', ->
|
||||
url = format('CCTray', 'travis-ci/travis-web', 'development')
|
||||
equal url, '#/repos/travis-ci/travis-web/cc.xml?branch=development'
|