-
-
Notifications
You must be signed in to change notification settings - Fork 115
/
Copy pathclass.js
89 lines (75 loc) · 2.37 KB
/
class.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* eslint-disable ember/classic-decorator-no-classic-methods, ember/no-computed-properties-in-native-classes, ember/no-get, prettier/prettier */
import { action, computed, set, get } from '@ember/object';
import { inject as service } from '@ember/service';
import Controller from '@ember/controller';
import { A } from '@ember/array';
import { capitalize } from '@ember/string';
import { isEmpty } from '@ember/utils';
import { parentName } from '../../../utils/parent-name';
const filterTypes = ['inherited', 'protected', 'private', 'deprecated'];
const DEFAULT_FILTER = 'inherited';
export default class ClassController extends Controller {
/** @type {import('@ember/routing/router-service').default} */
@service
router;
@service
filterData;
queryParams = [{ visibilityFilter: 'show' }];
@service
legacyModuleMappings;
@service
metaStore;
@computed(
'filterData.{showInherited,showProtected,showPrivate,showDeprecated}'
)
get visibilityFilter() {
let appliedFilters = filterTypes
.reduce((filters, filter) => {
let filterValue = get(this, `filterData.show${capitalize(filter)}`)
? filter
: null;
filters.push(filterValue);
return filters;
}, A())
.compact();
if (isEmpty(appliedFilters)) {
return DEFAULT_FILTER;
} else {
return appliedFilters.join(',');
}
}
set visibilityFilter(value = '') {
let filters = A(value.split(','));
filterTypes.forEach((filter) => {
let enabled = filters.indexOf(filter) > -1;
set(this, `filterData.show${capitalize(filter)}`, enabled);
});
}
@computed('legacyModuleMappings.mappings', 'model.{module,name}')
get hasImportExample() {
return this.legacyModuleMappings.hasClassMapping(
this.get('model.name'),
this.get('model.module')
);
}
@computed('legacyModulemappings.mappings', 'model.{module,name}')
get module() {
return this.legacyModuleMappings.getModule(
this.get('model.name'),
this.get('model.module')
);
}
@computed('metaStore.availableProjectVersions', 'model.project.id')
get allVersions() {
return this.get('metaStore.availableProjectVersions')[
this.get('model.project.id')
];
}
get parentName() {
return parentName(this.router.currentRouteName);
}
@action
updateFilter(filter) {
this.toggleProperty(`filterData.${filter}`);
}
}