2020-06-15 23:19:07 +00:00
|
|
|
import { getModule } from "./src/utils";
|
2020-06-17 01:39:47 +00:00
|
|
|
import ModuleOrdering, { divisions } from "./content/ordering";
|
2020-06-15 23:19:07 +00:00
|
|
|
|
|
|
|
exports.createPages = async ({ actions, graphql, reporter }) => {
|
|
|
|
const { createPage } = actions;
|
|
|
|
|
2020-06-17 01:39:47 +00:00
|
|
|
// Generate Module Pages //
|
|
|
|
const moduleTemplate = require.resolve(`./src/templates/moduleTemplate.js`);
|
|
|
|
Object.keys(ModuleOrdering).forEach(division => {
|
|
|
|
const processItem = item => {
|
|
|
|
if (typeof item === "object") {
|
|
|
|
// this is a nested module
|
|
|
|
item.items.forEach(x => processItem(x));
|
|
|
|
} else {
|
2020-06-15 23:19:07 +00:00
|
|
|
createPage({
|
2020-06-17 01:39:47 +00:00
|
|
|
path: `/${division}/${item}`,
|
2020-06-15 23:19:07 +00:00
|
|
|
component: moduleTemplate,
|
|
|
|
context: {
|
|
|
|
// additional data can be passed via context
|
2020-06-17 01:39:47 +00:00
|
|
|
id: item,
|
|
|
|
division: division,
|
2020-06-15 23:19:07 +00:00
|
|
|
},
|
|
|
|
});
|
2020-06-17 01:39:47 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
ModuleOrdering[division].forEach(item => processItem(item));
|
|
|
|
});
|
|
|
|
// End Generate Module Pages //
|
|
|
|
|
|
|
|
// Generate Syllabus Pages //
|
|
|
|
const syllabusTemplate = require.resolve(`./src/templates/syllabusTemplate.js`);
|
|
|
|
divisions.forEach(division => {
|
2020-06-15 23:19:07 +00:00
|
|
|
createPage({
|
2020-06-17 01:39:47 +00:00
|
|
|
path: `/${division}`,
|
|
|
|
component: syllabusTemplate,
|
2020-06-15 23:19:07 +00:00
|
|
|
context: {
|
2020-06-17 01:39:47 +00:00
|
|
|
division: division
|
2020-06-15 23:19:07 +00:00
|
|
|
},
|
|
|
|
});
|
|
|
|
});
|
2020-06-17 01:39:47 +00:00
|
|
|
// End Generate Syllabus Pages //
|
2020-06-15 23:19:07 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
exports.createSchemaCustomization = ({ actions }) => {
|
|
|
|
const { createTypes } = actions;
|
|
|
|
const typeDefs = `
|
|
|
|
type MarkdownRemarkFrontmatter implements Node {
|
|
|
|
prerequisites: [[String]]
|
|
|
|
}
|
|
|
|
`;
|
|
|
|
createTypes(typeDefs)
|
|
|
|
};
|