Skip to content

Commit 74957d1

Browse files
committed
Use page.versions
Closes gh-269
1 parent 6406f63 commit 74957d1

File tree

5 files changed

+82
-10
lines changed

5 files changed

+82
-10
lines changed

Diff for: gulp.d/tasks/build-preview-pages.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module.exports =
5050
const siteRootPath = path.relative(ospath.dirname(file.path), ospath.resolve(previewSrc))
5151
const uiModel = { ...baseUiModel }
5252
const sharedPageModel = page.component ? baseUiModel.shared[page.component.name][page.version] : {}
53-
uiModel.page = { ...uiModel.page, ...page, ...sharedPageModel }
53+
uiModel.page = { ...uiModel.page, ...sharedPageModel, ...page }
5454
uiModel.siteRootPath = siteRootPath
5555
uiModel.siteRootUrl = path.join(siteRootPath, 'index.html')
5656
uiModel.uiRootPath = path.join(siteRootPath, '_')

Diff for: preview-src/samples/edge-cases/index.adoc.yml

+5
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,8 @@ breadcrumbs:
2525
- content: Edge cases
2626
url: '#'
2727
urlType: fragment
28+
versions:
29+
- url: '#/samples/edge-cases.html'
30+
displayVersion: 2.0.0
31+
- url: '#/1.0.0/samples/edge-cases.html'
32+
displayVersion: 1.0.0

Diff for: src/helpers/versionTree.js

+24-7
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
11
'use strict'
22

3-
module.exports = (components) => versionTree(components)
3+
module.exports = (components, page) => versionTree(components, page)
44

5-
function versionTree (components) {
5+
function versionTree (components, page) {
6+
const versionToUrl = {}
7+
if (page && page.versions) {
8+
page.versions.forEach((v) => {
9+
versionToUrl[v.displayVersion] = v.url
10+
})
11+
}
612
for (const [, component] of Object.entries(components)) {
7-
component.versionTree = splitVersions(component.versions)
13+
component.versionTree = splitVersions(component.versions, versionToUrl)
814
}
915
return components
1016
}
1117

12-
function splitVersions (versions) {
13-
const snapshot = versions.filter((v) => v.displayVersion.includes('SNAPSHOT'))
14-
const stable = versions.filter((v) => !v.displayVersion.includes('-'))
15-
const preview = versions.filter((v) => !snapshot.includes(v) && !stable.includes(v))
18+
function splitVersions (versions, versionToUrl) {
19+
const snapshot = versions.filter((v) => v.displayVersion.includes('SNAPSHOT')).map((v) => navVersion(v, versionToUrl))
20+
const stable = versions.filter((v) => !v.displayVersion.includes('-')).map((v) => navVersion(v, versionToUrl))
21+
const preview = versions.filter((v) => !v.displayVersion.includes('SNAPSHOT') &&
22+
v.displayVersion.includes('-')).map((v) => navVersion(v, versionToUrl))
1623
return {
1724
snapshot: snapshot.length > 0 ? snapshot : null,
1825
stable: stable.length > 0 ? stable : null,
1926
preview: preview.length > 0 ? preview : null,
2027
}
2128
}
29+
30+
function navVersion (v, versionToUrl) {
31+
const navVersion =
32+
v.latest ? { latest: v.latest, url: v.url, displayVersion: v.displayVersion }
33+
: { url: v.url, displayVersion: v.displayVersion }
34+
if (versionToUrl[v.displayVersion]) {
35+
navVersion.url = versionToUrl[v.displayVersion]
36+
}
37+
return navVersion
38+
}

Diff for: src/partials/version.hbs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<div class="col-left">
1010

1111
<ul class="nav-versions">
12-
{{#each (versionTree site.components)}}
12+
{{#each (versionTree site.components @root.page)}}
1313
<li class="component">
1414
<div>
1515
<a class="title" href="{{{relativize ./url}}}">{{{./title}}}</a>

Diff for: test/versionTree-test.js

+51-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const { expect } = require('./harness')
55
const versionTree = require('../src/helpers/versionTree.js')
66

77
describe('versionTree', () => {
8-
it('should return stable, preview and snapshot versions', () => {
8+
it('should return stable, preview and snapshot versions', () => {
99
const result = versionTree({
1010
test: {
1111
versions: [
@@ -45,6 +45,56 @@ describe('versionTree', () => {
4545
expect(tree.snapshot[1].displayVersion).is.eql('3.0.0-SNAPSHOT')
4646
})
4747

48+
it('page version overrides urls', () => {
49+
const result = versionTree({
50+
test: {
51+
versions: [
52+
{
53+
displayVersion: '2.0.0',
54+
url: './version.html',
55+
},
56+
],
57+
},
58+
}, {
59+
versions: [
60+
{
61+
displayVersion: '2.0.0',
62+
url: './page.html',
63+
},
64+
],
65+
})
66+
67+
const tree = result.test.versionTree
68+
expect(tree.stable.length).is.eql(1)
69+
expect(tree.stable[0].displayVersion).is.eql('2.0.0')
70+
expect(tree.stable[0].url).is.eql('./page.html')
71+
})
72+
73+
it('page does not define version', () => {
74+
const result = versionTree({
75+
test: {
76+
versions: [
77+
{
78+
displayVersion: '2.0.0',
79+
url: './version.html',
80+
},
81+
],
82+
},
83+
}, {
84+
versions: [
85+
{
86+
displayVersion: '2.0.0',
87+
url: './version.html',
88+
},
89+
],
90+
})
91+
92+
const tree = result.test.versionTree
93+
expect(tree.stable.length).is.eql(1)
94+
expect(tree.stable[0].displayVersion).is.eql('2.0.0')
95+
expect(tree.stable[0].url).is.eql('./version.html')
96+
})
97+
4898
it('should return an empty structure', () => {
4999
const result = versionTree({
50100
test: {

0 commit comments

Comments
 (0)