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
-
-
-
-
-
-
-
-
-
-
-
-
-
Methods & Patterns
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Languages & Frameworks
-
-
-
-
-
-
-
-
+
);
}
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)}
+
+
+
+
+
+ {
+ rings.map((ringName) => renderRing(ringName, quadrantName, groups))
+ }
+
+
+
+ );
+}
+
+export default function({ items }) {
+ const groups = groupByQuadrants(items);
+ return (
+
+ {
+ quadrants.map((quadrantName) => renderQuadrant(quadrantName, groups))
+ }
+
+ );
+}