Skip to content

Commit 33da259

Browse files
authored
fix: Group versions
1 parent 196c293 commit 33da259

File tree

5 files changed

+86
-62
lines changed

5 files changed

+86
-62
lines changed

gulp.d/tasks/build.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,8 @@ module.exports = (src, dest, preview) => () => {
102102
),
103103
vfs.src('helpers/*.js', opts),
104104
vfs.src('layouts/*.hbs', opts),
105-
vfs.src('partials/*.hbs', opts)
106-
.pipe(replace('@@antora-ui-version', git.isTagDirty() ? git.long() : git.tag()))
107-
).pipe(vfs.dest(dest, { sourcemaps: sourcemaps && '.' })
108-
)
105+
vfs.src('partials/*.hbs', opts).pipe(replace('@@antora-ui-version', git.isTagDirty() ? git.long() : git.tag()))
106+
).pipe(vfs.dest(dest, { sourcemaps: sourcemaps && '.' }))
109107
}
110108

111109
function bundle ({ base: basedir, ext: bundleExt = '.bundle.js' }) {

src/helpers/versionTree.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
'use strict'
22

3+
module.exports = (components) => versionTree(components)
4+
5+
function versionTree (components) {
6+
for (const [, component] of Object.entries(components)) {
7+
component.versionTree = splitVersions(component.versions)
8+
}
9+
return components
10+
}
11+
312
function splitVersions (versions) {
4-
const snapshot = versions.filter((v) => v.version.includes('SNAPSHOT'))
5-
const stable = versions.filter((v) => {
6-
const split = v.version.split('-')
7-
if (split.length === 1) return true
8-
return false
9-
})
13+
const snapshot = versions.filter((v) => v.displayVersion.includes('SNAPSHOT'))
14+
const stable = versions.filter((v) => !v.displayVersion.includes('-'))
1015
const preview = versions.filter((v) => !snapshot.includes(v) && !stable.includes(v))
1116
return {
1217
snapshot: snapshot.length > 0 ? snapshot : null,
1318
stable: stable.length > 0 ? stable : null,
1419
preview: preview.length > 0 ? preview : null,
1520
}
1621
}
17-
18-
module.exports = (components) => {
19-
return Object.values(components)?.map((comp) => {
20-
return {
21-
...comp,
22-
versions: splitVersions(comp.versions),
23-
}
24-
})
25-
}

src/js/vendor/redirect.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
const params = new URLSearchParams(window.location.search)
99
const page = params.get('page') || ''
1010
const fragment = window.location.hash
11-
const pageAndFragment = page + ((fragment.length === 1) ? '' : fragment)
11+
const pageAndFragment = page + (fragment.length === 1 ? '' : fragment)
1212
let foundForFragment
1313
let foundForPageAndFragment
1414
const candidates = document.querySelector('body ul')

src/partials/version.hbs

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,52 @@
77
</button>
88
<div class="colset">
99
<div class="col-left">
10+
1011
<ul class="nav-versions">
11-
{{#each site.components}}
12-
<li class="component{{#if (eq this @root.page.component)}} is-current{{/if}}">
13-
<a class="title" href="{{{relativize ./url}}}">{{{./title}}}</a>
14-
<ul class="versions">
15-
{{#each ./versions}}
16-
<li class="version
17-
{{~#if (and (eq .. @root.page.component) (eq this @root.page.componentVersion))}} is-current{{/if~}}
18-
{{~#if (eq this ../latest)}} is-latest{{/if}}">
19-
<a href="{{{relativize ./url}}}">
20-
{{./displayVersion}}
21-
{{~#if (eq this ../latest)}}<span class="current">current</span>{{/if}}
22-
</a>
23-
</li>
24-
{{/each}}
25-
</ul>
26-
</li>
12+
{{#each (versionTree site.components)}}
13+
<li class="component">
14+
<div>
15+
<a class="title" href="{{{relativize ./url}}}">{{{./title}}}</a>
16+
</div>
17+
18+
19+
{{~#if (notEmpty ./versionTree.stable)}}
20+
<div class="version-item is-active">
21+
<div>
22+
<button class="version-toggle" type="button">
23+
<span></span>
24+
Stable
25+
</button>
26+
</div>
27+
{{> version-nav ./versionTree.stable}}
28+
</div>
29+
{{/if}}
30+
31+
{{~#if (notEmpty ./versionTree.preview)}}
32+
<div class="version-item">
33+
<div>
34+
<button class="version-toggle" type="button">
35+
<span></span>
36+
Preview
37+
</button>
38+
</div>
39+
{{> version-nav ./versionTree.preview}}
40+
</div>
41+
{{/if}}
42+
43+
{{~#if (notEmpty ./versionTree.snapshot)}}
44+
<div class="version-item">
45+
<div>
46+
<button class="version-toggle" type="button">
47+
<span></span>
48+
Snapshot
49+
</button>
50+
</div>
51+
{{> version-nav ./versionTree.snapshot}}
52+
</div>
53+
{{/if}}
54+
55+
</li>
2756
{{/each}}
2857
</ul>
2958
</div>

test/versionTree-test.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,54 @@ const versionTree = require('../src/helpers/versionTree.js')
66

77
describe('versionTree', () => {
88
it('should return stable, preview and snapshot versions', () => {
9-
const result = versionTree([
10-
{
9+
const result = versionTree({
10+
test: {
1111
versions: [
1212
{
13-
version: '3.0.1-SNAPSHOT',
13+
displayVersion: '3.0.1-SNAPSHOT',
1414
},
1515
{
16-
version: '3.0.0-SNAPSHOT',
16+
displayVersion: '3.0.0-SNAPSHOT',
1717
},
1818
{
19-
version: '2.0.0',
19+
displayVersion: '2.0.0',
2020
},
2121
{
22-
version: '1.0.0',
22+
displayVersion: '1.0.0',
2323
},
2424
{
25-
version: '1.0.0-RC1',
25+
displayVersion: '1.0.0-RC1',
2626
},
2727
{
28-
version: '1.0.0-RC2',
28+
displayVersion: '1.0.0-RC2',
2929
},
3030
],
3131
},
32-
])
32+
})
3333

34-
expect(result[0].versions.stable.length).is.eql(2)
35-
expect(result[0].versions.stable[0].version).is.eql('2.0.0')
36-
expect(result[0].versions.stable[1].version).is.eql('1.0.0')
34+
const tree = result.test.versionTree
35+
expect(tree.stable.length).is.eql(2)
36+
expect(tree.stable[0].displayVersion).is.eql('2.0.0')
37+
expect(tree.stable[1].displayVersion).is.eql('1.0.0')
3738

38-
expect(result[0].versions.preview.length).is.eql(2)
39-
expect(result[0].versions.preview[0].version).is.eql('1.0.0-RC1')
40-
expect(result[0].versions.preview[1].version).is.eql('1.0.0-RC2')
39+
expect(tree.preview.length).is.eql(2)
40+
expect(tree.preview[0].displayVersion).is.eql('1.0.0-RC1')
41+
expect(tree.preview[1].displayVersion).is.eql('1.0.0-RC2')
4142

42-
expect(result[0].versions.snapshot.length).is.eql(2)
43-
expect(result[0].versions.snapshot[0].version).is.eql('3.0.1-SNAPSHOT')
44-
expect(result[0].versions.snapshot[1].version).is.eql('3.0.0-SNAPSHOT')
43+
expect(tree.snapshot.length).is.eql(2)
44+
expect(tree.snapshot[0].displayVersion).is.eql('3.0.1-SNAPSHOT')
45+
expect(tree.snapshot[1].displayVersion).is.eql('3.0.0-SNAPSHOT')
4546
})
4647

4748
it('should return an empty structure', () => {
48-
const result = versionTree([
49-
{
50-
versions: [
51-
],
49+
const result = versionTree({
50+
test: {
51+
versions: [],
5252
},
53-
])
54-
expect(result[0].versions.stable).is.eql(null)
55-
expect(result[0].versions.preview).is.eql(null)
56-
expect(result[0].versions.snapshot).is.eql(null)
53+
})
54+
const tree = result.test.versionTree
55+
expect(tree.stable).is.eql(null)
56+
expect(tree.preview).is.eql(null)
57+
expect(tree.snapshot).is.eql(null)
5758
})
5859
})

0 commit comments

Comments
 (0)