add sponsors

This commit is contained in:
Sven Fuchs 2012-06-30 21:13:33 +02:00
parent 0e361e9a25
commit 9a60e18a8a
187 changed files with 548 additions and 257 deletions

View File

@ -21,7 +21,7 @@ input 'assets/javascripts' do
concat files, 'vendor.js'
end
match '{app,config,lib}/**/*.coffee' do
match '{app,config,data,lib}/**/*.coffee' do
coffee_script
end
@ -34,12 +34,12 @@ input 'assets/javascripts' do
concat 'app/templates.js'
end
match '{app,config,lib}/**/*.js' do
match '{app,config,data,lib}/**/*.js' do
minispade(
string: true,
rewrite_requires: true,
module_id_generator: proc { |input|
input.path.sub(%r(^(app|config|lib)/), '').sub(/\.js$/, '')
input.path.sub(%r(^(app|lib)/), '').sub(/\.js$/, '')
}
)
concat 'application.js'
@ -77,9 +77,18 @@ input 'assets/stylesheets' do
end
end
# output 'public'
# input 'assets', 'index.html.erb' do
# filter(Rake::Pipeline::Web::Filters::TiltFilter) do |input|
# input.sub /\\.erb$/, ''
# end
# end
output 'public/images'
input 'assets/images' do
match '**/*' do
copy
end
end
output 'public'
input 'assets/static' do
match '**/*' do
copy
end
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -7,6 +7,8 @@ require 'ext/jquery'
@Travis = Em.Namespace.create
CONFIG_KEYS: ['rvm', 'gemfile', 'env', 'otp_release', 'php', 'node_js', 'perl', 'python', 'scala']
INTERVALS: { sponsors: -1, times: -1 }
# QUEUES: [
# { name: 'common', display: 'Common' },
# { name: 'php', display: 'PHP, Perl and Python' },
@ -27,6 +29,7 @@ require 'ext/jquery'
App: Em.Application.extend
initialize: (router) ->
@store = Travis.Store.create()
@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
@routes = Travis.Router.create(app: this)
@_super(Em.Object.create())
@routes.start()
@ -39,4 +42,7 @@ require 'router'
require 'store'
require 'templates'
require 'views'
require 'locales'
require 'config/locales'
require 'data/sponsors'

View File

@ -1,16 +1,47 @@
require 'helpers'
require 'travis/ticker'
Travis.Controllers = Em.Namespace.create
AppController: Em.Controller.extend()
RepositoriesController: Em.ArrayController.extend()
RepositoryController: Em.ObjectController.extend(Travis.Urls.Repository)
TabsController: Em.Controller.extend()
BuildsController: Em.ArrayController.extend()
BuildController: Em.ObjectController.extend(Travis.Urls.Commit)
JobController: Em.ObjectController.extend(Travis.Urls.Commit)
SidebarController: Em.Controller.extend()
QueuesController: Em.ArrayController.extend()
SponsorsController: Em.ArrayController.extend
page: 0
arrangedContent: (->
@get('shuffled').slice(@start(), @end())
).property('shuffled.length', 'page')
shuffled: (->
if content = @get('content') then $.shuffle(content) else []
).property('content.length')
next: ->
@set('page', if @isLast() then 0 else @get('page') + 1)
pages: (->
length = @getPath('content.length')
if length then parseInt(length / @get('perPage') + 1) else 1
).property('length')
isLast: ->
@get('page') == @get('pages') - 1
start: ->
@get('page') * @get('perPage')
end: ->
@start() + @get('perPage')
WorkersController: Em.ArrayController.extend
groups: (->
groups = {}

View File

@ -8,7 +8,7 @@ Travis.Layout.Base = Em.Object.extend
$.extend this, Travis.Views
for name in controllers
key = "#{name}Controller"
key = "#{$.camelize(name, false)}Controller"
name = $.camelize(key)
this[key] = Travis.Controllers[name].create(namespace: this, controllers: this)

View File

@ -2,14 +2,28 @@ require 'layout/base'
Travis.Layout.Sidebar = Travis.Layout.Base.extend
init: ->
@_super('sidebar', 'workers', 'queues')
@_super('sidebar', 'sponsors', 'workers', 'queues')
@appController = @get('appController')
@connectSponsors(Travis.Sponsor.decks(), Travis.Sponsor.links())
@connectWorkers(Travis.Worker.find())
@connectQueues(Travis.QUEUES)
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
connect: ->
@appController.connectOutlet(outletName: 'right', name: 'sidebar')
connectSponsors: (decks, links) ->
@sponsorsController = Em.Controller.create
decks: Travis.Controllers.SponsorsController.create(perPage: 1, content: decks)
links: Travis.Controllers.SponsorsController.create(perPage: 6, content: links)
@appController.set 'sponsors', @sponsorsController
tick: ->
@sponsorsController.get('decks').next()
@sponsorsController.get('links').next()
connectWorkers: (workers) ->
@workersController.set('content', workers)
@appController.set('workers', @workersController)

View File

@ -3,5 +3,6 @@ require 'models/build'
require 'models/commit'
require 'models/job'
require 'models/repository'
require 'models/sponsor'
require 'models/worker'

View File

@ -0,0 +1,30 @@
require 'travis/model'
@Travis.Sponsor = Travis.Model.extend
type: DS.attr('string')
url: DS.attr('string')
link: DS.attr('string')
image: (->
"images/sponsors/#{@getPath('data.image')}"
).property('data.image')
Travis.Sponsor.reopenClass
decks: ->
@platinum().concat @gold()
platinum: ->
platinum = @byType('platinum').toArray()
[sponsor] for sponsor in platinum
gold: ->
gold = @byType('gold').toArray()
gold.splice(0, 2) while gold.length > 0
links: ->
@byType('silver')
byType: ->
types = Array.prototype.slice.apply(arguments)
Travis.Sponsor.filter (sponsor) -> types.indexOf(sponsor.get('type')) != -1

View File

@ -1,20 +1,11 @@
<div id="right" class="maximized">
<div class="slider"><div class='icon'></div>&nbsp;</div>
<div class="inner"><div class='wrapper'>
<!--
<h4>{{t layouts.application.sponsers}}</h4>
<div class="sponsors top"></div>
<p class="hint"><a href="https://love.travis-ci.org/sponsors">{{{t layouts.application.sponsors_link}}}</a></p>
-->
{{view Travis.Views.WorkersView groupsBinding="controller.workers" id="workers"}}
{{view Travis.Views.QueuesView queuesBinding="controller.queues" id="queues"}}
<!--
<div class="box">
<h4>{{t layouts.application.sponsers}}</h4>
<div class="sponsors bottom"></div>
</div>
{{view templateName="sponsors/decks"}}
{{view templateName="workers/list" id="workers"}}
{{view templateName="queues/list" id="queues"}}
{{view templateName="sponsors/links"}}
<div id="alpha_warning" class="box">
<h4>{{t layouts.about.alpha}}</h4>
@ -29,12 +20,9 @@
<li><a href="irc://irc.freenode.net#travis">irc.freenode.net#travis</a></li>
</ul>
</div>
-->
</div></div>
</div>
<!--
<div id="github">
<a href="https://github.com/travis-ci" title="Fork me on GitHub">{{t layouts.application.fork_me}}</a>
</div>
-->

View File

@ -0,0 +1,13 @@
<h4>{{t layouts.application.sponsers}}</h4>
<ul class="sponsors top">
{{#each deck in sponsors.decks}}
{{#each deck}}
<li>
<a {{bindAttr href="url"}}>
<img {{bindAttr src="image"}}>
</a>
</li>
{{/each}}
{{/each}}
</ul>
<p class="hint"><a href="https://love.travis-ci.org/sponsors">{{{t layouts.application.sponsors_link}}}</a></p>

View File

@ -0,0 +1,11 @@
<div class="box">
<h4>{{t layouts.application.sponsers}}</h4>
<ul class="sponsors bottom">
{{#each sponsors.links}}
<li>
{{{link}}}
</li>
{{/each}}
</ul>
</div>

View File

@ -1,9 +1,7 @@
require 'ext/ember/namespace'
@Travis.Views = Em.Namespace.create
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
QueuesView: Em.View.extend(templateName: 'queues/list')
WorkersView: Em.View.extend(templateName: 'workers/list')
SidebarView: Em.View.extend(templateName: 'layouts/sidebar')
require 'views/build'
require 'views/job'

View File

@ -0,0 +1,44 @@
@Travis.SPONSORS = [
{ type: 'platinum', url: "http://www.wooga.com", image: "wooga-205x130.png" }
{ type: 'platinum', url: "http://bendyworks.com", image: "bendyworks-205x130.png" }
{ type: 'platinum', url: "http://cloudcontrol.com", image: "cloudcontrol-205x130.png" }
{ type: 'platinum', url: "http://xing.de", image: "xing-205x130.png" }
{ type: 'gold', url: "http://heroku.com", image: "heroku-205x60.png" }
{ type: 'gold', url: "http://soundcloud.com", image: "soundcloud-205x60.png" }
{ type: 'gold', url: "http://nedap.com", image: "nedap-205x60.png" }
{ type: 'gold', url: "http://mongohq.com", image: "mongohq-205x60.png" }
{ type: 'gold', url: "http://zweitag.de", image: "zweitag-205x60.png" }
{ type: 'gold', url: "http://kanbanery.com", image: "kanbanery-205x60.png" }
{ type: 'gold', url: "http://ticketevolution.com", image: "ticketevolution-205x60.jpg" }
{ type: 'gold', url: "http://plan.io/travis", image: "planio-205x60.png" }
{ type: 'silver', link: "<a href=\"http://cobot.me\">Cobot</a><span>: The one tool to run your coworking space</span>" }
{ type: 'silver', link: "<a href=\"http://jumpstartlab.com\">JumpstartLab</a><span>: We build developers</span>" }
{ type: 'silver', link: "<a href=\"http://evilmartians.com\">Evil Martians</a><span>: Agile Ruby on Rails development</span>" }
{ type: 'silver', link: "<a href=\"http://zendesk.com\">Zendesk</a><span>: Love your helpdesk</span>" }
{ type: 'silver', link: "<a href=\"http://stripe.com\">Stripe</a><span>: Payments for developers</span>" }
{ type: 'silver', link: "<a href=\"http://basho.com\">Basho</a><span>: We make Riak!</span>" }
{ type: 'silver', link: "<a href=\"http://thinkrelevance.com\">Relevance</a><span>: We deliver software solutions</span>" }
{ type: 'silver', link: "<a href=\"http://mindmatters.de\">Mindmatters</a><span>: Software für Menschen</span>" }
{ type: 'silver', link: "<a href=\"http://amenhq.com\">Amen</a><span>: The best and worst of everything</span>" }
{ type: 'silver', link: "<a href=\"http://site5.com\">Site5</a><span>: Premium Web Hosting Solutions</span>" }
{ type: 'silver', link: "<a href=\"http://www.crowdint.com\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>" }
{ type: 'silver', link: "<a href=\"http://www.atomicobject.com/detroit\">Atomic Object</a><span>: Work with really smart people</span>" }
{ type: 'silver', link: "<a href=\"http://codeminer.com.br\">Codeminer</a><span>: smart services for your startup</span>" }
{ type: 'silver', link: "<a href=\"http://cloudant.com\">Cloudant</a><span>: grow into your data layer, not out of it</span>" }
{ type: 'silver', link: "<a href=\"http://gidsy.com\">Gidsy</a><span>: Explore, organize &amp; book unique things to do!</span>" }
{ type: 'silver', link: "<a href=\"http://5apps.com\">5apps</a><span>: Package &amp; deploy HTML5 apps automatically</span>" }
{ type: 'silver', link: "<a href=\"http://meltmedia.com\">Meltmedia</a><span>: We are Interactive Superheroes</span>" }
{ type: 'silver', link: "<a href=\"http://www.fngtps.com\">Fingertips</a><span> offers design and development services</span>" }
{ type: 'silver', link: "<a href=\"http://www.engineyard.com\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>" }
{ type: 'silver', link: "<a href=\"http://malwarebytes.org\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>" }
{ type: 'silver', link: "<a href=\"http://readmill.com\">Readmill</a><span>: The best reading app on the iPad.</span>" }
{ type: 'silver', link: "<a href=\"http://www.mdsol.com\">Medidata</a><span>: clinical tech improving quality of life</span>" }
{ type: 'silver', link: "<a href=\"http://coderwall.com/teams/4f27194e973bf000040005f0\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>" }
{ type: 'silver', link: "<a href=\"http://twitter.com\">Twitter</a><span>: instantly connects people everywhere</span>" }
{ type: 'silver', link: "<a href=\"http://agileanimal.com\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>" }
{ type: 'silver', link: "<a href=\"http://tupalo.com\">Tupalo</a><span>: Discover, review &amp; share local businesses.</span>" }
]

View File

@ -143,5 +143,15 @@ $.extend
ret[ret.length] = value if value?
ret.concat.apply [], ret
shuffle: (array) ->
array = array.slice()
top = array.length
while top && --top
current = Math.floor(Math.random() * (top + 1))
tmp = array[current]
array[current] = array[top]
array[top] = tmp
array
truncate: (string, length) ->
if string.length > length then string.trim().substring(0, length) + '...' else string

View File

@ -1,18 +1,16 @@
@Travis.Ticker = Ember.Object.extend
init: ->
@_super()
@schedule()
@schedule() unless @get('interval') == -1
tick: ->
context = @get('context')
@get('targets').forEach (target) =>
target = context.get(target)
return unless target
if target.forEach
target.forEach (target) -> target.tick()
else
target.tick()
targets = @get('targets') || [@get('target')]
for target in targets
target = context.get(target) if context
target.tick() if target
@schedule()
schedule: ->
Ember.run.later((=> @tick()), Travis.app.TICK_INTERVAL)
Ember.run.later((=> @tick()), @get('interval') || Travis.app.TICK_INTERVAL)

135
assets/static/sponsors.json Normal file
View File

@ -0,0 +1,135 @@
{
"platinum": [
{
"url": "http://www.wooga.com",
"image": "wooga-205x130.png"
},
{
"url": "http://bendyworks.com",
"image": "bendyworks-205x130.png"
},
{
"url": "http://cloudcontrol.com",
"image": "cloudcontrol-205x130.png"
},
{
"url": "http://xing.de",
"image": "xing-205x130.png"
}
],
"gold": [
{
"url": "http://heroku.com",
"image": "heroku-205x60.png"
},
{
"url": "http://soundcloud.com",
"image": "soundcloud-205x60.png"
},
{
"url": "http://nedap.com",
"image": "nedap-205x60.png"
},
{
"url": "http://mongohq.com",
"image": "mongohq-205x60.png"
},
{
"url": "http://zweitag.de",
"image": "zweitag-205x60.png"
},
{
"url": "http://kanbanery.com",
"image": "kanbanery-205x60.png"
},
{
"url": "http://ticketevolution.com",
"image": "ticketevolution-205x60.jpg"
},
{
"url": "http://plan.io/travis",
"image": "planio-205x60.png"
}
],
"silver": [
{
"link": "<a href=\"http://cobot.me\">Cobot</a><span>: The one tool to run your coworking space</span>"
},
{
"link": "<a href=\"http://jumpstartlab.com\">JumpstartLab</a><span>: We build developers</span>"
},
{
"link": "<a href=\"http://evilmartians.com\">Evil Martians</a><span>: Agile Ruby on Rails development</span>"
},
{
"link": "<a href=\"http://zendesk.com\">Zendesk</a><span>: Love your helpdesk</span>"
},
{
"link": "<a href=\"http://stripe.com\">Stripe</a><span>: Payments for developers</span>"
},
{
"link": "<a href=\"http://basho.com\">Basho</a><span>: We make Riak!</span>"
},
{
"link": "<a href=\"http://thinkrelevance.com\">Relevance</a><span>: We deliver software solutions</span>"
},
{
"link": "<a href=\"http://mindmatters.de\">Mindmatters</a><span>: Software für Menschen</span>"
},
{
"link": "<a href=\"http://amenhq.com\">Amen</a><span>: The best and worst of everything</span>"
},
{
"link": "<a href=\"http://site5.com\">Site5</a><span>: Premium Web Hosting Solutions</span>"
},
{
"link": "<a href=\"http://www.crowdint.com\">Crowd Interactive</a><span>: Leading Rails consultancy in Mexico</span>"
},
{
"link": "<a href=\"http://www.atomicobject.com/detroit\">Atomic Object</a><span>: Work with really smart people</span>"
},
{
"link": "<a href=\"http://codeminer.com.br\">Codeminer</a><span>: smart services for your startup</span>"
},
{
"link": "<a href=\"http://cloudant.com\">Cloudant</a><span>: grow into your data layer, not out of it</span>"
},
{
"link": "<a href=\"http://gidsy.com\">Gidsy</a><span>: Explore, organize &amp; book unique things to do!</span>"
},
{
"link": "<a href=\"http://5apps.com\">5apps</a><span>: Package &amp; deploy HTML5 apps automatically</span>"
},
{
"link": "<a href=\"http://meltmedia.com\">Meltmedia</a><span>: We are Interactive Superheroes</span>"
},
{
"link": "<a href=\"http://www.fngtps.com\">Fingertips</a><span> offers design and development services</span>"
},
{
"link": "<a href=\"http://www.fngtps.com\">Engine Yard</a><span>: Build epic apps, let us handle the rest</span>"
},
{
"link": "<a href=\"http://malwarebytes.org\">Malwarebytes</a><span>: Defeat Malware once and for all.</span>"
},
{
"link": "<a href=\"http://readmill.com\">Readmill</a><span>: The best reading app on the iPad.</span>"
},
{
"link": "<a href=\"http://www.mdsol.com\">Medidata</a><span>: clinical tech improving quality of life</span>"
},
{
"link": "<a href=\"http://coderwall.com/teams/4f27194e973bf000040005f0\">ESM</a><span>: Japan's best agile Ruby/Rails consultancy</span>"
},
{
"link": "<a href=\"http://twitter.com\">Twitter</a><span>: instantly connects people everywhere</span>"
},
{
"link": "<a href=\"http://agileanimal.com\">AGiLE ANiMAL</a><span>: we <3 Travis CI.</span>"
},
{
"link": "<a href=\"http://tupalo.com\">Tupalo</a><span>: Discover, review &amp; share local businesses.</span>"
}
]
}

View File

@ -23,7 +23,7 @@ body {
font-weight: bold;
}
#left, #main {
#left, #main, #right {
float: left;
}

View File

@ -0,0 +1,79 @@
#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
#HTMLReporter a { text-decoration: none; }
#HTMLReporter a:hover { text-decoration: underline; }
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
#HTMLReporter .version { color: #aaaaaa; }
#HTMLReporter .banner { margin-top: 14px; }
#HTMLReporter .duration { color: #aaaaaa; float: right; }
#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
#HTMLReporter .runningAlert { background-color: #666666; }
#HTMLReporter .skippedAlert { background-color: #aaaaaa; }
#HTMLReporter .skippedAlert:first-child { background-color: #333333; }
#HTMLReporter .skippedAlert:hover { text-decoration: none; color: white; text-decoration: underline; }
#HTMLReporter .passingAlert { background-color: #a6b779; }
#HTMLReporter .passingAlert:first-child { background-color: #5e7d00; }
#HTMLReporter .failingAlert { background-color: #cf867e; }
#HTMLReporter .failingAlert:first-child { background-color: #b03911; }
#HTMLReporter .results { margin-top: 14px; }
#HTMLReporter #details { display: none; }
#HTMLReporter .resultsMenu, #HTMLReporter .resultsMenu a { background-color: #fff; color: #333333; }
#HTMLReporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
#HTMLReporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
#HTMLReporter.showDetails .detailsMenuItem { font-weight: bold; text-decoration: underline; }
#HTMLReporter.showDetails .summary { display: none; }
#HTMLReporter.showDetails #details { display: block; }
#HTMLReporter .summaryMenuItem { font-weight: bold; text-decoration: underline; }
#HTMLReporter .summary { margin-top: 14px; }
#HTMLReporter .summary .suite .suite, #HTMLReporter .summary .specSummary { margin-left: 14px; }
#HTMLReporter .summary .specSummary.passed a { color: #5e7d00; }
#HTMLReporter .summary .specSummary.failed a { color: #b03911; }
#HTMLReporter .description + .suite { margin-top: 0; }
#HTMLReporter .suite { margin-top: 14px; }
#HTMLReporter .suite a { color: #333333; }
#HTMLReporter #details .specDetail { margin-bottom: 28px; }
#HTMLReporter #details .specDetail .description { display: block; color: white; background-color: #b03911; }
#HTMLReporter .resultMessage { padding-top: 14px; color: #333333; }
#HTMLReporter .resultMessage span.result { display: block; }
#HTMLReporter .stackTrace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666666; border: 1px solid #ddd; background: white; white-space: pre; }
#TrivialReporter { padding: 8px 13px; clear: both; overflow-y: scroll; background-color: white; font-family: "Helvetica Neue Light", "Lucida Grande", "Calibri", "Arial", sans-serif; /*.resultMessage {*/ /*white-space: pre;*/ /*}*/ }
#TrivialReporter a:visited, #TrivialReporter a { color: #303; }
#TrivialReporter a:hover, #TrivialReporter a:active { color: blue; }
#TrivialReporter .run_spec { float: right; padding-right: 5px; font-size: .8em; text-decoration: none; }
#TrivialReporter .banner { color: #303; background-color: #fef; padding: 5px; }
#TrivialReporter .logo { float: left; font-size: 1.1em; padding-left: 5px; }
#TrivialReporter .logo .version { font-size: .6em; padding-left: 1em; }
#TrivialReporter .runner.running { background-color: yellow; }
#TrivialReporter .options { text-align: right; font-size: .8em; }
#TrivialReporter .suite { border: 1px outset gray; margin: 5px 0; padding-left: 1em; }
#TrivialReporter .suite .suite { margin: 5px; }
#TrivialReporter .suite.passed { background-color: #dfd; }
#TrivialReporter .suite.failed { background-color: #fdd; }
#TrivialReporter .spec { margin: 5px; padding-left: 1em; clear: both; }
#TrivialReporter .spec.failed, #TrivialReporter .spec.passed, #TrivialReporter .spec.skipped { padding-bottom: 5px; border: 1px solid gray; }
#TrivialReporter .spec.failed { background-color: #fbb; border-color: red; }
#TrivialReporter .spec.passed { background-color: #bfb; border-color: green; }
#TrivialReporter .spec.skipped { background-color: #bbb; }
#TrivialReporter .messages { border-left: 1px dashed gray; padding-left: 1em; padding-right: 1em; }
#TrivialReporter .passed { background-color: #cfc; display: none; }
#TrivialReporter .failed { background-color: #fbb; }
#TrivialReporter .skipped { color: #777; background-color: #eee; display: none; }
#TrivialReporter .resultMessage span.result { display: block; line-height: 2em; color: black; }
#TrivialReporter .resultMessage .mismatch { color: black; }
#TrivialReporter .stackTrace { white-space: pre; font-size: .8em; margin-left: 10px; max-height: 5em; overflow: auto; border: 1px inset red; padding: 1em; background: #eef; }
#TrivialReporter .finished-at { padding-left: 1em; font-size: .6em; }
#TrivialReporter.show-passed .passed, #TrivialReporter.show-skipped .skipped { display: block; }
#TrivialReporter #jasmine_content { position: fixed; right: 100%; }
#TrivialReporter .runner { border: 1px solid gray; display: block; margin: 5px 0; padding: 2px 0 2px 10px; }

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

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