Skip to content

Commit 25d2755

Browse files
committed
WIP2
1 parent 0efbc1b commit 25d2755

File tree

17 files changed

+579
-332
lines changed

17 files changed

+579
-332
lines changed

assets/scripts/app/app.coffee

Lines changed: 62 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,80 @@ Adapter = Ember.RESTAdapter.extend
44

55
unless window.TravisApplication
66
window.TravisApplication = Em.Application.extend(Ember.Evented,
7-
LOG_TRANSITIONS: true
87
authStateBinding: 'auth.state'
98
signedIn: (-> @get('authState') == 'signed-in' ).property('authState')
109

1110
setup: ->
12-
modelClasses = [Travis.User, Travis.Build, Travis.Job, Travis.Repo]
11+
modelClasses = [Travis.User, Travis.Build, Travis.Job, Travis.Repo, Travis.Commit, Travis.Worker, Travis.Account, Travis.Broadcast]
1312
modelClasses.forEach (klass) ->
14-
klass.adapter = Adapter.create()
13+
klass.adapter = Adapter.extend(
14+
findMany: (klass, records, ids) ->
15+
debugger
16+
console.log 'findMany', klass+'', records+'', ids
17+
18+
mappings:
19+
broadcasts: Travis.Broadcast
20+
repositories: Travis.Repo
21+
repository: Travis.Repo
22+
repos: Travis.Repo
23+
repo: Travis.Repo
24+
builds: Travis.Build
25+
build: Travis.Build
26+
commits: Travis.Commit
27+
commit: Travis.Commit
28+
jobs: Travis.Job
29+
job: Travis.Job
30+
account: Travis.Account
31+
accounts: Travis.Account
32+
worker: Travis.Worker
33+
workers: Travis.Worker
34+
35+
buildURL: ->
36+
@_super.apply(this, arguments).replace(/\.json$/, '')
37+
38+
didFind: (record, id, data) ->
39+
@sideload(record.constructor, data)
40+
@_super(record, id, data)
41+
42+
didFindAll: (klass, records, data) ->
43+
@sideload(klass, data)
44+
@_super(klass, records, data)
45+
46+
didFindQuery: (klass, records, params, data) ->
47+
@sideload(klass, data)
48+
@_super(klass, records, params, data)
49+
50+
didCreateRecord: (record, data) ->
51+
@sideload(record.constructor, data)
52+
@_super(record, data)
53+
54+
didSaveRecord: (record, data) ->
55+
@sideload(record.constructor, data)
56+
@_super(record, data)
57+
58+
didDeleteRecord: (record, data) ->
59+
@sideload(record.constructor, data)
60+
@_super(record, data)
61+
62+
sideload: (klass, data) ->
63+
for name, records of data
64+
records = [records] unless Ember.isArray(records)
65+
66+
# we need to skip records of type, which is loaded by adapter already
67+
if (type = @mappings[name]) != klass
68+
for record in records
69+
type.findFromCacheOrLoad(record)
70+
).create()
1571

1672
Travis.User.url = '/users'
1773
Travis.Build.url = '/builds'
1874
Travis.Job.url = '/jobs'
1975
Travis.Repo.url = '/repos'
2076
Travis.Build.url = '/builds'
2177

22-
# TODO: fix
23-
#@store.loadMany(Travis.Sponsor, Travis.SPONSORS)
78+
79+
Travis.SPONSORS.forEach (sponsor) ->
80+
Travis.Sponsor.findFromCacheOrLoad(sponsor)
2481

2582
@slider = new Travis.Slider()
2683
@pusher = new Travis.Pusher(Travis.config.pusher_key) if Travis.config.pusher_key

assets/scripts/app/controllers/repo.coffee

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Travis.RepoController = Travis.Controller.extend
99

1010
init: ->
1111
@_super.apply this, arguments
12-
Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
12+
setInterval(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
1313

1414
updateTimes: ->
1515
if builds = @get('builds')
@@ -21,13 +21,12 @@ Travis.RepoController = Travis.Controller.extend
2121
if build && jobs = build.get('jobs')
2222
jobs.forEach (j) -> j.updateTimes()
2323

24-
Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
25-
2624
activate: (action) ->
2725
@_unbind()
2826
this["view#{$.camelize(action)}"]()
2927

3028
viewIndex: ->
29+
console.log 'bind repo'
3130
@_bind('repo', 'controllers.repos.firstObject')
3231
@_bind('build', 'repo.lastBuild')
3332
@connectTab('current')

assets/scripts/app/controllers/repos.coffee

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Travis.ReposController = Ember.ArrayController.extend
2727

2828
init: ->
2929
@_super.apply this, arguments
30-
Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
30+
setInterval @updateTimes.bind(this), Travis.INTERVALS.updateTimes
3131
Travis.Repo.withLastBuild()
3232

3333
recentRepos: (->
@@ -45,8 +45,6 @@ Travis.ReposController = Ember.ArrayController.extend
4545
if content = @get('content')
4646
content.forEach (r) -> r.updateTimes()
4747

48-
Ember.run.later(@updateTimes.bind(this), Travis.INTERVALS.updateTimes)
49-
5048
activate: (tab, params) ->
5149
@set('sortProperties', null)
5250
tab ||= @get('defaultTab')

assets/scripts/app/controllers/sidebar.coffee

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ Travis.reopen
55

66
init: ->
77
@_super.apply this, arguments
8-
@tickables = []
9-
Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
8+
# @tickables = []
9+
#Travis.Ticker.create(target: this, interval: Travis.INTERVALS.sponsors)
1010

11-
tick: ->
12-
tickable.tick() for tickable in @tickables
11+
#tick: ->
12+
# tickable.tick() for tickable in @tickables
1313

1414
QueuesController: Em.ArrayController.extend
1515
init: ->
@@ -80,7 +80,7 @@ Travis.DecksController = Travis.SponsorsController.extend
8080
init: ->
8181
@_super.apply this, arguments
8282

83-
@get('controllers.sidebar').tickables.push(this)
83+
#@get('controllers.sidebar').tickables.push(this)
8484
@set 'content', Travis.Sponsor.decks()
8585

8686
Travis.LinksController = Travis.SponsorsController.extend
@@ -90,5 +90,5 @@ Travis.LinksController = Travis.SponsorsController.extend
9090
init: ->
9191
@_super.apply this, arguments
9292

93-
@get('controllers.sidebar').tickables.push(this)
93+
#@get('controllers.sidebar').tickables.push(this)
9494
@set 'content', Travis.Sponsor.links()

assets/scripts/app/models/branch.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require 'travis/model'
1212
startedAt: Ember.attr('string')
1313
finishedAt: Ember.attr('string')
1414

15-
# commit: DS.belongsTo('Travis.Commit')
15+
commit: Ember.belongsTo('Travis.Commit')
1616

1717
repo: (->
1818
Travis.Repo.find @get('repoId') if @get('repoId')

assets/scripts/app/models/build.coffee

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ require 'travis/model'
1717
pullRequestTitle: Ember.attr('string')
1818
pullRequestNumber: Ember.attr('number')
1919

20-
# repo: DS.belongsTo('Travis.Repo')
21-
# commit: DS.belongsTo('Travis.Commit')
22-
# jobs: DS.hasMany('Travis.Job')
20+
repo: Ember.belongsTo('Travis.Repo', key: 'repositoryId')
21+
commit: Ember.belongsTo('Travis.Commit')
22+
jobs: Ember.hasMany('Travis.Job')
2323

2424
config: (->
2525
Travis.Helpers.compact(@get('_config'))

assets/scripts/app/models/commit.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ require 'travis/model'
1212
committerEmail: Ember.attr('string')
1313
pullRequestNumber: Ember.attr('number')
1414

15-
# build: DS.belongsTo('Travis.Build')
15+
build: Ember.belongsTo('Travis.Build')

assets/scripts/app/models/job.coffee

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,19 @@ require 'travis/model'
1414
allowFailure: Ember.attr('boolean')
1515

1616
repositorySlug: Ember.attr('string')
17-
# repo: DS.belongsTo('Travis.Repo')
18-
# build: DS.belongsTo('Travis.Build')
19-
# commit: DS.belongsTo('Travis.Commit')
20-
21-
# this is a fake relationship just to get rid
22-
# of ember data's bug: https://github.com/emberjs/data/issues/758
23-
# TODO: remove when this issue is fixed
24-
# fakeBuild: DS.belongsTo('Travis.Build')
17+
repo: Ember.belongsTo('Travis.Repo', key: 'repositoryId')
18+
build: Ember.belongsTo('Travis.Build')
19+
commit: Ember.belongsTo('Travis.Commit')
2520

2621
_config: Ember.attr('object')
2722

28-
repoSlugDidChange: (->
29-
if slug = @get('repoSlug')
30-
@get('store').loadIncomplete(Travis.Repo, {
31-
id: @get('repoId'),
32-
slug: slug
33-
}, { skipIfExists: true })
34-
).observes('repoSlug')
23+
#repoSlugDidChange: (->
24+
# if slug = @get('repoSlug')
25+
# @get('store').loadIncomplete(Travis.Repo, {
26+
# id: @get('repoId'),
27+
# slug: slug
28+
# }, { skipIfExists: true })
29+
#).observes('repoSlug')
3530

3631
log: ( ->
3732
@set('isLogAccessed', true)
@@ -118,16 +113,23 @@ require 'travis/model'
118113
@Travis.Job.reopenClass
119114
queued: (queue) ->
120115
@find()
121-
Travis.store.filter this, (job) ->
122-
queued = ['created', 'queued'].indexOf(job.get('state')) != -1
123-
# TODO: why queue is sometimes just common instead of build.common?
124-
queued && (!queue || job.get('queue') == "builds.#{queue}" || job.get('queue') == queue)
116+
Ember.FilteredRecordArray.create(
117+
modelClass: Travis.Job
118+
filterFunction: (job) ->
119+
queued = ['created', 'queued'].indexOf(job.get('state')) != -1
120+
# TODO: why queue is sometimes just common instead of build.common?
121+
queued && (!queue || job.get('queue') == "builds.#{queue}" || job.get('queue') == queue)
122+
123+
filterProperties: ['state', 'queue']
124+
)
125125

126126
running: ->
127127
@find(state: 'started')
128-
Travis.store.filter this, (job) ->
129-
job.get('state') == 'started'
128+
Ember.FilteredRecordArray.create(
129+
modelClass: Travis.Job
130+
filterFunction: (job) ->
131+
job.get('state') == 'started'
132+
filterProperties: ['state']
133+
)
130134

131-
findMany: (ids) ->
132-
Travis.store.findMany this, ids
133135

assets/scripts/app/models/repo.coffee

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ require 'travis/expandable_record_array'
22
require 'travis/model'
33

44
@Travis.Repo = Travis.Model.extend
5+
id: Ember.attr('string')
56
slug: Ember.attr('string')
67
description: Ember.attr('string')
78
lastBuildId: Ember.attr('number')
@@ -11,7 +12,7 @@ require 'travis/model'
1112
lastBuildFinishedAt: Ember.attr('string')
1213
_lastBuildDuration: Ember.attr('number')
1314

14-
# lastBuild: DS.belongsTo('Travis.Build')
15+
lastBuild: Ember.belongsTo('Travis.Build', key: 'lastBuildId')
1516

1617
lastBuildHash: (->
1718
{
@@ -25,6 +26,7 @@ require 'travis/model'
2526
Travis.Build.find()
2627
).property()
2728

29+
# TODO: this should not belong in the model
2830
builds: (->
2931
id = @get('id')
3032
builds = Travis.Build.byRepoId id, event_type: 'push'
@@ -33,7 +35,6 @@ require 'travis/model'
3335
array = Travis.ExpandableRecordArray.create
3436
type: Travis.Build
3537
content: Ember.A([])
36-
store: @get('store')
3738

3839
array.load(builds)
3940

@@ -49,7 +50,6 @@ require 'travis/model'
4950
array = Travis.ExpandableRecordArray.create
5051
type: Travis.Build
5152
content: Ember.A([])
52-
store: @get('store')
5353

5454
array.load(builds)
5555

@@ -117,18 +117,20 @@ require 'travis/model'
117117
@find(search: query, orderBy: 'name')
118118

119119
withLastBuild: ->
120-
Ember.FilteredRecordArray.create(
120+
filtered = Ember.FilteredRecordArray.create(
121121
modelClass: Travis.Repo
122-
filterFunction: (repo) -> console.log(repo+'', repo.get('lastBuildId')); repo.get('lastBuildId')
123-
# (!repo.get('incomplete') || repo.isAttributeLoaded('lastBuildId'))
122+
filterFunction: (repo) -> repo.get('lastBuildId')
124123
filterProperties: ['lastBuildId']
125124
)
126125

126+
Travis.Repo.findAll().then (array) ->
127+
filtered.updateFilter()
128+
129+
filtered
130+
127131
bySlug: (slug) ->
128132
repo = $.select(@find().toArray(), (repo) -> repo.get('slug') == slug)
129133
if repo.length > 0 then repo else @find(slug: slug)
130134

131135
# buildURL: (slug) ->
132136
# if slug then slug else 'repos'
133-
134-

assets/scripts/app/models/sponsor.coffee

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,7 @@ require 'travis/model'
44
type: Ember.attr('string')
55
url: Ember.attr('string')
66
link: Ember.attr('string')
7-
_image: Ember.attr('string')
8-
9-
image: (->
10-
"/images/sponsors/#{@get('_image')}"
11-
).property('_image')
7+
image: Ember.attr('string', transform: (image) -> "/images/sponsors/#{image}")
128

139
Travis.Sponsor.reopenClass
1410
decks: ->
@@ -27,5 +23,9 @@ Travis.Sponsor.reopenClass
2723

2824
byType: ->
2925
types = Array.prototype.slice.apply(arguments)
30-
Travis.Sponsor.filter (sponsor) -> types.indexOf(sponsor.get('type')) != -1
26+
Ember.FilteredRecordArray.create(
27+
modelClass: Travis.Sponsor
28+
filterFunction: (sponsor) -> types.indexOf(sponsor.get('type')) != -1
29+
filterProperties: ['type']
30+
)
3131

0 commit comments

Comments
 (0)