diff --git a/docs/apis/routing-api-preview.mdx b/docs/apis/routing-api-preview.mdx deleted file mode 100644 index f3b46c8875befa3867199121f6035c7e37478cd6..0000000000000000000000000000000000000000 --- a/docs/apis/routing-api-preview.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Routing API (Preview) -hide_table_of_contents: true ---- - -import ApiSpec from '@views/ApiSpec' - -<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} version={"*"} includePrerelease={true} allowAuthentication={"false"} allowTry={true} /> diff --git a/docs/apis/routing-api.mdx b/docs/apis/routing-api.mdx index 0c474dc905479ff469b3735441427c814f71c38a..4947caee12638b95adadf25e733e62eeb7f80593 100644 --- a/docs/apis/routing-api.mdx +++ b/docs/apis/routing-api.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import ApiSpec from '@views/ApiSpec' -<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} version={"*"} includePrerelease={"false"} allowAuthentication={"false"} allowTry={true} /> +<ApiSpec gitlabProjectId={"44"} path={"routing-api"} artifact={"routing-api.yaml"} version={"*"} includePrereleaseVersion={false} includePrerelease={true} allowAuthentication={"false"} allowTry={true} /> diff --git a/docs/apis/submission-api.mdx b/docs/apis/submission-api.mdx index 359f57a1e63be8e4e731adc55dc3803d2c59d546..cadaf2d053bc395c86f470dc3096f95a8d919a23 100644 --- a/docs/apis/submission-api.mdx +++ b/docs/apis/submission-api.mdx @@ -5,4 +5,4 @@ hide_table_of_contents: true import ApiSpec from '@views/ApiSpec' -<ApiSpec gitlabProjectId={"1"} path={"submission-api"} artifact={"submission-api.yaml"} version={"1.*"} /> +<ApiSpec gitlabProjectId={"1"} path={"submission-api"} artifact={"submission-api.yaml"} version={"*"} includePrereleaseVersion={false} includePrerelease={true} /> diff --git a/src/components/VersionSelect.js b/src/components/VersionSelect.js index 4d799ff8587e3adf8a0fd0ed16efae871c71f3e5..00c0244e26f3eb251ffc7b27ac59a81a3a9a96f6 100644 --- a/src/components/VersionSelect.js +++ b/src/components/VersionSelect.js @@ -2,25 +2,27 @@ import React, {useEffect} from "react" import useAsync from '@hooks/useAsync' import getVersionList from "@lib/utils/getVersionList"; -export default ({ version, setVersion, gitlabId }) => { +export default ({ version, setVersion, gitlabId, includePrerelease = false }) => { const {execute, status, error, value: versions} = useAsync(getVersionList, { projectId: gitlabId, - includePrerelease: false + includePrerelease, }, false) + const selectStyle = { + border: "1px solid rgba(128, 126, 163, 0.8)", + borderRadius: "3px", + height: "36px", + lineHeight: "20px", + } + useEffect(() => { execute() }, []) - useEffect(async () => { - if (status === 'success') { - console.log('vvvvvv', versions) - } - }, [status]) - return <div> Andere Version anzeigen: <select + style={selectStyle} value={version} onChange={e => setVersion(e.target.value)}> {versions && versions.map ? versions.map((v, i) => ( diff --git a/src/lib/utils/getLatestVersion.js b/src/lib/utils/getLatestVersion.js index 8e57cdafd8f857fdd1038c013b09cdf48b0795bb..429f02c064e0b660b22288b7783c352f35085f65 100644 --- a/src/lib/utils/getLatestVersion.js +++ b/src/lib/utils/getLatestVersion.js @@ -17,7 +17,7 @@ export default async function ({siteVersion, projectId, includePrerelease = fals .sort() const result_version = semver.maxSatisfying(suitableVersions, versionRange, {includePrerelease}) - console.log('Get version for project: %s, requested version: %s, includePrerelease: %s, available versions: %s, selected version: %s', projectId, siteVersion, includePrerelease, suitableVersions, result_version) + // console.log('Get version for project: %s, requested version: %s, includePrerelease: %s, available versions: %s, selected version: %s', projectId, siteVersion, includePrerelease, suitableVersions, result_version) return result_version }) } diff --git a/src/lib/utils/getVersionList.js b/src/lib/utils/getVersionList.js index 6182c83989cc42af5f4c53646a9c5653cc16f12b..3955a054871e46a0e8c58f1f95fdf227d9b3b50b 100644 --- a/src/lib/utils/getVersionList.js +++ b/src/lib/utils/getVersionList.js @@ -6,7 +6,11 @@ export default async function ({projectId, includePrerelease = false}) { .catch((error) => { throw `Fetching of tags failed with ${error.response.status}` }) - .then(async ({data}) => { + .then(async ({ data }) => { + // inject test rc to check if fiter is working + // const test_rc = { ...data[0] } + // test_rc.name = '1.2.0-rc.1' + // data.push(test_rc) const versionRange = `~*.*.*` const suitableVersions = await data .filter(({name}) => semver.satisfies(name, versionRange, {includePrerelease})) diff --git a/src/views/ApiSpec.js b/src/views/ApiSpec.js index cb3acbff39e750f3a40436fddf24bced0eba5ed8..86322f662636855dd43f1f2d14095916da35c1fe 100644 --- a/src/views/ApiSpec.js +++ b/src/views/ApiSpec.js @@ -1,30 +1,36 @@ -import React, {useEffect} from 'react' +import React, {useEffect, useState} from 'react' import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment' import BrowserOnly from '@docusaurus/BrowserOnly' -import {useActivePlugin, useActiveVersion,} from '@docusaurus/plugin-content-docs/client' - import useAsync from '@hooks/useAsync' import getLatestVersion from "@lib/utils/getLatestVersion"; import DownloadLabel from "@components/DownloadLabel"; +import VersionSelect from "@components/VersionSelect"; const SCHEMA_BASE_URL = 'https://schema.fitko.de/fit-connect' export default function ApiSpec(props) { - const isInBrowser = ExecutionEnvironment.canUseDOM + const {artifact, path, version, gitlabProjectId, includePrerelease, includePrereleaseVersion} = props + const [selectedVersion, setSelectedVersion] = useState('') - const {pluginId} = useActivePlugin({failfast: true}) + const isInBrowser = ExecutionEnvironment.canUseDOM const {execute, status, error, value: latestVersion} = useAsync(getLatestVersion, { - siteVersion: props.version === undefined ? '*' : props.version, - projectId: props.gitlabProjectId, - includePrerelease: props.includePrerelease !== undefined + siteVersion: version === undefined ? '*' : version, + projectId: gitlabProjectId, + includePrerelease: !!includePrereleaseVersion }, false) if (isInBrowser) { useEffect(() => { execute() }, []) + + useEffect(async () => { + if (status === 'success') { + setSelectedVersion(latestVersion) + } + }, [status]) } return ( @@ -36,14 +42,14 @@ export default function ApiSpec(props) { <div> <p>Die aktuell angezeigte Version der API ist {status === 'success' && <code>{latestVersion}</code>} {status === 'success' && - <DownloadLabel baseURL={`${SCHEMA_BASE_URL}/${props.path}`} version={latestVersion} artifact={props.artifact} label="OpenAPI"/>}. - Alle vorherigen Versionen <a href={`${SCHEMA_BASE_URL}/${props.path}`}>finden sich hier.</a> + <DownloadLabel baseURL={`${SCHEMA_BASE_URL}/${path}`} version={selectedVersion} artifact={artifact} label="OpenAPI"/>}. </p> + <VersionSelect version={selectedVersion} setVersion={setSelectedVersion} gitlabId={gitlabProjectId} includePrerelease={includePrerelease} /><br/> - {status === 'success' && latestVersion && <rapi-doc + {status === 'success' && selectedVersion && <rapi-doc render-style="view" layout="column" - spec-url={`${SCHEMA_BASE_URL}/${props.path}/${latestVersion}/${props.artifact}`} + spec-url={`${SCHEMA_BASE_URL}/${path}/${selectedVersion}/${artifact}`} theme="light" schema-description-expanded="true" show-info="false" diff --git a/src/views/JSONSchema.js b/src/views/JSONSchema.js index de50adbc2505460bcd43dbcdb014323f37a0ca69..feef36819611df5605cd0801dc073b6399ed770d 100644 --- a/src/views/JSONSchema.js +++ b/src/views/JSONSchema.js @@ -35,7 +35,6 @@ export default function JSONSchema(props) { const { name, version, includePrerelease } = props; const [jsonSchema, setJsonSchema] = useState(null) const [selectedVersion, setSelectedVersion] = useState(version) - console.log('selectedVersion: ', selectedVersion); const isInBrowser = ExecutionEnvironment.canUseDOM const {pluginId} = useActivePlugin({failfast: true}) const {name: siteVersion} = useActiveVersion(pluginId)