Skip to content

Commit 2802ae6

Browse files
MartinMalindatoddjordan
authored andcommitted
add temporary solution for linking to classes from different project (#248)
1 parent e50fb9d commit 2802ae6

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

app/adapters/application.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default JSONAPIAdapter.extend({
1919
currentProjectVersion: '',
2020

2121
metaStore: service(),
22+
projectService: service('project'),
2223

2324
async findRecord(store, {modelName}, id) {
2425
let url;
@@ -30,7 +31,7 @@ export default JSONAPIAdapter.extend({
3031
let revId = this.get('metaStore').getRevId(projectName, version, modelName, id);
3132
url = `json-docs/${projectName}/${version}/${inflector.pluralize(modelName)}/${revId}`;
3233
} else if (modelName === 'missing') {
33-
let version = Ember.getOwner(this).lookup('controller:project-version').get('model.version');
34+
let version = this.get('projectService.version');
3435
let revId = this.get('metaStore').getRevId(projectName, version, modelName, id);
3536
url = `json-docs/${projectName}/${version}/${inflector.pluralize(modelName)}/${revId}`;
3637
} else if (modelName === 'project') {

app/models/class.js

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,34 @@ import Ember from 'ember';
44
const {computed} = Ember;
55
const {attr, belongsTo} = DS;
66

7+
const projectNameFromClassName = key => {
8+
return computed(key, function() {
9+
const value = this.get(key) || "";
10+
if (value.indexOf('Ember.') > -1) {
11+
return 'ember';
12+
}
13+
14+
if (value.indexOf('DS.') > 1) {
15+
return 'ember-data';
16+
}
17+
18+
return this.get('project.id');
19+
});
20+
};
21+
22+
// ideally this computed property would not be needed and we'd have extendsVersion, extendsProject attrs from json-api-docs
23+
const guessVersionFor = key => {
24+
return computed(key, 'project.id', function() {
25+
26+
if (this.get('extendedClassProjectName') === this.get('project.id')) {
27+
return this.get('projectVersion.version');
28+
}
29+
30+
// try linking to latest version at least
31+
return 'release';
32+
});
33+
};
34+
735
export default DS.Model.extend({
836
name: attr(),
937
methods: attr(),
@@ -21,6 +49,11 @@ export default DS.Model.extend({
2149
projectVersion: belongsTo('project-version', {inverse: 'classes'}),
2250
project: computed('projectVersion.id', function() {
2351
return this.get('projectVersion').get('project');
24-
})
52+
}),
53+
54+
extendedClassProjectName: projectNameFromClassName('extends'),
55+
extendedClassVersion: guessVersionFor('extends'),
56+
usedClassProjectName: projectNameFromClassName('uses'),
57+
usedClassVersion: guessVersionFor('uses')
2558

2659
});

app/templates/project-version/classes/class.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
{{#if model.extends}}
99
<div class="attribute">
1010
<span class="attribute-label">Extends:</span>
11-
<span class="attribute-value">{{#link-to 'project-version.classes.class' model.projectVersion.version model.extends}}{{model.extends}}{{/link-to}}</span>
11+
<span class="attribute-value">{{#link-to 'project-version.classes.class' model.extendedClassProjectName model.extendedClassVersion model.extends}}{{model.extends}}{{/link-to}}</span>
1212
</div>
1313
{{/if}}
1414
{{#if model.uses}}
@@ -17,7 +17,7 @@
1717
<span class="attribute-value">
1818
{{#each model.uses as |parentClass idx|}}
1919
{{#unless (eq idx 0)}}<span class="comma">,</span>{{/unless}}
20-
{{#link-to 'project-version.classes.class' model.projectVersion.version parentClass}}{{parentClass}}{{/link-to}}
20+
{{#link-to 'project-version.classes.class' model.usedClassProjectName model.usedClassVersion parentClass}}{{parentClass}}{{/link-to}}
2121
{{/each}}
2222
</span>
2323
</div>

0 commit comments

Comments
 (0)