Skip to content

Commit 0cae9db

Browse files
committed
Naviation to other versions and libraries
1 parent 124c32f commit 0cae9db

File tree

6 files changed

+68
-8
lines changed

6 files changed

+68
-8
lines changed

app/components/evented-select.js

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import Ember from 'ember';
2+
3+
export default Ember.Select.extend(Ember.TargetActionSupport, {
4+
target: Ember.computed.alias('controller'),
5+
6+
onChange: function(){
7+
this.triggerAction({
8+
action: this.get('action'),
9+
actionContext: [this.selection, this._oldValue]
10+
});
11+
this._oldValue = this.selection;
12+
}.on('change')
13+
14+
});

app/routes/application.js

+26-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,31 @@ import config from '../config/environment';
44

55
export default Ember.Route.extend({
66
model: function(){
7-
return ajax('/%@/docs/index.json'.fmt(config.baseURL));
7+
var libraries = ajax('/config/libraries.json');
8+
var versions = ajax('/%@/versions.json'.fmt(config.projectName));
9+
var library = ajax('/%@/docs/index.json'.fmt(config.baseURL));
10+
11+
return Ember.RSVP.hash({
12+
library: library,
13+
libraries: libraries,
14+
versions: versions
15+
}).then(function(responses){
16+
var library = responses.library;
17+
library.libraries = responses.libraries;
18+
library.versions = responses.versions;
19+
20+
return library;
21+
});
22+
},
23+
actions: {
24+
versionChanged: function(version){
25+
var parser = document.createElement('a');
26+
parser.href = window.location;
27+
28+
var port = parser.port ? ":%@".fmt(parser.port) : "";
29+
var location = [parser.protocol, '//', parser.hostname, port, '/', config.projectName, '/', version].join('');
30+
31+
window.location = location;
32+
}
833
}
934
});

app/templates/application.hbs

+6-6
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@
2929
<li class="level-1">
3030
<a href="#">Projects</a>
3131
<ol>
32-
<li class="level-3 sub-selected">
33-
<a href="/api">Ember</a>
34-
</li>
35-
<li class="level-3 ">
36-
<a href="/api/data">Ember Data</a>
37-
</li>
32+
{{#each library in model.libraries}}
33+
<li class="level-3">
34+
<a {{bind-attr href=library.slug}}>{{library.name}}</a>
35+
</li>
36+
{{/each}}
3837
</ol>
3938
</li>
4039

4140
<li class="level-1">
4241
<a {{bind-attr href=githubHREF}} target="_blank"> Tag: {{rev}}</a>
42+
{{evented-select content=model.versions action="versionChanged"}}
4343
</li>
4444

4545
<li class="level-1 selected">

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"ember-data": "1.0.0-beta.10",
3131
"ember-export-application-global": "^1.0.0",
3232
"express": "^4.8.5",
33-
"glob": "^4.0.5"
33+
"glob": "^4.0.5",
34+
"http-proxy": "^1.8.1"
3435
}
3536
}

server/mocks/libraries.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = function(app) {
2+
var express = require('express');
3+
var librariesRouter = express.Router();
4+
librariesRouter.get('*', function(req, res) {
5+
res.send([
6+
{name: 'Ember.js', slug: '/ember.js'},
7+
{name: 'Ember Data', slug: '/ember-data'},
8+
{name: 'RSVP', slug: '/rsvp'}
9+
]);
10+
});
11+
app.use('/config/libraries.json', librariesRouter);
12+
};

server/mocks/versions.js

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = function(app) {
2+
var express = require('express');
3+
var versionsRouter = express.Router();
4+
versionsRouter.get('*', function(req, res) {
5+
res.send(["v1.7.0", "v1.8.0"]);
6+
});
7+
app.use('/*/versions.json', versionsRouter);
8+
};

0 commit comments

Comments
 (0)