95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
const { resolve } = require("path");
|
|
const reviews = require("./src/data/reviews.json");
|
|
const caseStudies = require("./src/data/case-studies.json");
|
|
const team = require("./src/data/team.json");
|
|
|
|
const padZero = n => (n < 10 ? `0${n}` : n);
|
|
|
|
exports.sourceNodes = ({ actions, createNodeId, createContentDigest }) => {
|
|
team.team.forEach(person => {
|
|
const { name, email, phone, altPhone, title } = person;
|
|
const node = {
|
|
name,
|
|
email,
|
|
phone,
|
|
altPhone,
|
|
title,
|
|
id: createNodeId(`team-${name.replace(/ /g, "-")}`),
|
|
internal: {
|
|
type: "person",
|
|
contentDigest: createContentDigest(person)
|
|
}
|
|
};
|
|
actions.createNode(node);
|
|
});
|
|
reviews.reviews.forEach((review, i) => {
|
|
const { name, title, text, author, date } = review;
|
|
const node = {
|
|
name,
|
|
title,
|
|
text,
|
|
author,
|
|
date,
|
|
id: createNodeId(`review-${i}`),
|
|
internal: {
|
|
type: "review",
|
|
contentDigest: createContentDigest(review)
|
|
}
|
|
};
|
|
actions.createNode(node);
|
|
});
|
|
Object.keys(caseStudies).forEach(key => {
|
|
caseStudies[key].forEach((cs, i) => {
|
|
const {
|
|
title,
|
|
titleColor,
|
|
location,
|
|
image,
|
|
key_features,
|
|
price,
|
|
time_taken,
|
|
date,
|
|
content
|
|
} = cs;
|
|
const node = {
|
|
index: i,
|
|
path: `/services/${key}/case-study-${i + 1}`,
|
|
type: key,
|
|
title,
|
|
titleColor,
|
|
location,
|
|
image,
|
|
key_features,
|
|
price,
|
|
time_taken,
|
|
date,
|
|
content,
|
|
id: createNodeId(`${key}-${i + 1}`),
|
|
internal: {
|
|
type: "CaseStudy",
|
|
contentDigest: createContentDigest(cs)
|
|
}
|
|
};
|
|
actions.createNode(node);
|
|
});
|
|
});
|
|
};
|
|
|
|
exports.createPages = async ({ actions }) => {
|
|
const { createPage } = actions;
|
|
const template = resolve(__dirname, `src/case-study.js`);
|
|
Object.keys(caseStudies).forEach(key => {
|
|
caseStudies[key].forEach((cs, i) => {
|
|
const path = `/services/${key}/case-study-${i + 1}`;
|
|
createPage({
|
|
path,
|
|
component: template,
|
|
context: {
|
|
pagePath: path,
|
|
images: `/${key}-cs${padZero(i + 1)}(.*).jpg$/`
|
|
}
|
|
});
|
|
});
|
|
});
|
|
};
|