Skip to content

Commit 99f04d8

Browse files
authored
Merge pull request #826 from ember-learn/demixinify
Demixinify
2 parents db828db + 0f803b5 commit 99f04d8

File tree

5 files changed

+61
-72
lines changed

5 files changed

+61
-72
lines changed

app/controllers/project-version/classes/class.js

+48-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,60 @@
11
/* eslint-disable ember/no-computed-properties-in-native-classes, ember/classic-decorator-no-classic-methods */
2-
import { action, computed } from '@ember/object';
2+
import { action, computed, set, get } from '@ember/object';
33
import { inject as service } from '@ember/service';
44
import Controller from '@ember/controller';
5-
import ParentNameMixin from 'ember-api-docs/mixins/parent-name';
6-
import FilterParams from 'ember-api-docs/mixins/filter-params';
5+
import { A } from '@ember/array';
6+
import { capitalize } from '@ember/string';
7+
import { isEmpty } from '@ember/utils';
8+
import { parentName } from '../../../utils/parent-name';
9+
10+
const filterTypes = ['inherited', 'protected', 'private', 'deprecated'];
11+
const DEFAULT_FILTER = 'inherited';
12+
13+
export default class ClassController extends Controller {
14+
/** @type {import('@ember/routing/router-service').default} */
15+
@service
16+
router;
717

8-
export default class ClassController extends Controller.extend(
9-
ParentNameMixin,
10-
FilterParams
11-
) {
1218
@service
1319
filterData;
1420

21+
queryParams = [{ visibilityFilter: 'show' }];
22+
1523
@service
1624
legacyModuleMappings;
1725

1826
@service
1927
metaStore;
2028

29+
@computed(
30+
'filterData.{showInherited,showProtected,showPrivate,showDeprecated}'
31+
)
32+
get visibilityFilter() {
33+
let appliedFilters = filterTypes
34+
.reduce((filters, filter) => {
35+
let filterValue = get(this, `filterData.show${capitalize(filter)}`)
36+
? filter
37+
: null;
38+
filters.push(filterValue);
39+
return filters;
40+
}, A())
41+
.compact();
42+
43+
if (isEmpty(appliedFilters)) {
44+
return DEFAULT_FILTER;
45+
} else {
46+
return appliedFilters.join(',');
47+
}
48+
}
49+
50+
set visibilityFilter(value = '') {
51+
let filters = A(value.split(','));
52+
filterTypes.forEach((filter) => {
53+
let enabled = filters.indexOf(filter) > -1;
54+
set(this, `filterData.show${capitalize(filter)}`, enabled);
55+
});
56+
}
57+
2158
@computed('legacyModuleMappings.mappings', 'model.{module,name}')
2259
get hasImportExample() {
2360
return this.legacyModuleMappings.hasClassMapping(
@@ -41,6 +78,10 @@ export default class ClassController extends Controller.extend(
4178
];
4279
}
4380

81+
get parentName() {
82+
return parentName(this.router.currentRouteName);
83+
}
84+
4485
@action
4586
updateFilter(filter) {
4687
this.toggleProperty(`filterData.${filter}`);
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
import { inject as service } from '@ember/service';
22
import Controller from '@ember/controller';
3-
import ParentNameMixin from 'ember-api-docs/mixins/parent-name';
3+
import { parentName } from '../../../../utils/parent-name';
44

5-
export default class IndexController extends Controller.extend(
6-
ParentNameMixin
7-
) {
5+
export default class IndexController extends Controller {
86
@service
97
filterData;
8+
9+
/** @type {import('@ember/routing/router-service').default} */
10+
@service
11+
router;
12+
13+
get parentName() {
14+
return parentName(this.router.currentRouteName);
15+
}
1016
}

app/mixins/filter-params.js

-46
This file was deleted.

app/mixins/parent-name.js

-15
This file was deleted.

app/utils/parent-name.js

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function parentName(routeName) {
2+
return routeName.split('.').slice(0, 3).join('.');
3+
}

0 commit comments

Comments
 (0)