/
head-data.js
86 lines (67 loc) · 2.13 KB
/
head-data.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
import HeadData from 'ember-meta/services/head-data';
import config from 'ember-get-config';
import { computed } from '@ember/object';
import { getOwner } from '@ember/application';
import { inject as service } from '@ember/service';
import { isPresent } from '@ember/utils';
export default HeadData.extend({
page: service(),
guidemaker: service(),
currentRouteModel: computed('routeName', function() {
return getOwner(this).lookup(`route:${this.routeName}`).get('currentModel.content');
}),
title: computed('routeName', 'page.{currentPage,currentSection}', function() {
if(!this.page.currentPage || !this.page.currentSection) {
return this.guidemaker.title;
}
let title = `${this.page.currentPage.title} - ${this.page.currentSection.title}`;
if(this.guidemaker.title) {
title += ` - ${this.guidemaker.title}`
}
return title;
}),
description: computed('routeName', function() {
return this.getWithDefault('currentRouteModel.description', config['ember-meta'].description);
}),
slug: computed('routeName', function() {
// if there is no current model
if (!this.currentRouteModel) {
return null;
}
if(this.currentRouteModel.id === 'index') {
return this.page.currentVersion;
}
return `${this.page.currentVersion}/${this.currentRouteModel.id.replace(/\/index$/, '')}`;
}),
canonical: computed('routeName', function() {
// if there is no current model
if (!this.currentRouteModel) {
return null;
}
let url = config['ember-meta'].url;
if(!isPresent(url)) {
return;
}
if (isPresent(this.currentRouteModel.canonical)) {
return this.currentRouteModel.canonical;
}
let slug;
if (this.currentRouteModel.id === 'index') {
slug = 'release';
} else {
slug = `release/${this.currentRouteModel.id.replace(/\/index$/, '')}`
}
return `${url}${slug}/`;
}),
url: computed('routeName', function() {
let url = config['ember-meta'].url;
if(!isPresent(url)) {
return;
}
const slug = this.get('slug');
if (slug) {
url = `${url}${slug}/`;
}
return url;
})
});