|
1 | 1 | 'use strict' |
2 | 2 |
|
3 | | -module.exports = (components) => versionTree(components) |
| 3 | +module.exports = (components, page) => versionTree(components, page) |
4 | 4 |
|
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 | + } |
6 | 12 | for (const [, component] of Object.entries(components)) { |
7 | | - component.versionTree = splitVersions(component.versions) |
| 13 | + component.versionTree = splitVersions(component.versions, versionToUrl) |
8 | 14 | } |
9 | 15 | return components |
10 | 16 | } |
11 | 17 |
|
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)) |
16 | 23 | return { |
17 | 24 | snapshot: snapshot.length > 0 ? snapshot : null, |
18 | 25 | stable: stable.length > 0 ? stable : null, |
19 | 26 | preview: preview.length > 0 ? preview : null, |
20 | 27 | } |
21 | 28 | } |
| 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 | +} |
0 commit comments