Skip to content

Commit 79dd784

Browse files
authored
Moves emeritus to their own page (#1148)
1 parent fac6944 commit 79dd784

File tree

10 files changed

+185
-114
lines changed

10 files changed

+185
-114
lines changed

app/controllers/teams/emeritus.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import Controller from '@ember/controller';
2+
import { cached } from '@glimmer/tracking';
3+
4+
const inTeam = (team) => (teamMember) =>
5+
(teamMember.teams ?? []).includes(team);
6+
7+
export default class TeamsEmeritusController extends Controller {
8+
@cached
9+
get sortedTeamMembers() {
10+
const teamMembers = this.model?.slice() ?? [];
11+
12+
return teamMembers.sort((teamMember1, teamMember2) => {
13+
return teamMember1.added - teamMember2.added;
14+
});
15+
}
16+
17+
get alumniTeamMembers() {
18+
return this.sortedTeamMembers.filter(inTeam('alumni'));
19+
}
20+
}

app/controllers/teams.js renamed to app/controllers/teams/index.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { cached } from '@glimmer/tracking';
44
const inTeam = (team) => (teamMember) =>
55
(teamMember.teams ?? []).includes(team);
66

7-
export default class TeamsController extends Controller {
7+
export default class TeamsIndexController extends Controller {
88
@cached
99
get sortedTeamMembers() {
1010
const teamMembers = this.model?.slice() ?? [];
@@ -14,10 +14,6 @@ export default class TeamsController extends Controller {
1414
});
1515
}
1616

17-
get alumniTeamMembers() {
18-
return this.sortedTeamMembers.filter(inTeam('alumni'));
19-
}
20-
2117
get coreToolingTeamMembers() {
2218
return this.sortedTeamMembers.filter(inTeam('tooling'));
2319
}

app/router.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,7 @@ Router.map(function () {
7070
});
7171

7272
this.route('team-redirect', { path: 'team' });
73-
this.route('teams');
73+
this.route('teams', function () {
74+
this.route('emeritus');
75+
});
7476
});

app/routes/teams/emeritus.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import Route from '@ember/routing/route';
2+
3+
export default class TeamsEmeritusRoute extends Route {}

app/templates/teams.hbs

Lines changed: 0 additions & 59 deletions
This file was deleted.

app/templates/teams/emeritus.hbs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{{page-title 'Emeritus'}}
2+
3+
<div class='container'>
4+
<h1 class='text-center'>Emeritus of Ember.js</h1>
5+
<section>
6+
<p class='text-center' data-test-field='Team Description'>
7+
Serving as a member of the Core Team(s) of an open source project like
8+
Ember is a huge amount of work. These are the emeritus members of the
9+
Ember Core Teams, to whom we will always be grateful.
10+
</p>
11+
12+
<div class='grid lg:grid-5'>
13+
{{#each this.alumniTeamMembers as |member|}}
14+
<Teams::Team::Member @member={{member}} />
15+
{{/each}}
16+
</div>
17+
</section>
18+
</div>

app/templates/teams/index.hbs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
{{page-title 'Team'}}
2+
3+
<div class='container'>
4+
<h1 class='text-center'>The Team Behind Ember</h1>
5+
6+
<div class='mb-6'>
7+
<p class='text-center'>
8+
Ember is an Open Source project that relies on the tireless support of
9+
individual contributors. These are the teams that guide the development
10+
and instruction of Ember.js.
11+
</p>
12+
</div>
13+
14+
<section class='mb-6'>
15+
<Teams::Team
16+
@description='The Steering Committee is responsible for the overall governance of the Ember project.'
17+
@members={{this.steeringCommitteeMembers}}
18+
@name='The Steering Committee'
19+
/>
20+
</section>
21+
22+
<section class='mb-6'>
23+
<Teams::Team
24+
@members={{this.coreTeamMembers}}
25+
@name='The Ember.js Framework Core Team'
26+
/>
27+
</section>
28+
29+
<section class='mb-6'>
30+
<Teams::Team
31+
@description="The Ember Tooling core team is responsible for maintaining ember-cli, Embroider, Glint, Ember's TypeScript integration, and anything related to the Ember build system. The team also maintains many of the addons in the default blueprint as well as fastboot."
32+
@members={{this.coreToolingTeamMembers}}
33+
@name='The Ember Tooling Core Team'
34+
/>
35+
</section>
36+
37+
<section class='mb-6'>
38+
<Teams::Team
39+
@description='The Ember Data core team is responsible for the official data persistence library for Ember.js applications.'
40+
@members={{this.dataTeamMembers}}
41+
@name='The Ember Data Core Team'
42+
/>
43+
</section>
44+
45+
<section class='mb-6'>
46+
<Teams::Team
47+
@description='The mission of the Ember Learning core team is to empower Ember users to learn, build and teach. This team is responsible for keeping the guides and API documentation updated, and manages the initiatives that support learning Ember.'
48+
@members={{this.learningTeamMembers}}
49+
@name='The Ember Learning Core Team'
50+
/>
51+
</section>
52+
53+
<section class='mb-6'>
54+
<h2 class='text-center'>
55+
Emeritus
56+
</h2>
57+
<p class='text-center' data-test-field='Team Description'>
58+
Serving as a member of the Core Team(s) of an open source project like
59+
Ember is a huge amount of work. These are the emeritus members of the
60+
Ember Core Teams, to whom we will always be grateful.
61+
<LinkTo @route='teams.emeritus'>Click here to see all the emeritus members</LinkTo>.
62+
</p>
63+
</section>
64+
</div>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { setupTest } from 'ember-qunit';
2+
import { module, test } from 'qunit';
3+
4+
module('Unit | Controller | teams/emeritus', function (hooks) {
5+
setupTest(hooks);
6+
7+
hooks.beforeEach(async function () {
8+
// Run model hook
9+
const store = this.owner.lookup('service:store');
10+
const model = await store.findAll('team-member');
11+
12+
// Run setupController hook
13+
this.controller = this.owner.lookup('controller:teams/emeritus');
14+
this.controller.model = model;
15+
});
16+
17+
test('We sort Emertius team members by when they were first added', function (assert) {
18+
const { alumniTeamMembers } = this.controller;
19+
20+
// Create an intermediate data structure for assertion
21+
const output = alumniTeamMembers.map((teamMember) => teamMember.id);
22+
23+
assert.deepEqual(output, [
24+
'trek-glowacki',
25+
'erik-bryn',
26+
'kris-selden',
27+
'stefan-penner',
28+
'alex-matchneer',
29+
'robert-jackson',
30+
'igor-terzic',
31+
'martin-munoz',
32+
'brendan-mc-loughlin',
33+
'david-baker',
34+
'chad-hietala',
35+
'todd-jordan',
36+
'christoffer-persson',
37+
'dan-gebhardt',
38+
'clemens-muller',
39+
'stanley-stuart',
40+
'jacob-bixby',
41+
'nathan-hammond',
42+
'tobias-bieniek',
43+
'godfrey-chan',
44+
'krati-ahuja',
45+
'sivakumar-kailasam',
46+
'terence-lee',
47+
'jessica-jordan',
48+
'alex-navasardyan',
49+
'amy-lam',
50+
'kenneth-larsen',
51+
'david-hamilton',
52+
'kristen-hewell-garrett',
53+
'isaac-lee',
54+
'chris-krycho',
55+
'dan-freeman',
56+
'chris-ng',
57+
'bert-de-block',
58+
'scott-newcomer',
59+
'aaron-chambers',
60+
'peter-meehan',
61+
]);
62+
});
63+
});

tests/unit/controllers/teams-test.js renamed to tests/unit/controllers/teams/index-test.js

Lines changed: 2 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { setupTest } from 'ember-qunit';
22
import { module, test } from 'qunit';
33

4-
module('Unit | Controller | teams', function (hooks) {
4+
module('Unit | Controller | teams/index', function (hooks) {
55
setupTest(hooks);
66

77
hooks.beforeEach(async function () {
@@ -10,7 +10,7 @@ module('Unit | Controller | teams', function (hooks) {
1010
const model = await store.findAll('team-member');
1111

1212
// Run setupController hook
13-
this.controller = this.owner.lookup('controller:teams');
13+
this.controller = this.owner.lookup('controller:teams/index');
1414
this.controller.model = model;
1515
});
1616

@@ -100,51 +100,4 @@ module('Unit | Controller | teams', function (hooks) {
100100
'ignace-maes',
101101
]);
102102
});
103-
104-
test('We sort Emertius team members by when they were first added', function (assert) {
105-
const { alumniTeamMembers } = this.controller;
106-
107-
// Create an intermediate data structure for assertion
108-
const output = alumniTeamMembers.map((teamMember) => teamMember.id);
109-
110-
assert.deepEqual(output, [
111-
'trek-glowacki',
112-
'erik-bryn',
113-
'kris-selden',
114-
'stefan-penner',
115-
'alex-matchneer',
116-
'robert-jackson',
117-
'igor-terzic',
118-
'martin-munoz',
119-
'brendan-mc-loughlin',
120-
'david-baker',
121-
'chad-hietala',
122-
'todd-jordan',
123-
'christoffer-persson',
124-
'dan-gebhardt',
125-
'clemens-muller',
126-
'stanley-stuart',
127-
'jacob-bixby',
128-
'nathan-hammond',
129-
'tobias-bieniek',
130-
'godfrey-chan',
131-
'krati-ahuja',
132-
'sivakumar-kailasam',
133-
'terence-lee',
134-
'jessica-jordan',
135-
'alex-navasardyan',
136-
'amy-lam',
137-
'kenneth-larsen',
138-
'david-hamilton',
139-
'kristen-hewell-garrett',
140-
'isaac-lee',
141-
'chris-krycho',
142-
'dan-freeman',
143-
'chris-ng',
144-
'bert-de-block',
145-
'scott-newcomer',
146-
'aaron-chambers',
147-
'peter-meehan',
148-
]);
149-
});
150103
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { module, test } from 'qunit';
2+
import { setupTest } from 'ember-qunit';
3+
4+
module('Unit | Route | teams/emeritus', function (hooks) {
5+
setupTest(hooks);
6+
7+
test('it exists', function (assert) {
8+
let route = this.owner.lookup('route:teams/emeritus');
9+
assert.ok(route);
10+
});
11+
});

0 commit comments

Comments
 (0)