stuff
This commit is contained in:
parent
431deae0c6
commit
00cfe41cc5
|
@ -1,6 +1,5 @@
|
|||
Travis.HomeController = Travis.Controller.extend
|
||||
name: 'home'
|
||||
bindings: []
|
||||
|
||||
init: ->
|
||||
@_super('top', 'repositories', 'repository', 'sidebar')
|
||||
|
|
|
@ -49,10 +49,9 @@ Travis.RepositoryController = Travis.Controller.extend
|
|||
).property('params.id')
|
||||
|
||||
connectTab: (tab) ->
|
||||
unless tab == @get('tab')
|
||||
@set('tab', tab)
|
||||
name = if tab == 'current' then 'build' else tab
|
||||
@connectOutlet(outletName: 'pane', controller: this, viewClass: Travis["#{$.camelize(name)}View"])
|
||||
@set('tab', tab)
|
||||
name = if tab == 'current' then 'build' else tab
|
||||
@connectOutlet(outletName: 'pane', controller: this, viewClass: Travis["#{$.camelize(name)}View"])
|
||||
|
||||
setParams: (params) ->
|
||||
# TODO if we just @set('params', params) it will update the repositoriesByParams property
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{{#if view.repository.isLoaded}}
|
||||
{{#with view.repository}}
|
||||
<div id="repository">
|
||||
<div id="repository" {{bindAttr class="view.class"}}>
|
||||
{{#if view.repository.isLoaded}}
|
||||
{{#with view.repository}}
|
||||
<h3>
|
||||
<a {{bindAttr href="view.urlGithub"}}>{{slug}}</a>
|
||||
</h3>
|
||||
|
@ -14,15 +14,13 @@
|
|||
</ul>
|
||||
|
||||
{{view Travis.TabsView}}
|
||||
</div>
|
||||
|
||||
<div class="tab">
|
||||
{{outlet pane}}
|
||||
</div>
|
||||
{{/with}}
|
||||
{{else}}
|
||||
<div id="repository" class="loading">
|
||||
{{/with}}
|
||||
{{else}}
|
||||
<span>Loading</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<div class="tab">
|
||||
{{outlet pane}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<h4>{{t workers}}</h4>
|
||||
<ul>
|
||||
<ul id="workers">
|
||||
{{#each group in controller.groups}}
|
||||
<li class="group">
|
||||
<h5>{{group.firstObject.host}}</h5>
|
||||
|
|
|
@ -46,6 +46,10 @@
|
|||
|
||||
repositoryBinding: 'controller.repository'
|
||||
|
||||
class: (->
|
||||
'loading' unless @getPath('repository.isLoaded')
|
||||
).property('repository.isLoaded')
|
||||
|
||||
urlGithub: (->
|
||||
Travis.Urls.githubRepository(@getPath('repository.slug'))
|
||||
).property('repository.slug'),
|
||||
|
|
|
@ -93,6 +93,14 @@ for repository in repositories
|
|||
responseTime: responseTime
|
||||
responseText: { builds: $.select(builds, (build) -> repository.build_ids.indexOf(build.id) != -1) }
|
||||
|
||||
$.mockjax
|
||||
url: '/builds'
|
||||
data: { repository_id: repository.id, event_type: 'push', orderBy: 'number DESC' }
|
||||
responseTime: responseTime
|
||||
responseText:
|
||||
builds: (builds[id - 1] for id in repository.build_ids)
|
||||
commits: (commits[builds[id - 1].commit_id - 1] for id in repository.build_ids)
|
||||
|
||||
for build in builds
|
||||
$.mockjax
|
||||
url: '/builds/' + build.id
|
||||
|
@ -102,14 +110,11 @@ for build in builds
|
|||
commit: commits[build.commit_id - 1]
|
||||
jobs: (jobs[id - 1] for id in build.job_ids)
|
||||
|
||||
for repository in repositories
|
||||
$.mockjax
|
||||
url: '/builds'
|
||||
data: { repository_id: repository.id, event_type: 'push', orderBy: 'number DESC' }
|
||||
responseTime: responseTime
|
||||
responseText:
|
||||
builds: (builds[id - 1] for id in repository.build_ids)
|
||||
commits: (commits[builds[id - 1].commit_id - 1] for id in repository.build_ids)
|
||||
# $.mockjax
|
||||
# url: '/jobs'
|
||||
# data: { ids: build.job_ids.join(',') }
|
||||
# responseTime: responseTime
|
||||
# responseText: { jobs: $.select(jobs, (job) -> build.job_ids.indexOf(job.id) != -1) }
|
||||
|
||||
for job in jobs
|
||||
$.mockjax
|
||||
|
@ -119,6 +124,12 @@ for job in jobs
|
|||
job: job,
|
||||
commit: commits[job.commit_id - 1]
|
||||
|
||||
$.mockjax
|
||||
url: '/jobs'
|
||||
responseTime: responseTime
|
||||
responseText:
|
||||
jobs: $.select(jobs, (job) -> job.state == 'created')
|
||||
|
||||
for data in branches
|
||||
$.mockjax
|
||||
url: '/branches'
|
||||
|
@ -138,12 +149,6 @@ $.mockjax
|
|||
responseTime: responseTime
|
||||
responseText: { workers: workers }
|
||||
|
||||
$.mockjax
|
||||
url: '/jobs'
|
||||
responseTime: responseTime
|
||||
responseText:
|
||||
jobs: $.select(jobs, (job) -> job.state == 'created')
|
||||
|
||||
$.mockjax
|
||||
url: '/profile/hooks'
|
||||
responseTime: responseTime
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# describe 'on the "build" state', ->
|
||||
# beforeEach ->
|
||||
# app '!/travis-ci/travis-core/builds/1'
|
||||
# waitFor reposRendered
|
||||
# waitFor buildRendered
|
||||
#
|
||||
# it 'displays the expected stuff', ->
|
||||
|
|
|
@ -78,23 +78,33 @@ describe 'events', ->
|
|||
# row: 3
|
||||
# item: { id: 10, number: '1.4', repo: 'travis-ci/travis-core', finishedAt: 'less than a minute ago', duration: '55 sec', rvm: 'jruby' }
|
||||
|
||||
describe 'an event adding a job', ->
|
||||
# it 'adds a job to the jobs queue', ->
|
||||
# Em.run ->
|
||||
# Travis.app.receive 'job:created',
|
||||
# job:
|
||||
# id: 10
|
||||
# repository_id: 1
|
||||
# number: '1.4'
|
||||
# queue: 'common'
|
||||
|
||||
# listsQueuedJob
|
||||
# name: 'common'
|
||||
# row: 3
|
||||
# item: { number: '1.4', repo: 'travis-ci/travis-core' }
|
||||
|
||||
describe 'an event adding a worker', ->
|
||||
beforeEach ->
|
||||
app ''
|
||||
waitFor jobsRendered
|
||||
waitFor queuesRendered
|
||||
waitFor workersRendered
|
||||
|
||||
it 'adds a job to the jobs queue', ->
|
||||
it 'adds a worker to the workers list', ->
|
||||
Em.run ->
|
||||
Travis.app.receive 'job:created',
|
||||
job:
|
||||
Travis.app.receive 'worker:added',
|
||||
worker:
|
||||
id: 10
|
||||
repository_id: 1
|
||||
number: '1.4'
|
||||
queue: 'common'
|
||||
|
||||
listsQueuedJob
|
||||
name: 'common'
|
||||
listsWorker
|
||||
group: 'workers.travis-ci.org'
|
||||
row: 3
|
||||
item: { number: '1.4', repo: 'travis-ci/travis-core' }
|
||||
item: { 'ruby-3' }
|
||||
|
||||
|
|
11
assets/javascripts/spec/sidebar_spec.coffee
Normal file
11
assets/javascripts/spec/sidebar_spec.coffee
Normal file
|
@ -0,0 +1,11 @@
|
|||
# describe 'the sidebar', ->
|
||||
# beforeEach ->
|
||||
# app '!/travis-ci/travis-core/jobs/1'
|
||||
# waitFor jobRendered
|
||||
# waitFor hasText('#tab_build', 'Build #1')
|
||||
#
|
||||
# it 'displays the expected stuff', ->
|
||||
# listsQueues [
|
||||
# { name: 'common', item: { number: '5.1', repo: 'travis-ci/travis-core' } }
|
||||
# { name: 'common', item: { number: '5.2', repo: 'travis-ci/travis-core' } }
|
||||
# ]
|
|
@ -4,10 +4,11 @@
|
|||
@hasText = (selector, text) ->
|
||||
-> $(selector).text().trim() == text
|
||||
|
||||
@reposRendered = notEmpty('#repositories li a.current')
|
||||
@buildRendered = notEmpty('#summary .number')
|
||||
@buildsRendered = notEmpty('#builds .number')
|
||||
@jobRendered = notEmpty('#summary .number')
|
||||
@jobsRendered = notEmpty('#jobs .number')
|
||||
@queuesRendered = notEmpty('#queue_common li')
|
||||
@reposRendered = notEmpty('#repositories li a.current')
|
||||
@buildRendered = notEmpty('#summary .number')
|
||||
@buildsRendered = notEmpty('#builds .number')
|
||||
@jobRendered = notEmpty('#summary .number')
|
||||
@jobsRendered = notEmpty('#jobs .number')
|
||||
@queuesRendered = notEmpty('#queue_common li')
|
||||
@workersRendered = notEmpty('.worker')
|
||||
|
||||
|
|
|
@ -44,24 +44,38 @@
|
|||
listsItems('repo', items)
|
||||
|
||||
@listsRepo = (data) ->
|
||||
repo = data.repo
|
||||
row = $('#repositories li')[data.row - 1]
|
||||
repo = data.item
|
||||
|
||||
expect($('a.current', row).attr('href')).toEqual "#!/#{repo.slug}"
|
||||
expect($('a.last_build', row).attr('href')).toEqual repo.build.url
|
||||
expect($('.duration', row).text()).toEqual repo.build.duration
|
||||
expect($('.finished_at', row).text()).toEqual repo.build.finishedAt
|
||||
|
||||
@listsBuilds = (builds) ->
|
||||
listsItems('build', builds)
|
||||
|
||||
@listsBuild = (data) ->
|
||||
row = $('#builds tbody tr')[data.row - 1]
|
||||
build = data.item
|
||||
|
||||
expect($('.number a', row).attr('href')).toEqual "#!/#{build.slug}/builds/#{build.id}"
|
||||
expect($('.number a', row).text()).toEqual build.number
|
||||
expect($('.message', row).text()).toEqual build.message
|
||||
expect($('.duration', row).text()).toEqual build.duration
|
||||
expect($('.finished_at', row).text()).toEqual build.finishedAt
|
||||
expect($(row).attr('class')).toEqual build.color
|
||||
|
||||
@listsJobs = (data) ->
|
||||
table = $(data.table)
|
||||
headers = ($(element).text() for element in $("thead th", table))
|
||||
expect(headers).toEqual(data.headers)
|
||||
|
||||
$.each data.jobs, (row, job) -> listsJob(table: data.table, row: row + 1, job: job)
|
||||
$.each data.jobs, (row, job) -> listsJob(table: data.table, row: row + 1, item: job)
|
||||
|
||||
@listsJob = (data) ->
|
||||
row = $('tbody tr', data.table)[data.row - 1]
|
||||
job = data.job
|
||||
job = data.item
|
||||
|
||||
element = $(row)
|
||||
expect(element.attr('class')).toEqual job.color
|
||||
|
@ -81,20 +95,6 @@
|
|||
element = $("td:nth-child(6)", row)
|
||||
expect(element.text()).toEqual job.rvm
|
||||
|
||||
@listsBuilds = (builds) ->
|
||||
listsItems('build', jobs)
|
||||
|
||||
@listsBuild = (data) ->
|
||||
row = $('#builds tbody tr')[data.row - 1]
|
||||
build = data.item
|
||||
|
||||
expect($('.number a', row).attr('href')).toEqual "#!/#{build.slug}/builds/#{build.id}"
|
||||
expect($('.number a', row).text()).toEqual build.number
|
||||
expect($('.message', row).text()).toEqual build.message
|
||||
expect($('.duration', row).text()).toEqual build.duration
|
||||
expect($('.finished_at', row).text()).toEqual build.finishedAt
|
||||
expect($(row).attr('class')).toEqual build.color
|
||||
|
||||
@listsQueuedJobs = (jobs) ->
|
||||
listsItems('queuedJob', jobs)
|
||||
|
||||
|
@ -106,8 +106,7 @@
|
|||
expect(text).toContain "##{job.number}"
|
||||
|
||||
@listsItems = (type, items) ->
|
||||
console.log items
|
||||
$.each items, (item, row) ->
|
||||
$.each items, (row, item) =>
|
||||
this["lists#{$.camelize(type)}"](item: item, row: row + 1)
|
||||
|
||||
|
||||
|
|
1
assets/javascripts/vendor/ember-data.js
vendored
1
assets/javascripts/vendor/ember-data.js
vendored
|
@ -4007,6 +4007,7 @@ DS.RESTAdapter = DS.Adapter.extend({
|
|||
data: { ids: ids },
|
||||
success: function(json) {
|
||||
this.sideload(store, type, json, plural);
|
||||
console.log(type, json, plural)
|
||||
store.loadMany(type, json[plural]);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -77,6 +77,9 @@ pre::-webkit-scrollbar-thumb:horizontal
|
|||
color: #aaa
|
||||
background: inline-image('spinner.gif') no-repeat right 4px
|
||||
|
||||
.loading
|
||||
display: none
|
||||
|
||||
.emoji
|
||||
vertical-align: middle
|
||||
width: 20px
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -16,29 +16,24 @@
|
|||
(function() {
|
||||
|
||||
describe('events', function() {
|
||||
return describe('an event adding a job', function() {
|
||||
return describe('an event adding a worker', function() {
|
||||
beforeEach(function() {
|
||||
app('');
|
||||
waitFor(jobsRendered);
|
||||
return waitFor(queuesRendered);
|
||||
return waitFor(workersRendered);
|
||||
});
|
||||
return it('adds a job to the jobs queue', function() {
|
||||
return it('adds a worker to the workers list', function() {
|
||||
Em.run(function() {
|
||||
return Travis.app.receive('job:created', {
|
||||
job: {
|
||||
id: 10,
|
||||
repository_id: 1,
|
||||
number: '1.4',
|
||||
queue: 'common'
|
||||
return Travis.app.receive('worker:added', {
|
||||
worker: {
|
||||
id: 10
|
||||
}
|
||||
});
|
||||
});
|
||||
return listsQueuedJob({
|
||||
name: 'common',
|
||||
return listsWorker({
|
||||
group: 'workers.travis-ci.org',
|
||||
row: 3,
|
||||
item: {
|
||||
number: '1.4',
|
||||
repo: 'travis-ci/travis-core'
|
||||
'ruby-3': 'ruby-3'
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -55,6 +50,11 @@
|
|||
|
||||
|
||||
|
||||
}).call(this);
|
||||
(function() {
|
||||
|
||||
|
||||
|
||||
}).call(this);
|
||||
(function() {
|
||||
var _Date;
|
||||
|
@ -117,6 +117,8 @@
|
|||
|
||||
this.queuesRendered = notEmpty('#queue_common li');
|
||||
|
||||
this.workersRendered = notEmpty('.worker');
|
||||
|
||||
}).call(this);
|
||||
(function() {
|
||||
|
||||
|
@ -180,14 +182,30 @@
|
|||
|
||||
this.listsRepo = function(data) {
|
||||
var repo, row;
|
||||
repo = data.repo;
|
||||
row = $('#repositories li')[data.row - 1];
|
||||
repo = data.item;
|
||||
expect($('a.current', row).attr('href')).toEqual("#!/" + repo.slug);
|
||||
expect($('a.last_build', row).attr('href')).toEqual(repo.build.url);
|
||||
expect($('.duration', row).text()).toEqual(repo.build.duration);
|
||||
return expect($('.finished_at', row).text()).toEqual(repo.build.finishedAt);
|
||||
};
|
||||
|
||||
this.listsBuilds = function(builds) {
|
||||
return listsItems('build', builds);
|
||||
};
|
||||
|
||||
this.listsBuild = function(data) {
|
||||
var build, row;
|
||||
row = $('#builds tbody tr')[data.row - 1];
|
||||
build = data.item;
|
||||
expect($('.number a', row).attr('href')).toEqual("#!/" + build.slug + "/builds/" + build.id);
|
||||
expect($('.number a', row).text()).toEqual(build.number);
|
||||
expect($('.message', row).text()).toEqual(build.message);
|
||||
expect($('.duration', row).text()).toEqual(build.duration);
|
||||
expect($('.finished_at', row).text()).toEqual(build.finishedAt);
|
||||
return expect($(row).attr('class')).toEqual(build.color);
|
||||
};
|
||||
|
||||
this.listsJobs = function(data) {
|
||||
var element, headers, table;
|
||||
table = $(data.table);
|
||||
|
@ -206,7 +224,7 @@
|
|||
return listsJob({
|
||||
table: data.table,
|
||||
row: row + 1,
|
||||
job: job
|
||||
item: job
|
||||
});
|
||||
});
|
||||
};
|
||||
|
@ -214,7 +232,7 @@
|
|||
this.listsJob = function(data) {
|
||||
var element, job, row;
|
||||
row = $('tbody tr', data.table)[data.row - 1];
|
||||
job = data.job;
|
||||
job = data.item;
|
||||
element = $(row);
|
||||
expect(element.attr('class')).toEqual(job.color);
|
||||
element = $("td.number", row);
|
||||
|
@ -229,22 +247,6 @@
|
|||
return expect(element.text()).toEqual(job.rvm);
|
||||
};
|
||||
|
||||
this.listsBuilds = function(builds) {
|
||||
return listsItems('build', jobs);
|
||||
};
|
||||
|
||||
this.listsBuild = function(data) {
|
||||
var build, row;
|
||||
row = $('#builds tbody tr')[data.row - 1];
|
||||
build = data.item;
|
||||
expect($('.number a', row).attr('href')).toEqual("#!/" + build.slug + "/builds/" + build.id);
|
||||
expect($('.number a', row).text()).toEqual(build.number);
|
||||
expect($('.message', row).text()).toEqual(build.message);
|
||||
expect($('.duration', row).text()).toEqual(build.duration);
|
||||
expect($('.finished_at', row).text()).toEqual(build.finishedAt);
|
||||
return expect($(row).attr('class')).toEqual(build.color);
|
||||
};
|
||||
|
||||
this.listsQueuedJobs = function(jobs) {
|
||||
return listsItems('queuedJob', jobs);
|
||||
};
|
||||
|
@ -259,9 +261,9 @@
|
|||
};
|
||||
|
||||
this.listsItems = function(type, items) {
|
||||
console.log(items);
|
||||
return $.each(items, function(item, row) {
|
||||
return this["lists" + ($.camelize(type))]({
|
||||
var _this = this;
|
||||
return $.each(items, function(row, item) {
|
||||
return _this["lists" + ($.camelize(type))]({
|
||||
item: item,
|
||||
row: row + 1
|
||||
});
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -106,15 +106,19 @@ pre::-webkit-scrollbar-thumb:horizontal {
|
|||
color: #aaaaaa;
|
||||
background: url('data:image/gif;base64,R0lGODlhEAAIAPMHAP///+vr66CgoN7e3rW1tYuLi/X19Wtra3t7e87OzsbGxqGhodfX142NjZaWlqurqyH/C05FVFNDQVBFMi4wAwEAAAAh/hoiQ3JlYXRlZCB3aXRoIENoaW1wbHkuY29tIgAh+QQACgD/ACwAAAAAEAAIAAADKXiq0P7glHmglRSMPUDgBlZUQ/B5ZhBOo2Z2qSqSL2qumaEbwK7PFkgCACH5BAAKAP8ALAAAAAAQAAgAAAQwsKCJwLkH6F2Er0dRZJvWfZaYBUNrnAKoAkEdvF6cjrSNoyGe7QaT8QxIpISyI5UiACH5BAAKAP8ALAAAAAAQAAgAAAQvcIkpALoInL0F+Y41ZUdhHh4oCqRZoB8RIqPmwirN2mcqr61ebFYrnSQUC4b3igAAIfkEAAoA/wAsAAAAABAACAAABDAQyCmqACijQpYnQEMQDWZxSgqKpFmhajiWyEmkyjq7ApzLrdqr8wHSThOKBaMpRAAAIfkEAAoA/wAsAAAAABAACAAABDMQyEmBuGKxxBl4y/IADmEKzKAmwMItpEmg6sC6CVye6dq+MV7tBtzNNp1PaGQUVJ6YTAQAIfkEAAoA/wAsAAAAABAACAAABC8QyEmrBSknQJYnxiAGgCIqnKKCQUuaA0qoCuuWZ7oa7pvPO4PQgNFwPAvCZQmIAAAh+QQACgD/ACwAAAAAEAAIAAAEKRDISau1LGlmhg+A5wGJyAUoOKADaRqpyrremYZzWRs8D/QGQGZzKQIiACH5BAAKAP8ALAAAAAAQAAgAAAMhCLrc/iyMGcCcQNLAueVD1o3eAIpk90koZ7wvABvyDEEJADs=') no-repeat right 4px;
|
||||
}
|
||||
|
||||
/* line 80, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.loading .loading {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* line 83, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.emoji {
|
||||
vertical-align: middle;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
/* line 85, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 88, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.help {
|
||||
display: inline-block;
|
||||
height: 19px;
|
||||
|
@ -125,7 +129,7 @@ pre::-webkit-scrollbar-thumb:horizontal {
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* line 94, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 97, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.context_help_caption {
|
||||
text-align: left;
|
||||
font-size: 16px;
|
||||
|
@ -134,27 +138,27 @@ pre::-webkit-scrollbar-thumb:horizontal {
|
|||
border-bottom: 1px solid #cccccc;
|
||||
}
|
||||
|
||||
/* line 101, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 104, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.context_help {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* line 104, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 107, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
.context_help_body {
|
||||
font-size: 1em;
|
||||
line-height: 1.429;
|
||||
margin: 1.429em 0;
|
||||
}
|
||||
|
||||
/* line 110, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 113, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
#facebox .content {
|
||||
display: block !important;
|
||||
}
|
||||
/* line 112, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 115, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
#facebox .close {
|
||||
display: none;
|
||||
}
|
||||
/* line 114, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
/* line 117, /Volumes/Users/sven/Development/projects/travis/travis-ember/assets/stylesheets/application.sass */
|
||||
#facebox pre::-webkit-scrollbar {
|
||||
height: 0;
|
||||
width: 0;
|
||||
|
|
Loading…
Reference in New Issue
Block a user