2020-07-16 00:00:42 +00:00
|
|
|
import { moduleIDToSectionMap, SECTIONS } from './content/ordering';
|
2020-06-15 23:19:07 +00:00
|
|
|
|
2020-07-15 22:10:13 +00:00
|
|
|
exports.onCreateNode = ({ node, actions, getNode }) => {
|
|
|
|
const { createNodeField } = actions;
|
|
|
|
if (node.internal.type === 'Mdx') {
|
|
|
|
const ordering = require('./content/ordering');
|
|
|
|
createNodeField({
|
|
|
|
name: 'division',
|
|
|
|
node,
|
2020-07-16 00:00:42 +00:00
|
|
|
value: moduleIDToSectionMap[node.frontmatter.id],
|
2020-07-15 22:10:13 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
};
|
2020-06-15 23:19:07 +00:00
|
|
|
|
2020-07-15 22:10:13 +00:00
|
|
|
exports.createPages = async ({ graphql, actions, reporter }) => {
|
|
|
|
const { createPage } = actions;
|
|
|
|
const result = await graphql(`
|
|
|
|
query {
|
|
|
|
allMdx {
|
|
|
|
edges {
|
|
|
|
node {
|
|
|
|
frontmatter {
|
|
|
|
title
|
|
|
|
id
|
|
|
|
}
|
|
|
|
fields {
|
|
|
|
division
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2020-06-20 08:10:27 +00:00
|
|
|
}
|
2020-07-15 22:10:13 +00:00
|
|
|
}
|
|
|
|
`);
|
|
|
|
if (result.errors) {
|
|
|
|
reporter.panicOnBuild('🚨 ERROR: Loading "createPages" query');
|
|
|
|
}
|
|
|
|
const moduleTemplate = require.resolve(`./src/templates/moduleTemplate.tsx`);
|
|
|
|
const modules = result.data.allMdx.edges;
|
2020-07-16 00:00:42 +00:00
|
|
|
modules.forEach(({ node }) => {
|
2020-07-15 22:13:28 +00:00
|
|
|
if (!node.fields.division) return;
|
2020-07-15 22:10:13 +00:00
|
|
|
createPage({
|
|
|
|
path: `/${node.fields.division}/${node.frontmatter.id}`,
|
|
|
|
component: moduleTemplate,
|
|
|
|
context: {
|
|
|
|
id: node.frontmatter.id,
|
|
|
|
},
|
|
|
|
});
|
2020-06-20 08:10:27 +00:00
|
|
|
});
|
2020-06-17 01:39:47 +00:00
|
|
|
|
2020-06-20 08:10:27 +00:00
|
|
|
// Generate Syllabus Pages //
|
|
|
|
const syllabusTemplate = require.resolve(
|
2020-06-21 23:09:50 +00:00
|
|
|
`./src/templates/syllabusTemplate.tsx`
|
2020-06-20 08:10:27 +00:00
|
|
|
);
|
2020-07-15 23:00:20 +00:00
|
|
|
SECTIONS.forEach(division => {
|
2020-06-20 08:10:27 +00:00
|
|
|
createPage({
|
|
|
|
path: `/${division}`,
|
|
|
|
component: syllabusTemplate,
|
|
|
|
context: {
|
|
|
|
division: division,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
|
|
|
// End Generate Syllabus Pages //
|
2020-06-15 23:19:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
exports.createSchemaCustomization = ({ actions }) => {
|
2020-06-20 08:10:27 +00:00
|
|
|
const { createTypes } = actions;
|
|
|
|
const typeDefs = `
|
2020-06-22 16:29:47 +00:00
|
|
|
type MdxFrontmatter implements Node {
|
2020-06-22 20:51:12 +00:00
|
|
|
prerequisites: [String]
|
2020-06-15 23:19:07 +00:00
|
|
|
}
|
|
|
|
`;
|
2020-06-20 08:10:27 +00:00
|
|
|
createTypes(typeDefs);
|
2020-06-20 08:08:44 +00:00
|
|
|
};
|