Skip to content

Commit 1a56b06

Browse files
authored
Merge pull request #761 from runspired/jw-ct-ember-data-landing-page
ember-data landing page: use ember-data-overview module main if present
2 parents 69d4c38 + 8e7f1ed commit 1a56b06

File tree

7 files changed

+116
-50
lines changed

7 files changed

+116
-50
lines changed
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<<article class="chapter">
2+
<h1>
3+
Ember Data API Documentation
4+
</h1>
5+
<p>
6+
Ember Data is a library for robustly managing data in applications built with Ember.js.
7+
</p>
8+
<h2>
9+
Commonly searched-for documentation
10+
</h2>
11+
<ul class="spec-method-list">
12+
<li>
13+
{{#link-to "project-version.classes.class" "Model"}}
14+
Model
15+
{{/link-to}}
16+
- an object that represents the underlying data that your application presents to the user.
17+
</li>
18+
<li>
19+
{{#link-to "project-version.classes.class" "Store"}}
20+
Store
21+
{{/link-to}}
22+
- a service that contains all of the data for records loaded from the server.
23+
</li>
24+
<li>
25+
{{#link-to "project-version.classes.class" "Adapter"}}
26+
Adapter
27+
{{/link-to}}
28+
- determines how data is persisted to a backend data store.
29+
</li>
30+
<li>
31+
{{#link-to "project-version.classes.class" "Serializer"}}
32+
Serializer
33+
{{/link-to}}
34+
- format the data sent to and received from the backend store.
35+
</li>
36+
</ul>
37+
<h2>
38+
Useful links
39+
</h2>
40+
<ul>
41+
<li>
42+
<h5>
43+
<a href="https://github.com/ember-learn/ember-api-docs">
44+
API Documentation Github Repository
45+
</a>
46+
</h5>
47+
</li>
48+
<li>
49+
<h5>
50+
<a href="https://guides.emberjs.com/release/models/">
51+
Introduction to Ember Data
52+
</a>
53+
</h5>
54+
</li>
55+
</ul>
56+
</article>

app/components/ember-landing-page.hbs

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<article class="chapter">
2+
<h1>Ember API Documentation</h1>
3+
<p>
4+
To get started, choose a project (Ember or Ember Data) and a version
5+
from the dropdown menu. Ember has core methods used in any app, while Ember Data has
6+
documentation of the built-in library for making requests to a back end.
7+
If you're looking for documentation of the command line tool used to generate files, build your
8+
app, and more, visit <a href="https://cli.emberjs.com/">ember-cli</a>. The latest
9+
testing API is available at
10+
<a href="https://github.com/emberjs/ember-test-helpers/blob/master/API.md">ember-test-helpers</a>.
11+
</p>
12+
<h2>Commonly searched-for documentation</h2>
13+
<ul class="spec-method-list">
14+
<li>Components - {{#link-to 'project-version.classes.class' 'Component'}}Classic{{/link-to}} or {{#link-to 'project-version.modules.module' '@glimmer/component'}}Glimmer{{/link-to}}; a view that is completely isolated</li>
15+
<li>{{#link-to 'project-version.functions.function' '@glimmer/tracking' 'tracked'}}Tracked{{/link-to}} - make your templates responsive to property updates</li>
16+
<li>{{#link-to 'project-version.classes.class' 'ComputedProperty'}}Computed Properties{{/link-to}} - declare functions as properties</li>
17+
<li>{{#link-to 'project-version.classes.class' '@ember/object/computed'}}Computed Macros{{/link-to}} - shorter ways of expressing certain types of computed properties</li>
18+
<li>{{#link-to 'project-version.classes.class' 'EmberArray'}}EmberArray{{/link-to}} - contains methods like {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'forEach' (query-params anchor='forEach')}}forEach{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'mapBy' (query-params anchor='mapBy')}}mapBy{{/link-to}} that help you iterate over Ember Objects</li>
19+
<li>{{#link-to 'project-version.classes.class' 'EmberObject'}}EmberObject{{/link-to}} - the main base class for all Ember objects, including the {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'get' (query-params anchor='get')}}get{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'set' (query-params anchor='set')}}set{{/link-to}} methods</li>
20+
<li>{{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}} helper</li>
21+
<li>{{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}}, {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'on' (query-params anchor='on')}}on{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'fn' (query-params anchor='fn')}}fn{{/link-to}} helpers</li>
22+
<li>{{#link-to 'project-version.classes.class' 'Helper'}}Helpers{{/link-to}} - a way to define custom display functions that are used in templates</li>
23+
<li>{{#link-to 'project-version.classes.class' 'Route'}}Route{{/link-to}} - used to define individual routes, including the {{#link-to 'project-version.classes.class.methods.method' 'Route' 'model' (query-params anchor='model')}}model{{/link-to}} hook for loading data</li>
24+
<li>{{#link-to 'project-version.classes.class' 'Service'}}Service{{/link-to}} - an Ember object that lives for the duration of the application, and can be made available in different parts of your application</li>
25+
</ul>
26+
<h2>Useful links</h2>
27+
<ul>
28+
<li>
29+
<h5>
30+
<a href="https://github.com/ember-learn/ember-api-docs">API Documentation Github Repository</a>
31+
</h5>
32+
</li>
33+
<li>
34+
<h5>
35+
<a href="https://guides.emberjs.com/release/getting-started/core-concepts/">Ember Core Concepts</a>
36+
</h5>
37+
</li>
38+
</ul>
39+
</article>

app/controllers/project-version.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ export default Controller.extend({
4444

4545
getModuleRelationships(versionId, moduleType) {
4646
let relations = this.getRelations(moduleType);
47-
return relations.map(id => id.substring(versionId.length + 1))
47+
// filter overviews out. If other projects add their overview we should filter those too.
48+
return relations.map(id => id.substring(versionId.length + 1)).filter(id => id !== 'ember-data-overview');
4849
},
4950

5051
getRelations(relationship) {

app/routes/project-version.js

+9
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ export default Route.extend({
5454
if (!shouldConvertPackages || isLatestVersion) {
5555
// ... and the transition version is the latest release,
5656
// display the landing page at
57+
58+
// ember-data if @main declaration exists for ember-data-overview
59+
let versionId = model.get('id');
60+
let modules = model.hasMany('modules').ids().map(id => id.substring(versionId.length + 1));
61+
if (model.get('project.id') === 'ember-data' && modules.indexOf('ember-data-overview') !== -1) {
62+
return this.transitionTo('project-version.modules.module', model.get('project.id'), transitionVersion, 'ember-data-overview');
63+
}
64+
65+
// ember / ember-cli / ember-data if no @main declaration exists for ember-data-overview
5766
return this.transitionTo('project-version.index');
5867
} else {
5968
// else go to the version specified

app/routes/project-version/index.js

+5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import Route from '@ember/routing/route';
22

33
export default Route.extend({
4+
async model() {
5+
const projectVersion = this.modelFor('project-version');
6+
const project = await projectVersion.project;
7+
return project;
8+
}
49
});
+5-39
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,5 @@
1-
<article class="chapter">
2-
<h1>Ember API Documentation</h1>
3-
<p>
4-
To get started, choose a project (Ember or Ember Data) and a version
5-
from the dropdown menu. Ember has core methods used in any app, while Ember Data has
6-
documentation of the built-in library for making requests to a back end.
7-
If you're looking for documentation of the command line tool used to generate files, build your
8-
app, and more, visit <a href="https://cli.emberjs.com/">ember-cli</a>. The latest
9-
testing API is available at
10-
<a href="https://github.com/emberjs/ember-test-helpers/blob/master/API.md">ember-test-helpers</a>.
11-
</p>
12-
<h2>Commonly searched-for documentation</h2>
13-
<ul class="spec-method-list">
14-
<li>Components - {{#link-to 'project-version.classes.class' 'Component'}}Classic{{/link-to}} or {{#link-to 'project-version.modules.module' '@glimmer/component'}}Glimmer{{/link-to}}; a view that is completely isolated</li>
15-
<li>{{#link-to 'project-version.functions.function' '@glimmer/tracking' 'tracked'}}Tracked{{/link-to}} - make your templates responsive to property updates</li>
16-
<li>{{#link-to 'project-version.classes.class' 'ComputedProperty'}}Computed Properties{{/link-to}} - declare functions as properties</li>
17-
<li>{{#link-to 'project-version.classes.class' '@ember/object/computed'}}Computed Macros{{/link-to}} - shorter ways of expressing certain types of computed properties</li>
18-
<li>{{#link-to 'project-version.classes.class' 'EmberArray'}}EmberArray{{/link-to}} - contains methods like {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'forEach' (query-params anchor='forEach')}}forEach{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberArray' 'mapBy' (query-params anchor='mapBy')}}mapBy{{/link-to}} that help you iterate over Ember Objects</li>
19-
<li>{{#link-to 'project-version.classes.class' 'EmberObject'}}EmberObject{{/link-to}} - the main base class for all Ember objects, including the {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'get' (query-params anchor='get')}}get{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'EmberObject' 'set' (query-params anchor='set')}}set{{/link-to}} methods</li>
20-
<li>{{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}} helper</li>
21-
<li>{{#link-to 'project-version.classes.class' 'Ember.Templates.helpers'}}Ember.Templates.helpers{{/link-to}} - built-in functions that can be used in templates, such as the {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'each' (query-params anchor='each')}}each{{/link-to}}, {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'on' (query-params anchor='on')}}on{{/link-to}} and {{#link-to 'project-version.classes.class.methods.method' 'Ember.Templates.helpers' 'fn' (query-params anchor='fn')}}fn{{/link-to}} helpers</li>
22-
<li>{{#link-to 'project-version.classes.class' 'Helper'}}Helpers{{/link-to}} - a way to define custom display functions that are used in templates</li>
23-
<li>{{#link-to 'project-version.classes.class' 'Route'}}Route{{/link-to}} - used to define individual routes, including the {{#link-to 'project-version.classes.class.methods.method' 'Route' 'model' (query-params anchor='model')}}model{{/link-to}} hook for loading data</li>
24-
<li>{{#link-to 'project-version.classes.class' 'Service'}}Service{{/link-to}} - an Ember object that lives for the duration of the application, and can be made available in different parts of your application</li>
25-
</ul>
26-
<h2>Useful links</h2>
27-
<ul>
28-
<li>
29-
<h5>
30-
<a href="https://github.com/ember-learn/ember-api-docs">API Documentation Github Repository</a>
31-
</h5>
32-
</li>
33-
<li>
34-
<h5>
35-
<a href="https://guides.emberjs.com/release/getting-started/core-concepts/">Ember Core Concepts</a>
36-
</h5>
37-
</li>
38-
</ul>
39-
</article>
1+
{{#if (eq @model.id "ember-data")}}
2+
<EmberDataLandingPage />
3+
{{else}}
4+
<EmberLandingPage />
5+
{{/if}}

tests/acceptance/redirects-test.js

-10
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,6 @@ module('Acceptance | redirects', function(hooks) {
1515
assert.dom('h1').hasText('Ember API Documentation');
1616
});
1717

18-
test('visiting /ember-data', async function (assert) {
19-
await visit('/ember-data');
20-
assert.equal(
21-
currentURL(),
22-
`/ember-data/release`,
23-
'routes to the landing page'
24-
);
25-
assert.dom('h1').hasText('Ember API Documentation');
26-
});
27-
2818
test('visiting pre-2.16 version', async function(assert) {
2919
await visit('/ember/1.0');
3020

0 commit comments

Comments
 (0)