Skip to content

Commit c6a4d45

Browse files
committed
BOLT-211: Refactor: tidyup constant values in ft-ui
1 parent 99a2e86 commit c6a4d45

4 files changed

Lines changed: 195 additions & 176 deletions

File tree

examples/ft-ui/constants.js

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
export const subnavData = [
2+
{ label: 'Monetary Policy Radar', url: '/central-banks/monetary-policy-radar', selected: false },
3+
{
4+
label: 'Federal Reserve',
5+
url: null,
6+
selected: false,
7+
subnavDropdownOptions: [
8+
{ label: 'Coverage', url: '/banks/federal-reserve/coverage', trackable: 'FED_DROPDOWN_COVERAGE' },
9+
{
10+
label: 'Policy Rate Scenarios',
11+
url: '/banks/federal-reserve/policy-rate-scenarios',
12+
trackable: 'FED_DROPDOWN_POLICY_RATE_SCENARIOS'
13+
},
14+
{
15+
label: 'Doves and Hawks',
16+
url: '/banks/federal-reserve/doves-and-hawks',
17+
trackable: 'FED_DROPDOWN_DOVES_AND_HAWKS'
18+
},
19+
{
20+
label: 'Central bankers views',
21+
url: '/banks/federal-reserve/views',
22+
trackable: 'FED_DROPDOWN_CENTRAL_BANKERS_VIEWS'
23+
},
24+
{
25+
label: 'Profile of central bankers',
26+
url: '/banks/federal-reserve/profiles',
27+
trackable: 'FED_DROPDOWN_PROFILES'
28+
},
29+
{
30+
label: "Analysts' views",
31+
url: '/banks/federal-reserve/analysts-views/all-estimates',
32+
trackable: 'FED_DROPDOWN_ANALYSTS_VIEWS'
33+
},
34+
{ label: 'Data', url: '/banks/federal-reserve/data', trackable: 'FED_DROPDOWN_DATA' },
35+
{ label: 'Calendar', url: '/banks/federal-reserve/calendar', trackable: 'FED_DROPDOWN_CALENDAR' }
36+
],
37+
isSubnavDropdownEnabled: true
38+
},
39+
{
40+
label: 'European Central Bank',
41+
url: null,
42+
selected: false,
43+
subnavDropdownOptions: [
44+
{ label: 'Coverage', url: '/banks/european-central-bank/coverage', trackable: 'ECB_DROPDOWN_COVERAGE' },
45+
{
46+
label: 'Policy Rate Scenarios',
47+
url: '/banks/european-central-bank/policy-rate-scenarios',
48+
trackable: 'ECB_DROPDOWN_POLICY_RATE_SCENARIOS'
49+
},
50+
{
51+
label: 'Doves and Hawks',
52+
url: '/banks/european-central-bank/doves-and-hawks',
53+
trackable: 'ECB_DROPDOWN_DOVES_AND_HAWKS'
54+
},
55+
{
56+
label: 'Central bankers views',
57+
url: '/banks/european-central-bank/views',
58+
trackable: 'ECB_DROPDOWN_CENTRAL_BANKERS_VIEWS'
59+
},
60+
{
61+
label: 'Profile of central bankers',
62+
url: '/banks/european-central-bank/profiles',
63+
trackable: 'ECB_DROPDOWN_PROFILES'
64+
},
65+
{
66+
label: "Analysts' views",
67+
url: '/banks/european-central-bank/analysts-views/all-estimates',
68+
trackable: 'ECB_DROPDOWN_ANALYSTS_VIEWS'
69+
},
70+
{ label: 'Data', url: '/banks/european-central-bank/data', trackable: 'ECB_DROPDOWN_DATA' },
71+
{ label: 'Calendar', url: '/banks/european-central-bank/calendar', trackable: 'ECB_DROPDOWN_CALENDAR' }
72+
],
73+
isSubnavDropdownEnabled: true
74+
},
75+
{
76+
label: 'Bank of England',
77+
url: null,
78+
selected: false,
79+
subnavDropdownOptions: [
80+
{ label: 'Coverage', url: '/banks/bank-of-england/coverage', trackable: 'BOE_DROPDOWN_COVERAGE' },
81+
{
82+
label: 'Policy Rate Scenarios',
83+
url: '/banks/bank-of-england/policy-rate-scenarios',
84+
trackable: 'BOE_DROPDOWN_POLICY_RATE_SCENARIOS'
85+
},
86+
{
87+
label: 'Doves and Hawks',
88+
url: '/banks/bank-of-england/doves-and-hawks',
89+
trackable: 'BOE_DROPDOWN_DOVES_AND_HAWKS'
90+
},
91+
{
92+
label: 'Central bankers views',
93+
url: '/banks/bank-of-england/views',
94+
trackable: 'BOE_DROPDOWN_CENTRAL_BANKERS_VIEWS'
95+
},
96+
{
97+
label: 'Profile of central bankers',
98+
url: '/banks/bank-of-england/profiles',
99+
trackable: 'BOE_DROPDOWN_PROFILES'
100+
},
101+
{
102+
label: "Analysts' views",
103+
url: '/banks/bank-of-england/analysts-views/all-estimates',
104+
trackable: 'BOE_DROPDOWN_ANALYSTS_VIEWS'
105+
},
106+
{ label: 'Data', url: '/banks/bank-of-england/data', trackable: 'BOE_DROPDOWN_DATA' },
107+
{ label: 'Calendar', url: '/banks/bank-of-england/calendar', trackable: 'BOE_DROPDOWN_CALENDAR' }
108+
],
109+
isSubnavDropdownEnabled: true
110+
},
111+
{
112+
label: 'Bank of Japan',
113+
url: null,
114+
selected: false,
115+
subnavDropdownOptions: [
116+
{ label: 'Coverage', url: '/banks/bank-of-japan/coverage', trackable: 'BOJ_DROPDOWN_COVERAGE' },
117+
{
118+
label: 'Policy Rate Scenarios',
119+
url: '/banks/bank-of-japan/policy-rate-scenarios',
120+
trackable: 'BOJ_DROPDOWN_POLICY_RATE_SCENARIOS'
121+
},
122+
{
123+
label: 'Doves and Hawks',
124+
url: '/banks/bank-of-japan/doves-and-hawks',
125+
trackable: 'BOJ_DROPDOWN_DOVES_AND_HAWKS'
126+
},
127+
{
128+
label: 'Central bankers views',
129+
url: '/banks/bank-of-japan/views',
130+
trackable: 'BOJ_DROPDOWN_CENTRAL_BANKERS_VIEWS'
131+
},
132+
{
133+
label: 'Profile of central bankers',
134+
url: '/banks/bank-of-japan/profiles',
135+
trackable: 'BOJ_DROPDOWN_PROFILES'
136+
},
137+
{
138+
label: "Analysts' views",
139+
url: '/banks/bank-of-japan/analysts-views/all-estimates',
140+
trackable: 'BOJ_DROPDOWN_ANALYSTS_VIEWS'
141+
},
142+
{ label: 'Data', url: '/banks/bank-of-japan/data', trackable: 'BOJ_DROPDOWN_DATA' },
143+
{ label: 'Calendar', url: '/banks/bank-of-japan/calendar', trackable: 'BOJ_DROPDOWN_CALENDAR' }
144+
],
145+
isSubnavDropdownEnabled: true
146+
},
147+
{ label: 'Global Coverage', url: '/banks/global/coverage', selected: false }
148+
]

examples/ft-ui/server/controllers/home.jsx

Lines changed: 5 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ import React from 'react'
22
import ReactDOM from 'react-dom/server'
33
import { Shell } from '@financial-times/dotcom-ui-shell'
44
import { Layout } from '@financial-times/dotcom-ui-layout'
5+
import { subnavData } from '../../constants'
6+
import SubnavDemo from '../views/SubnavDemo.jsx'
7+
import HelloWorld from '../views/HelloWorld.jsx'
58

69
const flags = {
710
ads: true,
@@ -10,155 +13,6 @@ const flags = {
1013
showRestartSubscriptionButton: false
1114
}
1215

13-
const subnavData = [
14-
{ label: 'Monetary Policy Radar', url: '/central-banks/monetary-policy-radar', selected: false },
15-
{
16-
label: 'Federal Reserve',
17-
url: null,
18-
selected: false,
19-
subnavDropdownOptions: [
20-
{ label: 'Coverage', url: '/banks/federal-reserve/coverage', trackable: 'FED_DROPDOWN_COVERAGE' },
21-
{
22-
label: 'Policy Rate Scenarios',
23-
url: '/banks/federal-reserve/policy-rate-scenarios',
24-
trackable: 'FED_DROPDOWN_POLICY_RATE_SCENARIOS'
25-
},
26-
{
27-
label: 'Doves and Hawks',
28-
url: '/banks/federal-reserve/doves-and-hawks',
29-
trackable: 'FED_DROPDOWN_DOVES_AND_HAWKS'
30-
},
31-
{
32-
label: 'Central bankers views',
33-
url: '/banks/federal-reserve/views',
34-
trackable: 'FED_DROPDOWN_CENTRAL_BANKERS_VIEWS'
35-
},
36-
{
37-
label: 'Profile of central bankers',
38-
url: '/banks/federal-reserve/profiles',
39-
trackable: 'FED_DROPDOWN_PROFILES'
40-
},
41-
{
42-
label: "Analysts' views",
43-
url: '/banks/federal-reserve/analysts-views/all-estimates',
44-
trackable: 'FED_DROPDOWN_ANALYSTS_VIEWS'
45-
},
46-
{ label: 'Data', url: '/banks/federal-reserve/data', trackable: 'FED_DROPDOWN_DATA' },
47-
{ label: 'Calendar', url: '/banks/federal-reserve/calendar', trackable: 'FED_DROPDOWN_CALENDAR' }
48-
],
49-
isSubnavDropdownEnabled: true
50-
},
51-
{
52-
label: 'European Central Bank',
53-
url: null,
54-
selected: false,
55-
subnavDropdownOptions: [
56-
{ label: 'Coverage', url: '/banks/european-central-bank/coverage', trackable: 'ECB_DROPDOWN_COVERAGE' },
57-
{
58-
label: 'Policy Rate Scenarios',
59-
url: '/banks/european-central-bank/policy-rate-scenarios',
60-
trackable: 'ECB_DROPDOWN_POLICY_RATE_SCENARIOS'
61-
},
62-
{
63-
label: 'Doves and Hawks',
64-
url: '/banks/european-central-bank/doves-and-hawks',
65-
trackable: 'ECB_DROPDOWN_DOVES_AND_HAWKS'
66-
},
67-
{
68-
label: 'Central bankers views',
69-
url: '/banks/european-central-bank/views',
70-
trackable: 'ECB_DROPDOWN_CENTRAL_BANKERS_VIEWS'
71-
},
72-
{
73-
label: 'Profile of central bankers',
74-
url: '/banks/european-central-bank/profiles',
75-
trackable: 'ECB_DROPDOWN_PROFILES'
76-
},
77-
{
78-
label: "Analysts' views",
79-
url: '/banks/european-central-bank/analysts-views/all-estimates',
80-
trackable: 'ECB_DROPDOWN_ANALYSTS_VIEWS'
81-
},
82-
{ label: 'Data', url: '/banks/european-central-bank/data', trackable: 'ECB_DROPDOWN_DATA' },
83-
{ label: 'Calendar', url: '/banks/european-central-bank/calendar', trackable: 'ECB_DROPDOWN_CALENDAR' }
84-
],
85-
isSubnavDropdownEnabled: true
86-
},
87-
{
88-
label: 'Bank of England',
89-
url: null,
90-
selected: false,
91-
subnavDropdownOptions: [
92-
{ label: 'Coverage', url: '/banks/bank-of-england/coverage', trackable: 'BOE_DROPDOWN_COVERAGE' },
93-
{
94-
label: 'Policy Rate Scenarios',
95-
url: '/banks/bank-of-england/policy-rate-scenarios',
96-
trackable: 'BOE_DROPDOWN_POLICY_RATE_SCENARIOS'
97-
},
98-
{
99-
label: 'Doves and Hawks',
100-
url: '/banks/bank-of-england/doves-and-hawks',
101-
trackable: 'BOE_DROPDOWN_DOVES_AND_HAWKS'
102-
},
103-
{
104-
label: 'Central bankers views',
105-
url: '/banks/bank-of-england/views',
106-
trackable: 'BOE_DROPDOWN_CENTRAL_BANKERS_VIEWS'
107-
},
108-
{
109-
label: 'Profile of central bankers',
110-
url: '/banks/bank-of-england/profiles',
111-
trackable: 'BOE_DROPDOWN_PROFILES'
112-
},
113-
{
114-
label: "Analysts' views",
115-
url: '/banks/bank-of-england/analysts-views/all-estimates',
116-
trackable: 'BOE_DROPDOWN_ANALYSTS_VIEWS'
117-
},
118-
{ label: 'Data', url: '/banks/bank-of-england/data', trackable: 'BOE_DROPDOWN_DATA' },
119-
{ label: 'Calendar', url: '/banks/bank-of-england/calendar', trackable: 'BOE_DROPDOWN_CALENDAR' }
120-
],
121-
isSubnavDropdownEnabled: true
122-
},
123-
{
124-
label: 'Bank of Japan',
125-
url: null,
126-
selected: false,
127-
subnavDropdownOptions: [
128-
{ label: 'Coverage', url: '/banks/bank-of-japan/coverage', trackable: 'BOJ_DROPDOWN_COVERAGE' },
129-
{
130-
label: 'Policy Rate Scenarios',
131-
url: '/banks/bank-of-japan/policy-rate-scenarios',
132-
trackable: 'BOJ_DROPDOWN_POLICY_RATE_SCENARIOS'
133-
},
134-
{
135-
label: 'Doves and Hawks',
136-
url: '/banks/bank-of-japan/doves-and-hawks',
137-
trackable: 'BOJ_DROPDOWN_DOVES_AND_HAWKS'
138-
},
139-
{
140-
label: 'Central bankers views',
141-
url: '/banks/bank-of-japan/views',
142-
trackable: 'BOJ_DROPDOWN_CENTRAL_BANKERS_VIEWS'
143-
},
144-
{
145-
label: 'Profile of central bankers',
146-
url: '/banks/bank-of-japan/profiles',
147-
trackable: 'BOJ_DROPDOWN_PROFILES'
148-
},
149-
{
150-
label: "Analysts' views",
151-
url: '/banks/bank-of-japan/analysts-views/all-estimates',
152-
trackable: 'BOJ_DROPDOWN_ANALYSTS_VIEWS'
153-
},
154-
{ label: 'Data', url: '/banks/bank-of-japan/data', trackable: 'BOJ_DROPDOWN_DATA' },
155-
{ label: 'Calendar', url: '/banks/bank-of-japan/calendar', trackable: 'BOJ_DROPDOWN_CALENDAR' }
156-
],
157-
isSubnavDropdownEnabled: true
158-
},
159-
{ label: 'Global Coverage', url: '/banks/global/coverage', selected: false }
160-
]
161-
16216
export function homeController(request, response, next) {
16317
const appContext = {
16418
appName: 'ft-ui',
@@ -170,36 +24,11 @@ export function homeController(request, response, next) {
17024
const pageData = enableSubNavigation
17125
? {
17226
title: 'Subnavigation demo',
173-
contents: `
174-
<div class="content">
175-
<div align="center">
176-
<p class="o3-type-title-lg">Subnavigation </p>
177-
</div>
178-
<div>
179-
<p>
180-
This demo shows how the bank navigation items in the sub-navigation can support dropdown
181-
options initially designed for MPR.
182-
</p>
183-
<p>The navigation data structure includes:</p>
184-
<ul>
185-
<li>
186-
<code>subnavDropdownOptions</code> - array of dropdown options with label, url, and
187-
trackable properties
188-
</li>
189-
<li>Full URLs for each dropdown option, providing complete flexibility for routing</li>
190-
<li><code>trackable</code> identifier for each dropdown option</li>
191-
<li>
192-
<code>isSubnavDropdownEnabled</code> - boolean which enables or disables the dropdowns for a
193-
menu item.
194-
</li>
195-
</ul>
196-
</div>
197-
</div>
198-
`
27+
contents: ReactDOM.renderToStaticMarkup(<SubnavDemo />)
19928
}
20029
: {
20130
title: 'Hello World!',
202-
contents: '<div align="center"><p>Hello, welcome to Page Kit.</p></div>'
31+
contents: ReactDOM.renderToStaticMarkup(<HelloWorld />)
20332
}
20433

20534
const { assetLoader } = response.locals
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import React from 'react'
2+
3+
export default function HelloWorld() {
4+
return (
5+
<div align="center">
6+
<p>Hello, welcome to Page Kit.</p>
7+
</div>
8+
)
9+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react'
2+
3+
export default function SubnavDemo() {
4+
return (
5+
<div className="content">
6+
<div align="center">
7+
<p className="o3-type-title-lg">Subnavigation</p>
8+
</div>
9+
10+
<div>
11+
<p>
12+
This demo shows how the bank navigation items in the sub-navigation can support dropdown options
13+
initially designed for MPR.
14+
</p>
15+
<p>The navigation data structure includes:</p>
16+
<ul>
17+
<li>
18+
<code>subnavDropdownOptions</code> - array of dropdown options with label, url, and trackable
19+
properties
20+
</li>
21+
<li>Full URLs for each dropdown option, providing complete flexibility for routing</li>
22+
<li>
23+
<code>trackable</code> identifier for each dropdown option
24+
</li>
25+
<li>
26+
<code>isSubnavDropdownEnabled</code> - boolean which enables or disables the dropdowns for a menu
27+
item.
28+
</li>
29+
</ul>
30+
</div>
31+
</div>
32+
)
33+
}

0 commit comments

Comments
 (0)