|
1 import React from 'react'; |
|
2 |
|
3 import { HashRouter } from 'react-router-dom'; |
|
4 import { ui, layouts, pages } from 'dashboard-components'; |
|
5 import PropTypes from 'prop-types'; |
|
6 |
|
7 import { FormattedMessage } from 'react-intl'; |
|
8 |
|
9 import config from './config.json'; |
|
10 |
|
11 import './App.css'; |
|
12 |
|
13 const { DefaultLayoutSidebar, DefaultLayout } = layouts; |
|
14 const { ScrollToTop } = ui; |
|
15 |
|
16 const { |
|
17 DocumentsPage, |
|
18 GlossaryPage, |
|
19 ChartsPage, |
|
20 AnnotationsPage, |
|
21 TermPage, |
|
22 } = pages; |
|
23 |
|
24 const version = process.env.REACT_APP_VERSION; |
|
25 const viaBaseUrl = process.env.REACT_APP_VIA_BASE_URL; |
|
26 const discussionUrl = process.env.REACT_APP_DISCUSSION_URL; |
|
27 const { |
|
28 metacategories, |
|
29 topics, |
|
30 documents, |
|
31 title, |
|
32 dashboardId, |
|
33 } = config; |
|
34 |
|
35 const DocumentsPageBanner = ({ |
|
36 documentsMap, |
|
37 topics: topicsProp, |
|
38 metacategories: metacategoriesProp, |
|
39 viaBaseUrl: viaBaseUrlProp, |
|
40 }) => ( |
|
41 <DocumentsPage |
|
42 documentsMap={documentsMap} |
|
43 topics={topicsProp} |
|
44 metacategories={metacategoriesProp} |
|
45 viaBaseUrl={viaBaseUrlProp} |
|
46 > |
|
47 <div className="row"> |
|
48 <h3><a className="scenarioterre-link" href={`${viaBaseUrlProp}http://scenario-terre.space/`} target="_blank" rel="noopener noreferrer"><FormattedMessage id="home.scenarioterre.welcome" defaultMessage="Annotez le site « Scénario Terre »" /></a></h3> |
|
49 <div className="scenarioterre-banner-container"> |
|
50 <a className="scenarioterre-banner" href={`${viaBaseUrlProp}http://scenario-terre.space/`} target="_blank" rel="noopener noreferrer"> </a> |
|
51 </div> |
|
52 </div> |
|
53 </DocumentsPage> |
|
54 ); |
|
55 |
|
56 DocumentsPageBanner.propTypes = { |
|
57 viaBaseUrl: PropTypes.string.isRequired, |
|
58 documentsMap: PropTypes.arrayOf(PropTypes.object).isRequired, |
|
59 metacategories: PropTypes.arrayOf(PropTypes.object).isRequired, |
|
60 topics: PropTypes.arrayOf(PropTypes.string).isRequired, |
|
61 }; |
|
62 |
|
63 const App = () => ( |
|
64 <HashRouter> |
|
65 <ScrollToTop> |
|
66 <div> |
|
67 <DefaultLayoutSidebar |
|
68 exact |
|
69 path="/" |
|
70 component={DocumentsPageBanner} |
|
71 version={version} |
|
72 metacategories={metacategories} |
|
73 topics={topics} |
|
74 documentsMap={documents} |
|
75 viaBaseUrl={viaBaseUrl} |
|
76 title={title} |
|
77 /> |
|
78 <DefaultLayout |
|
79 path="/glossary" |
|
80 component={GlossaryPage} |
|
81 title={title} |
|
82 version={version} |
|
83 /> |
|
84 <DefaultLayoutSidebar |
|
85 path="/charts" |
|
86 component={ChartsPage} |
|
87 metacategories={metacategories} |
|
88 topics={topics} |
|
89 title={title} |
|
90 version={version} |
|
91 /> |
|
92 <DefaultLayoutSidebar |
|
93 path="/annotations/:tagName?" |
|
94 component={AnnotationsPage} |
|
95 metacategories={metacategories} |
|
96 topics={topics} |
|
97 viaBaseUrl={viaBaseUrl} |
|
98 title={title} |
|
99 version={version} |
|
100 /> |
|
101 <DefaultLayoutSidebar |
|
102 path="/term/:term/:activeTab?/:messageId?" |
|
103 component={TermPage} |
|
104 title={title} |
|
105 viaBaseUrl={viaBaseUrl} |
|
106 metacategories={metacategories} |
|
107 topics={topics} |
|
108 version={version} |
|
109 discussionUrl={discussionUrl} |
|
110 dashboardId={dashboardId} |
|
111 /> |
|
112 </div> |
|
113 </ScrollToTop> |
|
114 </HashRouter> |
|
115 ); |
|
116 |
|
117 export default App; |