diff --git a/common/config.js b/common/config.js index 0df4436..5480db8 100644 --- a/common/config.js +++ b/common/config.js @@ -7,6 +7,20 @@ export const getPageNames = (radar) => { ] } +export const quadrants = [ + 'languages-and-frameworks', + 'methods-and-patterns', + 'platforms-and-aoe-services', + 'tools', +]; + +export const rings = [ + 'assess', + 'trial', + 'hold', + 'adopt', +]; + const messages = { 'languages-and-frameworks': 'Languages & Frameworks', 'methods-and-patterns': 'Methods & Patterns', diff --git a/js/components/PageIndex.js b/js/components/PageIndex.js index f3717e7..843010f 100644 --- a/js/components/PageIndex.js +++ b/js/components/PageIndex.js @@ -1,112 +1,14 @@ import React from 'react'; import HeroHeadline from './HeroHeadline'; +import QuadrantGrid from './QuadrantGrid'; -export default function PageIndex() { +export default function PageIndex({ items }) { return (
AOE Technology Radar
-
-
-
-
-
-
-

Platforms and AOE Services

-
- -
-
-
-
-
-
assess
- Bar -
-
-
-
-
-
-
-
-
-
-

Methods & Patterns

-
- -
-
-
-
-
-
trial
- Foo -
-
-
-
-
-
-
-
-
-
-

Tools

-
- -
-
-
-
-
-
hold
- Grunt 2 -
-
-
-
-
-
-
-
-
-
-

Languages & Frameworks

-
- -
-
-
-
-
-
trial
- React -
-
-
- -
-
-
-
adopt
- Vue -
-
-
-
-
hold
- Something else -
-
-
-
-
-
+
); } diff --git a/js/components/QuadrantGrid.js b/js/components/QuadrantGrid.js new file mode 100644 index 0000000..54cfa7b --- /dev/null +++ b/js/components/QuadrantGrid.js @@ -0,0 +1,63 @@ +import React from 'react'; +import { groupByQuadrants } from '../../common/model'; +import { translate, quadrants, rings } from '../../common/config'; + +const renderRing = (ringName, quadrantName, groups) => { + if (!groups[quadrantName][ringName] || groups[quadrantName][ringName].length === 0) { + return null; + } + return ( +
+
+
{ringName}
+ { + (groups[quadrantName][ringName]).map(item => ( + + {item.title} + + )) + } +
+
+ ); +} + +const renderQuadrant = (quadrantName, groups) => { + return ( +
+
+
+
+
+

{translate(quadrantName)}

+
+
+ + Quadrant Overview + +
+
+
+
+ { + rings.map((ringName) => renderRing(ringName, quadrantName, groups)) + } +
+
+
+ ); +} + +export default function({ items }) { + const groups = groupByQuadrants(items); + return ( +
+ { + quadrants.map((quadrantName) => renderQuadrant(quadrantName, groups)) + } +
+ ); +}