You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.7 KiB
129 lines
4.7 KiB
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one |
|
* or more contributor license agreements. See the NOTICE file |
|
* distributed with this work for additional information |
|
* regarding copyright ownership. The ASF licenses this file |
|
* to you under the Apache License, Version 2.0 (the |
|
* "License"); you may not use this file except in compliance |
|
* with the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, |
|
* software distributed under the License is distributed on an |
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
|
* KIND, either express or implied. See the License for the |
|
* specific language governing permissions and limitations |
|
* under the License. |
|
* |
|
*/ |
|
|
|
import React from 'react'; |
|
import ReactDOM from 'react-dom'; |
|
import cookie from 'js-cookie'; |
|
import Language from '../../components/language'; |
|
import Header from '../../components/header'; |
|
import Footer from '../../components/footer'; |
|
import Md2Html from '../../components/md2html'; |
|
import Sidemenu from '../../components/sidemenu'; |
|
import siteConfig from '../../../site_config/site'; |
|
import docs120Config from '../../../site_config/docs1-2-0'; |
|
import docs121Config from '../../../site_config/docs1-2-1'; |
|
import docs131Config from '../../../site_config/docs1-3-1'; |
|
import docs132Config from '../../../site_config/docs1-3-2'; |
|
import docs133Config from '../../../site_config/docs1-3-3'; |
|
import docs134Config from '../../../site_config/docs1-3-4'; |
|
import docs135Config from '../../../site_config/docs1-3-5'; |
|
import docs136Config from '../../../site_config/docs1-3-6'; |
|
import docs138Config from '../../../site_config/docs1-3-8'; |
|
import docs139Config from '../../../site_config/docs1-3-9'; |
|
import docs200Config from '../../../site_config/docs2-0-0'; |
|
import docs201Config from '../../../site_config/docs2-0-1'; |
|
import docs202Config from '../../../site_config/docs2-0-2'; |
|
import docs203Config from '../../../site_config/docs2-0-3'; |
|
import docs205Config from '../../../site_config/docs2-0-5'; |
|
import docs300Config from '../../../site_config/docs3-0-0'; |
|
import docsDevConfig from '../../../site_config/docsdev'; |
|
|
|
const docsSource = { |
|
'1.2.0': docs120Config, |
|
'1.2.1': docs121Config, |
|
'1.3.1': docs131Config, |
|
'1.3.2': docs132Config, |
|
'1.3.3': docs133Config, |
|
'1.3.4': docs134Config, |
|
'1.3.5': docs135Config, |
|
'1.3.6': docs136Config, |
|
'1.3.8': docs138Config, |
|
'1.3.9': docs139Config, |
|
'2.0.0': docs200Config, |
|
'2.0.1': docs201Config, |
|
'2.0.2': docs202Config, |
|
'2.0.3': docs203Config, |
|
'2.0.5': docs205Config, |
|
'3.0.0': docs300Config, |
|
dev: docsDevConfig, |
|
}; |
|
|
|
const isValidVersion = version => version && docsSource.hasOwnProperty(version); |
|
|
|
class Docs extends Md2Html(Language) { |
|
render() { |
|
const language = this.getLanguage(); |
|
let dataSource = {}; |
|
// from location path |
|
let version = window.location.pathname.split('/')[3]; |
|
if (isValidVersion(version) || version === 'latest') { |
|
cookie.set('docs_version', version); |
|
} |
|
// from rendering html |
|
if (!version && this.props.subdir) { |
|
version = this.props.subdir.split('/')[0]; |
|
} |
|
if (isValidVersion(version)) { |
|
dataSource = docsSource[version][language]; |
|
} else if (isValidVersion(cookie.get('docs_version'))) { |
|
dataSource = docsSource[cookie.get('docs_version')][language]; |
|
} else if (isValidVersion(siteConfig.docsLatest)) { |
|
dataSource = docsSource[siteConfig.docsLatest][language]; |
|
dataSource.sidemenu.forEach((menu) => { |
|
menu.children.forEach((submenu) => { |
|
if (!submenu.children) { |
|
submenu.link = submenu.link.replace(`docs/${siteConfig.docsLatest}`, 'docs/latest'); |
|
} else { |
|
submenu.children.forEach((menuLevel3) => { |
|
menuLevel3.link = menuLevel3.link.replace(`docs/${siteConfig.docsLatest}`, 'docs/latest'); |
|
}); |
|
} |
|
}); |
|
}); |
|
} else { |
|
return null; |
|
} |
|
const __html = this.props.__html || this.state.__html; |
|
return ( |
|
<div className="md2html docs-page"> |
|
<Header |
|
currentKey="docs" |
|
type="dark" |
|
logo="/img/hlogo_white.svg" |
|
language={language} |
|
onLanguageChange={this.onLanguageChange} |
|
/> |
|
<section className="content-section"> |
|
<Sidemenu dataSource={dataSource.sidemenu} /> |
|
<div |
|
className="doc-content markdown-body" |
|
ref={(node) => { this.markdownContainer = node; }} |
|
dangerouslySetInnerHTML={{ __html }} |
|
/> |
|
</section> |
|
<Footer logo="/img/ds_gray.svg" language={language} /> |
|
</div> |
|
); |
|
} |
|
} |
|
|
|
document.getElementById('root') && ReactDOM.render(<Docs />, document.getElementById('root')); |
|
|
|
export default Docs;
|
|
|