1- // eslint-disable-next-line ember/no-computed-properties-in-native-classes
2- import { computed } from '@ember/object' ;
31import Model , { belongsTo , attr } from '@ember-data/model' ;
42
5- const projectNameFromClassName = ( key ) => {
6- return computed ( key , 'project.id' , function ( ) {
7- const value = this . get ( key ) || '' ;
8- if ( value . indexOf ( 'Ember.' ) > - 1 ) {
9- return 'ember' ;
10- }
11-
12- if ( value . indexOf ( 'DS.' ) > 1 ) {
13- return 'ember-data' ;
14- }
15-
16- return this . project . id ;
17- } ) ;
18- } ;
19-
20- // ideally this computed property would not be needed and we'd have extendsVersion, extendsProject attrs from json-api-docs
21- const guessVersionFor = ( key ) => {
22- return computed (
23- key ,
24- 'extendedClassProjectName' ,
25- 'project.id' ,
26- 'projectVersion.version' ,
27- function ( ) {
28- if ( this . extendedClassProjectName === this . project . id ) {
29- return this . projectVersion . version ;
30- }
31-
32- // try linking to latest version at least
33- return 'release' ;
34- } ,
35- ) ;
36- } ;
37-
383export default class Class extends Model {
394 @attr ( )
405 name ;
@@ -81,24 +46,18 @@ export default class Class extends Model {
8146 @belongsTo ( 'project-version' , { inverse : 'classes' } )
8247 projectVersion ;
8348
84- @computed ( 'projectVersion.id' )
8549 get project ( ) {
8650 return this . projectVersion . get ( 'project' ) ;
8751 }
8852
89- @projectNameFromClassName ( 'extends' )
90- extendedClassProjectName ;
91-
92- @guessVersionFor ( 'extends' )
93- extendedClassVersion ;
94-
95- @projectNameFromClassName ( 'uses' )
96- usedClassProjectName ;
53+ get extendedClassProjectName ( ) {
54+ return this . projectNameFromClassName ( this [ 'extends' ] ) ;
55+ }
9756
98- @guessVersionFor ( 'uses' )
99- usedClassVersion ;
57+ get usedClassProjectName ( ) {
58+ return this . projectNameFromClassName ( this . uses ) ;
59+ }
10060
101- @computed ( 'extends' )
10261 get extendedClassShortName ( ) {
10362 let extendedClassName = this [ 'extends' ] ;
10463 if ( extendedClassName . substr ( 0 , 6 ) === 'Ember.' ) {
@@ -107,7 +66,6 @@ export default class Class extends Model {
10766 return extendedClassName ;
10867 }
10968
110- @computed ( 'project.id' , 'uses' )
11169 get usesObjects ( ) {
11270 return this . uses . map ( ( className ) => ( {
11371 name : className ,
@@ -121,4 +79,17 @@ export default class Class extends Model {
12179 : this . project . id ,
12280 } ) ) ;
12381 }
82+
83+ projectNameFromClassName ( val ) {
84+ const value = val ?? '' ;
85+ if ( value . indexOf ( 'Ember.' ) > - 1 ) {
86+ return 'ember' ;
87+ }
88+
89+ if ( value . indexOf ( 'DS.' ) > 1 ) {
90+ return 'ember-data' ;
91+ }
92+
93+ return this . project . id ;
94+ }
12495}
0 commit comments