Turn function for converting data into web page into seperate function
This commit is contained in:
@@ -3,6 +3,309 @@ import { print } from 'graphql';
|
|||||||
import { formatDate } from "@/lib/dates";
|
import { formatDate } from "@/lib/dates";
|
||||||
import getAllPages from "@/graphql/pages/getAllPages.graphql";
|
import getAllPages from "@/graphql/pages/getAllPages.graphql";
|
||||||
|
|
||||||
|
export function dataToPage(pageRecord: any): WebPage {
|
||||||
|
let dates: string[] = [
|
||||||
|
pageRecord["date_created"],
|
||||||
|
pageRecord["date_updated"],
|
||||||
|
pageRecord["search_engine"][0]["date_created"],
|
||||||
|
pageRecord["search_engine"][0]["date_updated"]
|
||||||
|
];
|
||||||
|
|
||||||
|
const searchEngine = pageRecord["search_engine"][0];
|
||||||
|
|
||||||
|
let components: WebpageComponent[] = [];
|
||||||
|
|
||||||
|
pageRecord["components"].forEach((componentRecord: any) => {
|
||||||
|
const component = componentRecord["item"];
|
||||||
|
|
||||||
|
switch (componentRecord["item"]["__typename"]) {
|
||||||
|
case "Hero":
|
||||||
|
let heroComponent: HeroComponent = {
|
||||||
|
component: "Hero",
|
||||||
|
id: component["hero_id"],
|
||||||
|
title: component["hero_title"],
|
||||||
|
text: component["hero_text"],
|
||||||
|
backgroundImage: {
|
||||||
|
url: component["background_image"]["filename_disk"],
|
||||||
|
width: component["background_image"]["width"],
|
||||||
|
height: component["background_image"]["height"]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(heroComponent);
|
||||||
|
dates.push(component["hero_created"]);
|
||||||
|
dates.push(component["hero_updated"]);
|
||||||
|
dates.push(component["background_image"]["created_on"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Text_With_Side_Image":
|
||||||
|
let textWithImageComponent: TextWithImageComponent = {
|
||||||
|
component: "TextWithImage",
|
||||||
|
id: component["twsi_id"],
|
||||||
|
title: component["twsi_title"],
|
||||||
|
text: component["twsi_text"],
|
||||||
|
imageSide: component["twsi_image_side"],
|
||||||
|
image: {
|
||||||
|
url: component["image"]["filename_disk"],
|
||||||
|
width: component["image"]["width"],
|
||||||
|
height: component["image"]["height"]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(textWithImageComponent);
|
||||||
|
dates.push(component["twsi_created"]);
|
||||||
|
dates.push(component["twsi_updated"]);
|
||||||
|
dates.push(component["image"]["created_on"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Wall_Of_Text":
|
||||||
|
let wallOfTextComponent: WallOfTextComponent = {
|
||||||
|
component: "WallOfText",
|
||||||
|
id: component["wot_id"],
|
||||||
|
title: component["wot_title"],
|
||||||
|
text: component["wot_text"]
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(wallOfTextComponent);
|
||||||
|
dates.push(component["wot_created"]);
|
||||||
|
dates.push(component["wot_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Frequently_Asked_Questions":
|
||||||
|
let faqComponent: FrequentlyAskedQuestionsComponent = {
|
||||||
|
component: "FrequentlyAskedQuestions",
|
||||||
|
id: component["faq_id"],
|
||||||
|
title: component["faq_title"],
|
||||||
|
text: component["faq_text"],
|
||||||
|
questions: []
|
||||||
|
};
|
||||||
|
|
||||||
|
component["questions"].forEach((faqQuestionRecord: any) => {
|
||||||
|
faqComponent.questions.push({
|
||||||
|
id: faqQuestionRecord["id"],
|
||||||
|
question: faqQuestionRecord["question"],
|
||||||
|
answer: faqQuestionRecord["answer"]
|
||||||
|
});
|
||||||
|
|
||||||
|
dates.push(faqQuestionRecord["date_created"]);
|
||||||
|
dates.push(faqQuestionRecord["date_updated"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
components.push(faqComponent);
|
||||||
|
dates.push(component["faq_created"]);
|
||||||
|
dates.push(component["faq_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Upcoming_Events":
|
||||||
|
let upcomingEventsComponent: UpcomingEventsComponent = {
|
||||||
|
component: "UpcomingEvents",
|
||||||
|
id: component["ue_id"],
|
||||||
|
title: component["ue_title"],
|
||||||
|
text: component["ue_text"],
|
||||||
|
events: []
|
||||||
|
};
|
||||||
|
|
||||||
|
component["events"].forEach((eventRecord: any) => {
|
||||||
|
upcomingEventsComponent.events.push({
|
||||||
|
id: eventRecord["id"],
|
||||||
|
title: eventRecord["title"],
|
||||||
|
description: eventRecord["description"],
|
||||||
|
location: eventRecord["location"],
|
||||||
|
mapLocation: [
|
||||||
|
eventRecord["map_location"]["coordinates"][1],
|
||||||
|
eventRecord["map_location"]["coordinates"][0]
|
||||||
|
],
|
||||||
|
startDate: eventRecord["start_date"],
|
||||||
|
endDate: eventRecord["end_date"]
|
||||||
|
});
|
||||||
|
|
||||||
|
dates.push(eventRecord["date_created"]);
|
||||||
|
dates.push(eventRecord["date_updated"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
components.push(upcomingEventsComponent);
|
||||||
|
dates.push(component["ue_created"]);
|
||||||
|
dates.push(component["ue_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Equipment_Table":
|
||||||
|
let equipmentTableComponent: EquipmentTableComponent = {
|
||||||
|
component: "EquipmentTable",
|
||||||
|
id: component["et_id"],
|
||||||
|
title: component["et_title"],
|
||||||
|
text: component["et_text"],
|
||||||
|
items: []
|
||||||
|
};
|
||||||
|
|
||||||
|
component["items"].forEach((itemRecord: any) => {
|
||||||
|
equipmentTableComponent.items.push({
|
||||||
|
id: itemRecord["id"],
|
||||||
|
title: itemRecord["title"],
|
||||||
|
text: itemRecord["text"],
|
||||||
|
icon: {
|
||||||
|
url: itemRecord["icon"]["filename_disk"],
|
||||||
|
width: itemRecord["icon"]["width"],
|
||||||
|
height: itemRecord["icon"]["height"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dates.push(itemRecord["date_created"]);
|
||||||
|
dates.push(itemRecord["date_updated"]);
|
||||||
|
dates.push(itemRecord["icon"]["created_on"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
components.push(equipmentTableComponent);
|
||||||
|
dates.push(component["et_created"]);
|
||||||
|
dates.push(component["et_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Review_List":
|
||||||
|
let reviewsComponent: ReviewListComponent = {
|
||||||
|
component: "Reviews",
|
||||||
|
id: component["rl_id"],
|
||||||
|
title: component["rl_title"],
|
||||||
|
text: component["rl_text"],
|
||||||
|
reviews: []
|
||||||
|
};
|
||||||
|
|
||||||
|
component["reviews"].forEach((reviewRecord: any) => {
|
||||||
|
reviewsComponent.reviews.push({
|
||||||
|
id: reviewRecord["id"],
|
||||||
|
name: reviewRecord["name"],
|
||||||
|
review: reviewRecord["review"],
|
||||||
|
stars: reviewRecord["stars"],
|
||||||
|
date: reviewRecord["date"],
|
||||||
|
thumbnail: {
|
||||||
|
url: reviewRecord["thumbnail"]["filename_disk"],
|
||||||
|
width: reviewRecord["thumbnail"]["width"],
|
||||||
|
height: reviewRecord["thumbnail"]["height"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dates.push(reviewRecord["date_created"]);
|
||||||
|
dates.push(reviewRecord["date_updated"]);
|
||||||
|
dates.push(reviewRecord["thumbnail"]["created_on"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
components.push(reviewsComponent);
|
||||||
|
dates.push(component["rl_created"]);
|
||||||
|
dates.push(component["rl_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Contact":
|
||||||
|
let contactComponent: ContactComponent = {
|
||||||
|
component: "Contact",
|
||||||
|
id: component["c_id"],
|
||||||
|
title: component["c_title"],
|
||||||
|
text: component["c_text"],
|
||||||
|
methods: []
|
||||||
|
};
|
||||||
|
|
||||||
|
component["methods"].forEach((contactMethodRecord: any) => {
|
||||||
|
contactComponent.methods.push({
|
||||||
|
id: contactMethodRecord["id"],
|
||||||
|
title: contactMethodRecord["title"],
|
||||||
|
text: contactMethodRecord["text"],
|
||||||
|
color: contactMethodRecord["color"],
|
||||||
|
icon: {
|
||||||
|
url: contactMethodRecord["icon"]["filename_disk"],
|
||||||
|
width: contactMethodRecord["icon"]["width"],
|
||||||
|
height: contactMethodRecord["icon"]["height"]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dates.push(contactMethodRecord["date_created"]);
|
||||||
|
dates.push(contactMethodRecord["date_updated"]);
|
||||||
|
dates.push(contactMethodRecord["icon"]["created_on"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
components.push(contactComponent);
|
||||||
|
dates.push(component["c_created"]);
|
||||||
|
dates.push(component["c_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Last_Blogs":
|
||||||
|
let lastBlogsComponent: LastBlogsComponent = {
|
||||||
|
component: "LastBlogs",
|
||||||
|
id: component["lb_id"],
|
||||||
|
title: component["lb_title"],
|
||||||
|
readMoreButtonText: component["lb_read_more_button_text"],
|
||||||
|
amount: component["lb_amount"]
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(lastBlogsComponent);
|
||||||
|
dates.push(component["lb_created"]);
|
||||||
|
dates.push(component["lb_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Last_Projects":
|
||||||
|
let lastProjectsComponent: LastProjectsComponent = {
|
||||||
|
component: "LastProjects",
|
||||||
|
id: component["lp_id"],
|
||||||
|
title: component["lp_title"],
|
||||||
|
readMoreButtonText: component["lp_read_more_button_text"],
|
||||||
|
amount: component["lp_amount"]
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(lastProjectsComponent);
|
||||||
|
dates.push(component["lp_created"]);
|
||||||
|
dates.push(component["lp_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case "Last_Galleries":
|
||||||
|
let lastGalleriesComponent: LastGalleriesComponent = {
|
||||||
|
component: "LastGalleries",
|
||||||
|
id: component["lg_id"],
|
||||||
|
title: component["lg_title"],
|
||||||
|
readMoreButtonText: component["lg_read_more_button_text"],
|
||||||
|
amount: component["lg_amount"]
|
||||||
|
};
|
||||||
|
|
||||||
|
components.push(lastGalleriesComponent);
|
||||||
|
dates.push(component["lg_created"]);
|
||||||
|
dates.push(component["lg_updated"]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let lastModified: Date;
|
||||||
|
|
||||||
|
if (dates.filter(e => e !== null).length === 0) {
|
||||||
|
lastModified = new Date();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
const sortedDates: string[] = dates.sort((a: string, b: string) => {
|
||||||
|
return new Date(b).getTime() - new Date(a).getTime();
|
||||||
|
});
|
||||||
|
|
||||||
|
lastModified = new Date(sortedDates[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
let page: WebPage = {
|
||||||
|
id: pageRecord["id"],
|
||||||
|
lastModified: lastModified,
|
||||||
|
url: pageRecord["url"],
|
||||||
|
searchEngine: {
|
||||||
|
title: searchEngine["title"],
|
||||||
|
description: searchEngine["description"],
|
||||||
|
canonical: searchEngine["canonical"],
|
||||||
|
allowCrawlers: searchEngine["allow_crawler"],
|
||||||
|
priority: searchEngine["priority"],
|
||||||
|
thumbnail: {
|
||||||
|
url: searchEngine["thumbnail"]["filename_disk"],
|
||||||
|
height: searchEngine["thumbnail"]["height"],
|
||||||
|
width: searchEngine["thumbnail"]["width"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: components
|
||||||
|
}
|
||||||
|
|
||||||
|
return page;
|
||||||
|
}
|
||||||
|
|
||||||
export async function getAllWebpages(): Promise<WebPage[]> {
|
export async function getAllWebpages(): Promise<WebPage[]> {
|
||||||
const client = await createDirectusConnection();
|
const client = await createDirectusConnection();
|
||||||
const result = await client.query(print(getAllPages), {
|
const result = await client.query(print(getAllPages), {
|
||||||
@@ -12,306 +315,7 @@ export async function getAllWebpages(): Promise<WebPage[]> {
|
|||||||
let pages: WebPage[] = [];
|
let pages: WebPage[] = [];
|
||||||
|
|
||||||
result["Pages"].forEach((pageRecord: any) => {
|
result["Pages"].forEach((pageRecord: any) => {
|
||||||
let dates: string[] = [
|
pages.push(dataToPage(pageRecord));
|
||||||
pageRecord["date_created"],
|
|
||||||
pageRecord["date_updated"],
|
|
||||||
pageRecord["search_engine"][0]["date_created"],
|
|
||||||
pageRecord["search_engine"][0]["date_updated"]
|
|
||||||
];
|
|
||||||
|
|
||||||
const searchEngine = pageRecord["search_engine"][0];
|
|
||||||
|
|
||||||
let components: WebpageComponent[] = [];
|
|
||||||
|
|
||||||
pageRecord["components"].forEach((componentRecord: any) => {
|
|
||||||
const component = componentRecord["item"];
|
|
||||||
|
|
||||||
switch (componentRecord["item"]["__typename"]) {
|
|
||||||
case "Hero":
|
|
||||||
let heroComponent: HeroComponent = {
|
|
||||||
component: "Hero",
|
|
||||||
id: component["hero_id"],
|
|
||||||
title: component["hero_title"],
|
|
||||||
text: component["hero_text"],
|
|
||||||
backgroundImage: {
|
|
||||||
url: component["background_image"]["filename_disk"],
|
|
||||||
width: component["background_image"]["width"],
|
|
||||||
height: component["background_image"]["height"]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(heroComponent);
|
|
||||||
dates.push(component["hero_created"]);
|
|
||||||
dates.push(component["hero_updated"]);
|
|
||||||
dates.push(component["background_image"]["created_on"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Text_With_Side_Image":
|
|
||||||
let textWithImageComponent: TextWithImageComponent = {
|
|
||||||
component: "TextWithImage",
|
|
||||||
id: component["twsi_id"],
|
|
||||||
title: component["twsi_title"],
|
|
||||||
text: component["twsi_text"],
|
|
||||||
imageSide: component["twsi_image_side"],
|
|
||||||
image: {
|
|
||||||
url: component["image"]["filename_disk"],
|
|
||||||
width: component["image"]["width"],
|
|
||||||
height: component["image"]["height"]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(textWithImageComponent);
|
|
||||||
dates.push(component["twsi_created"]);
|
|
||||||
dates.push(component["twsi_updated"]);
|
|
||||||
dates.push(component["image"]["created_on"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Wall_Of_Text":
|
|
||||||
let wallOfTextComponent: WallOfTextComponent = {
|
|
||||||
component: "WallOfText",
|
|
||||||
id: component["wot_id"],
|
|
||||||
title: component["wot_title"],
|
|
||||||
text: component["wot_text"]
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(wallOfTextComponent);
|
|
||||||
dates.push(component["wot_created"]);
|
|
||||||
dates.push(component["wot_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Frequently_Asked_Questions":
|
|
||||||
let faqComponent: FrequentlyAskedQuestionsComponent = {
|
|
||||||
component: "FrequentlyAskedQuestions",
|
|
||||||
id: component["faq_id"],
|
|
||||||
title: component["faq_title"],
|
|
||||||
text: component["faq_text"],
|
|
||||||
questions: []
|
|
||||||
};
|
|
||||||
|
|
||||||
component["questions"].forEach((faqQuestionRecord: any) => {
|
|
||||||
faqComponent.questions.push({
|
|
||||||
id: faqQuestionRecord["id"],
|
|
||||||
question: faqQuestionRecord["question"],
|
|
||||||
answer: faqQuestionRecord["answer"]
|
|
||||||
});
|
|
||||||
|
|
||||||
dates.push(faqQuestionRecord["date_created"]);
|
|
||||||
dates.push(faqQuestionRecord["date_updated"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
components.push(faqComponent);
|
|
||||||
dates.push(component["faq_created"]);
|
|
||||||
dates.push(component["faq_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Upcoming_Events":
|
|
||||||
let upcomingEventsComponent: UpcomingEventsComponent = {
|
|
||||||
component: "UpcomingEvents",
|
|
||||||
id: component["ue_id"],
|
|
||||||
title: component["ue_title"],
|
|
||||||
text: component["ue_text"],
|
|
||||||
events: []
|
|
||||||
};
|
|
||||||
|
|
||||||
component["events"].forEach((eventRecord: any) => {
|
|
||||||
upcomingEventsComponent.events.push({
|
|
||||||
id: eventRecord["id"],
|
|
||||||
title: eventRecord["title"],
|
|
||||||
description: eventRecord["description"],
|
|
||||||
location: eventRecord["location"],
|
|
||||||
mapLocation: [
|
|
||||||
eventRecord["map_location"]["coordinates"][1],
|
|
||||||
eventRecord["map_location"]["coordinates"][0]
|
|
||||||
],
|
|
||||||
startDate: eventRecord["start_date"],
|
|
||||||
endDate: eventRecord["end_date"]
|
|
||||||
});
|
|
||||||
|
|
||||||
dates.push(eventRecord["date_created"]);
|
|
||||||
dates.push(eventRecord["date_updated"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
components.push(upcomingEventsComponent);
|
|
||||||
dates.push(component["ue_created"]);
|
|
||||||
dates.push(component["ue_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Equipment_Table":
|
|
||||||
let equipmentTableComponent: EquipmentTableComponent = {
|
|
||||||
component: "EquipmentTable",
|
|
||||||
id: component["et_id"],
|
|
||||||
title: component["et_title"],
|
|
||||||
text: component["et_text"],
|
|
||||||
items: []
|
|
||||||
};
|
|
||||||
|
|
||||||
component["items"].forEach((itemRecord: any) => {
|
|
||||||
equipmentTableComponent.items.push({
|
|
||||||
id: itemRecord["id"],
|
|
||||||
title: itemRecord["title"],
|
|
||||||
text: itemRecord["text"],
|
|
||||||
icon: {
|
|
||||||
url: itemRecord["icon"]["filename_disk"],
|
|
||||||
width: itemRecord["icon"]["width"],
|
|
||||||
height: itemRecord["icon"]["height"]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dates.push(itemRecord["date_created"]);
|
|
||||||
dates.push(itemRecord["date_updated"]);
|
|
||||||
dates.push(itemRecord["icon"]["created_on"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
components.push(equipmentTableComponent);
|
|
||||||
dates.push(component["et_created"]);
|
|
||||||
dates.push(component["et_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Review_List":
|
|
||||||
let reviewsComponent: ReviewListComponent = {
|
|
||||||
component: "Reviews",
|
|
||||||
id: component["rl_id"],
|
|
||||||
title: component["rl_title"],
|
|
||||||
text: component["rl_text"],
|
|
||||||
reviews: []
|
|
||||||
};
|
|
||||||
|
|
||||||
component["reviews"].forEach((reviewRecord: any) => {
|
|
||||||
reviewsComponent.reviews.push({
|
|
||||||
id: reviewRecord["id"],
|
|
||||||
name: reviewRecord["name"],
|
|
||||||
review: reviewRecord["review"],
|
|
||||||
stars: reviewRecord["stars"],
|
|
||||||
date: reviewRecord["date"],
|
|
||||||
thumbnail: {
|
|
||||||
url: reviewRecord["thumbnail"]["filename_disk"],
|
|
||||||
width: reviewRecord["thumbnail"]["width"],
|
|
||||||
height: reviewRecord["thumbnail"]["height"]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dates.push(reviewRecord["date_created"]);
|
|
||||||
dates.push(reviewRecord["date_updated"]);
|
|
||||||
dates.push(reviewRecord["thumbnail"]["created_on"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
components.push(reviewsComponent);
|
|
||||||
dates.push(component["rl_created"]);
|
|
||||||
dates.push(component["rl_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Contact":
|
|
||||||
let contactComponent: ContactComponent = {
|
|
||||||
component: "Contact",
|
|
||||||
id: component["c_id"],
|
|
||||||
title: component["c_title"],
|
|
||||||
text: component["c_text"],
|
|
||||||
methods: []
|
|
||||||
};
|
|
||||||
|
|
||||||
component["methods"].forEach((contactMethodRecord: any) => {
|
|
||||||
contactComponent.methods.push({
|
|
||||||
id: contactMethodRecord["id"],
|
|
||||||
title: contactMethodRecord["title"],
|
|
||||||
text: contactMethodRecord["text"],
|
|
||||||
color: contactMethodRecord["color"],
|
|
||||||
icon: {
|
|
||||||
url: contactMethodRecord["icon"]["filename_disk"],
|
|
||||||
width: contactMethodRecord["icon"]["width"],
|
|
||||||
height: contactMethodRecord["icon"]["height"]
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dates.push(contactMethodRecord["date_created"]);
|
|
||||||
dates.push(contactMethodRecord["date_updated"]);
|
|
||||||
dates.push(contactMethodRecord["icon"]["created_on"]);
|
|
||||||
});
|
|
||||||
|
|
||||||
components.push(contactComponent);
|
|
||||||
dates.push(component["c_created"]);
|
|
||||||
dates.push(component["c_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Last_Blogs":
|
|
||||||
let lastBlogsComponent: LastBlogsComponent = {
|
|
||||||
component: "LastBlogs",
|
|
||||||
id: component["lb_id"],
|
|
||||||
title: component["lb_title"],
|
|
||||||
readMoreButtonText: component["lb_read_more_button_text"],
|
|
||||||
amount: component["lb_amount"]
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(lastBlogsComponent);
|
|
||||||
dates.push(component["lb_created"]);
|
|
||||||
dates.push(component["lb_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Last_Projects":
|
|
||||||
let lastProjectsComponent: LastProjectsComponent = {
|
|
||||||
component: "LastProjects",
|
|
||||||
id: component["lp_id"],
|
|
||||||
title: component["lp_title"],
|
|
||||||
readMoreButtonText: component["lp_read_more_button_text"],
|
|
||||||
amount: component["lp_amount"]
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(lastProjectsComponent);
|
|
||||||
dates.push(component["lp_created"]);
|
|
||||||
dates.push(component["lp_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "Last_Galleries":
|
|
||||||
let lastGalleriesComponent: LastGalleriesComponent = {
|
|
||||||
component: "LastGalleries",
|
|
||||||
id: component["lg_id"],
|
|
||||||
title: component["lg_title"],
|
|
||||||
readMoreButtonText: component["lg_read_more_button_text"],
|
|
||||||
amount: component["lg_amount"]
|
|
||||||
};
|
|
||||||
|
|
||||||
components.push(lastGalleriesComponent);
|
|
||||||
dates.push(component["lg_created"]);
|
|
||||||
dates.push(component["lg_updated"]);
|
|
||||||
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let lastModified: Date;
|
|
||||||
|
|
||||||
if (dates.filter(e => e !== null).length === 0) {
|
|
||||||
lastModified = new Date();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const sortedDates: string[] = dates.sort((a: string, b: string) => {
|
|
||||||
return new Date(b).getTime() - new Date(a).getTime();
|
|
||||||
});
|
|
||||||
|
|
||||||
lastModified = new Date(sortedDates[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
let page: WebPage = {
|
|
||||||
id: pageRecord["id"],
|
|
||||||
lastModified: lastModified,
|
|
||||||
url: pageRecord["url"],
|
|
||||||
searchEngine: {
|
|
||||||
title: searchEngine["title"],
|
|
||||||
description: searchEngine["description"],
|
|
||||||
canonical: searchEngine["canonical"],
|
|
||||||
allowCrawlers: searchEngine["allow_crawler"],
|
|
||||||
priority: searchEngine["priority"],
|
|
||||||
thumbnail: {
|
|
||||||
url: searchEngine["thumbnail"]["filename_disk"],
|
|
||||||
height: searchEngine["thumbnail"]["height"],
|
|
||||||
width: searchEngine["thumbnail"]["width"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: components
|
|
||||||
}
|
|
||||||
|
|
||||||
pages.push(page);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return pages;
|
return pages;
|
||||||
|
|||||||
Reference in New Issue
Block a user