remove the repository.* states nesting
This commit is contained in:
parent
2ff639e38e
commit
89f624d377
|
@ -8,12 +8,23 @@ App.Repository = DS.Model.extend({
|
||||||
ownerName: DS.attr('string'),
|
ownerName: DS.attr('string'),
|
||||||
name: DS.attr('string')
|
name: DS.attr('string')
|
||||||
});
|
});
|
||||||
App.Build = DS.Model.extend({
|
App.Repository.FIXTURES = [
|
||||||
number: DS.attr('number')
|
{ id: 1, owner_name: 'travis-ci', name: 'travis-core' },
|
||||||
});
|
{ id: 2, owner_name: 'travis-ci', name: 'travis-assets' },
|
||||||
|
{ id: 3, owner_name: 'travis-ci', name: 'travis-hub' }
|
||||||
|
];
|
||||||
|
|
||||||
App.Repository.FIXTURES = [{ id: 1, owner_name: 'travis-ci', name: 'travis-core' }];
|
App.Build = DS.Model.extend({
|
||||||
App.Build.FIXTURES = [{ id: 1, number: 1 }, { id: 2, number: 2 }];
|
repository_id: DS.attr('number'),
|
||||||
|
number: DS.attr('number'),
|
||||||
|
repository: DS.belongsTo('App.Repository')
|
||||||
|
});
|
||||||
|
App.Build.FIXTURES = [
|
||||||
|
{ id: 1, repository_id: 1, number: 1 },
|
||||||
|
{ id: 2, repository_id: 1, number: 2 },
|
||||||
|
{ id: 3, repository_id: 2, number: 3 },
|
||||||
|
{ id: 4, repository_id: 3, number: 4 }
|
||||||
|
];
|
||||||
|
|
||||||
App.ApplicationController = Em.Controller.extend();
|
App.ApplicationController = Em.Controller.extend();
|
||||||
App.RepositoriesController = Em.Controller.extend();
|
App.RepositoriesController = Em.Controller.extend();
|
||||||
|
@ -47,120 +58,133 @@ var onReady = function(object, path, callback) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var onRepositoryLoaded = function(object, callback) {
|
||||||
|
// should observe RecordArray.isLoaded instead, but that doesn't seem to exist?
|
||||||
|
var path = Ember.isArray(object) ? 'firstObject.isLoaded' : 'isLoaded';
|
||||||
|
onReady(object, path, function() {
|
||||||
|
callback(object.get('firstObject') || object)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
App.Router = Em.Router.extend({
|
App.Router = Em.Router.extend({
|
||||||
enableLogging: true,
|
enableLogging: true,
|
||||||
location: 'hash',
|
location: 'hash',
|
||||||
|
|
||||||
root: Em.Route.extend({
|
root: Em.Route.extend({
|
||||||
viewRepository: Ember.Route.transitionTo('repository.current'),
|
viewRepository: Ember.Route.transitionTo('current'),
|
||||||
|
|
||||||
// why is applicationController undefined here? would like to share connecting the left outlet to repositories
|
|
||||||
// connectOutlets: function(router) {
|
|
||||||
// router.connectLeft();
|
|
||||||
// },
|
|
||||||
|
|
||||||
serialize: function(router, context) {
|
|
||||||
return router.serialize();
|
|
||||||
},
|
|
||||||
|
|
||||||
index: Em.Route.extend({
|
index: Em.Route.extend({
|
||||||
route: '/',
|
route: '/',
|
||||||
|
|
||||||
serialize: function(router, context) {
|
|
||||||
return router.serialize();
|
|
||||||
},
|
|
||||||
|
|
||||||
connectOutlets: function(router) {
|
connectOutlets: function(router) {
|
||||||
router.connectLeft();
|
router.connectLayout(null, null, function(repository) {
|
||||||
router.connectLoading();
|
// should use repository.lastBuild()
|
||||||
|
router.connectCurrent(Build.find(1))
|
||||||
var repositories = router.getPath('repositoriesController.content');
|
|
||||||
var build = App.Build.find(1);
|
|
||||||
|
|
||||||
// should observe RecordArray.isLoaded instead, but that doesn't seem to exist?
|
|
||||||
console.log('find repos')
|
|
||||||
onReady(repositories, 'firstObject.isLoaded', function() {
|
|
||||||
console.log('repo loaded')
|
|
||||||
router.connectMain(repositories.get('firstObject'), build)
|
|
||||||
router.connectCurrent(build)
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
viewCurrent: Ember.Route.transitionTo('repository.current'),
|
|
||||||
viewHistory: Ember.Route.transitionTo('repository.history'),
|
|
||||||
viewBuild: Ember.Route.transitionTo('repository.build'),
|
|
||||||
}),
|
|
||||||
|
|
||||||
repository: Em.Route.extend({
|
|
||||||
route: '/:ownerName/:name',
|
|
||||||
|
|
||||||
serialize: function(router, context) {
|
|
||||||
return router.serialize();
|
|
||||||
},
|
|
||||||
|
|
||||||
connectOutlets: function(router) {
|
|
||||||
router.connectLeft();
|
|
||||||
router.connectLoading();
|
|
||||||
|
|
||||||
// this would be a query for the repo based on path (how to retrieve the path here?)
|
|
||||||
var repository = App.Repository.find(1);
|
|
||||||
console.log('find repo')
|
|
||||||
onReady(repository, 'isLoaded', function() {
|
|
||||||
console.log('repo loaded')
|
|
||||||
router.connectMain(repository, App.Build.find(1))
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
current: Em.Route.extend({
|
viewCurrent: Ember.Route.transitionTo('current'),
|
||||||
route: '/',
|
viewHistory: Ember.Route.transitionTo('history'),
|
||||||
|
viewBuild: Ember.Route.transitionTo('build'),
|
||||||
|
}),
|
||||||
|
|
||||||
serialize: function(router, context) {
|
current: Em.Route.extend({
|
||||||
return router.serialize();
|
route: '/:ownerName/:name',
|
||||||
|
|
||||||
|
serialize: function(router, repository) {
|
||||||
|
return router.serializeRepository(repository);
|
||||||
},
|
},
|
||||||
|
|
||||||
connectOutlets: function(router, context) {
|
connectOutlets: function(router, repository) {
|
||||||
|
params = router.serializeRepository(repository);
|
||||||
|
// needs to implement findQuery
|
||||||
|
// var repositories = App.Repository.find(params);
|
||||||
|
var repositories = App.Repository.find().filter(function(data) {
|
||||||
|
return data.get('owner_name') == params.owner_name && data.get('name') == params.name;
|
||||||
|
})
|
||||||
|
|
||||||
|
router.connectLayout(repositories, null, function(repository) {
|
||||||
|
// should use repository.lastBuild()
|
||||||
router.connectCurrent(App.Build.find(1))
|
router.connectCurrent(App.Build.find(1))
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
viewCurrent: Ember.Route.transitionTo('current'),
|
viewCurrent: Ember.Route.transitionTo('current'),
|
||||||
|
|
||||||
history: Em.Route.extend({
|
history: Em.Route.extend({
|
||||||
route: '/builds',
|
route: '/:ownerName/:name/builds',
|
||||||
|
|
||||||
serialize: function(router, context) {
|
serialize: function(router, repository) {
|
||||||
return router.serialize();
|
return router.serializeRepository(repository);
|
||||||
},
|
},
|
||||||
|
|
||||||
connectOutlets: function(router, context) {
|
connectOutlets: function(router, repository) {
|
||||||
|
params = router.serializeRepository(repository);
|
||||||
|
// needs to implement findQuery
|
||||||
|
// var repositories = App.Repository.find(params);
|
||||||
|
var repositories = App.Repository.find().filter(function(data) {
|
||||||
|
return data.get('owner_name') == params.owner_name && data.get('name') == params.name;
|
||||||
|
})
|
||||||
|
|
||||||
|
router.connectLayout(repository, null, function(repository) {
|
||||||
router.connectHistory(App.Build.find())
|
router.connectHistory(App.Build.find())
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
viewHistory: Ember.Route.transitionTo('history'),
|
viewHistory: Ember.Route.transitionTo('history'),
|
||||||
|
|
||||||
build: Em.Route.extend({
|
build: Em.Route.extend({
|
||||||
route: '/builds/:build_id',
|
route: '/:ownerName/:name/builds/:id',
|
||||||
|
|
||||||
serialize: function(router, context) {
|
serialize: function(router, build) {
|
||||||
return $.extend(router.serialize(), this._super(router, context));
|
return router.serializeBuild(build);
|
||||||
},
|
},
|
||||||
|
|
||||||
connectOutlets: function(router, context) {
|
connectOutlets: function(router, build) {
|
||||||
params = { id: 1 }
|
params = router.serializeBuild(build);
|
||||||
router.connectBuild(App.Build.find(params.id))
|
// needs to implement findQuery
|
||||||
|
// var repositories = App.Repository.find(params);
|
||||||
|
var repositories = App.Repository.find().filter(function(data) {
|
||||||
|
return data.get('owner_name') == params.owner_name && data.get('name') == params.name;
|
||||||
|
})
|
||||||
|
var build = App.Build.find(params.id)
|
||||||
|
|
||||||
|
router.connectLayout(repositories, build, function(repository) {
|
||||||
|
router.connectBuild(build)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
viewBuild: Ember.Route.transitionTo('build')
|
viewBuild: Ember.Route.transitionTo('build')
|
||||||
})
|
|
||||||
}),
|
}),
|
||||||
|
|
||||||
serialize: function() {
|
serializeRepository: function(repository) {
|
||||||
var ownerName = this.getPath('repositoryController.content.ownerName');
|
return repository.getProperties ? repository.getProperties('ownerName', 'name') : repository;
|
||||||
var name = this.getPath('repositoryController.content.name');
|
|
||||||
return { ownerName: ownerName, name: name };
|
|
||||||
},
|
},
|
||||||
|
|
||||||
connectLeft: function() {
|
serializeBuild: function(build) {
|
||||||
this.get('applicationController').connectOutlet({ outletName: 'left', name: 'repositories', context: App.Repository.find() })
|
if(build && build.get) {
|
||||||
|
var repository = build.get('repository') || App.Repository.find(build.get('repository_id')); // wat.
|
||||||
|
var params = this.serializeRepository(repository);
|
||||||
|
return $.extend(params, { id: build.get('id') });
|
||||||
|
} else {
|
||||||
|
return build;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
connectLayout: function(repository, build, callback) {
|
||||||
|
var repositories = App.Repository.find();
|
||||||
|
|
||||||
|
this.connectLeft(repositories);
|
||||||
|
this.connectLoading();
|
||||||
|
|
||||||
|
onRepositoryLoaded(repository || repositories, function(repository) {
|
||||||
|
this.connectMain(repository, build)
|
||||||
|
callback(repository);
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
|
||||||
|
connectLeft: function(repositories) {
|
||||||
|
this.get('applicationController').connectOutlet({ outletName: 'left', name: 'repositories', context: repositories })
|
||||||
},
|
},
|
||||||
|
|
||||||
connectLoading: function() {
|
connectLoading: function() {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<ul>
|
<ul>
|
||||||
{{#each repository in content}}
|
{{#each repository in content}}
|
||||||
<li><a {{action viewRepository href=true}}>{{repository.ownerName}}/{{repository.name}}</a></li>
|
<li><a {{action viewRepository href=true context="repository"}}>{{repository.ownerName}}/{{repository.name}}</a></li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ul class="tabs">
|
<ul class="tabs">
|
||||||
<li><a {{action viewCurrent href=true}}>Current</a></li>
|
<li><a {{action viewCurrent href=true context="repository"}}>Current</a></li>
|
||||||
<li><a {{action viewHistory href=true}}>History</a></li>
|
<li><a {{action viewHistory href=true context="repository"}}>History</a></li>
|
||||||
<li><a {{action viewBuild context="build" href=true}}>Build</a></li>
|
<li><a {{action viewBuild href=true context="build"}}>Build</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
2
app/assets/javascripts/vendor/ember.js
vendored
2
app/assets/javascripts/vendor/ember.js
vendored
|
@ -15455,7 +15455,6 @@ Ember.Routable = Ember.Mixin.create({
|
||||||
*/
|
*/
|
||||||
stashContext: function(manager, context) {
|
stashContext: function(manager, context) {
|
||||||
var serialized = this.serialize(manager, context);
|
var serialized = this.serialize(manager, context);
|
||||||
console.log(['stashContext', this.name, serialized && serialized.ownerName])
|
|
||||||
manager.setStateMeta(this, 'serialized', serialized);
|
manager.setStateMeta(this, 'serialized', serialized);
|
||||||
|
|
||||||
if (get(this, 'isRoutable') && !get(manager, 'isRouting')) {
|
if (get(this, 'isRoutable') && !get(manager, 'isRouting')) {
|
||||||
|
@ -15499,7 +15498,6 @@ console.log(['stashContext', this.name, serialized && serialized.ownerName])
|
||||||
|
|
||||||
var matcher = get(this, 'routeMatcher'),
|
var matcher = get(this, 'routeMatcher'),
|
||||||
serialized = manager.getStateMeta(this, 'serialized');
|
serialized = manager.getStateMeta(this, 'serialized');
|
||||||
console.log(['stateMeta', this.name, serialized && serialized.ownerName])
|
|
||||||
|
|
||||||
// merge the existing serialized object in with the passed
|
// merge the existing serialized object in with the passed
|
||||||
// in hash.
|
// in hash.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user