Skip to content

Commit

Permalink
Refactor menu formatting and update layer queries
Browse files Browse the repository at this point in the history
  • Loading branch information
sjoerdbeentjes committed Jul 2, 2024
1 parent 5b7b5d6 commit 2704455
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 27 deletions.
16 changes: 10 additions & 6 deletions src/api/feedback.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { datocmsRequest } from '../lib/datocms'
import { withServerDefaults } from '../lib/with-server-defaults'
import { buildMenuTree } from '../lib/build-menu-tree'
import { formatMenusRecursive } from '../lib/format-menu'
import * as EmailValidator from 'email-validator'
import Mailjet from 'node-mailjet'

Expand All @@ -25,11 +26,13 @@ query viewersWithLayers ($first: IntType, $skip: IntType = 0) {
feedbackContacts {
...FeedbackContact
}
children: layers {
id
name
feedbackContacts {
...FeedbackContact
children: viewerLayers {
layer {
id
name
feedbackContacts {
...FeedbackContact
}
}
}
parent {
Expand Down Expand Up @@ -117,8 +120,9 @@ export const handler = withServerDefaults(async (event, _) => {
}

const { menus } = await datocmsRequest({ query: viewersWithLayersQuery })
const formattedMenus = formatMenusRecursive(menus)

const menuTree = buildMenuTree(menus)
const menuTree = buildMenuTree(formattedMenus)

const viewer = menuTree.find((viewer) => viewer.name === viewerName)

Expand Down
10 changes: 7 additions & 3 deletions src/api/record-register.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { withServerDefaults } from '../lib/with-server-defaults'
import { Geonetwork } from '../lib/geonetwork'
import { resourceNotFound } from '../lib/constants'
import { buildMenuTree } from '../lib/build-menu-tree'
import { formatMenusRecursive } from '../lib/format-menu'
import { findGeonetworkInstances } from '../lib/find-geonetwork-instances'

const geonetworkUrl = 'geonetwork/srv'
Expand All @@ -17,8 +18,10 @@ query viewersWithLayers ($first: IntType, $skip: IntType = 0) {
username
password
}
children: layers {
id
children: viewerLayers {
layer {
id
}
}
parent {
id
Expand Down Expand Up @@ -47,8 +50,9 @@ export const handler = withServerDefaults(async (event, _) => {
}

const { menus } = await datocmsRequest({ query: viewersWithLayersQuery })
const formattedMenus = formatMenusRecursive(menus)

const menuTree = buildMenuTree(menus)
const menuTree = buildMenuTree(formattedMenus)

const menu = menuTree.find((menu) => menu.name === viewer)

Expand Down
18 changes: 11 additions & 7 deletions src/api/search.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
import { datocmsRequest } from '../lib/datocms'
import { withServerDefaults } from '../lib/with-server-defaults'
import { buildChildrenTree } from '../lib/build-children-tree'
import { formatMenusRecursive } from '../lib/format-menu'

const datocmsQuery = /* graphql */ `
query Layers ($first: IntType, $skip: IntType = 0) {
menus: allMenus(first: $first, skip: $skip) {
id
name
children: layers {
id
name
description
indexableWfsProperties
children: viewerLayers {
layer {
id
name
description
indexableWfsProperties
}
}
parent {
id
Expand Down Expand Up @@ -88,10 +91,11 @@ export const handler = withServerDefaults(async (event, _) => {
}

const { menus } = await datocmsRequest({ query: datocmsQuery })
const formattedMenus = formatMenusRecursive(menus)

buildChildrenTree(menus)
buildChildrenTree(formattedMenus)

const menu = menus.find((menu) => menu.name === viewer)
const menu = formattedMenus.find((menu) => menu.name === viewer)

if (!menu) {
return {
Expand Down
13 changes: 8 additions & 5 deletions src/api/sync-layer-background.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { withServerDefaults } from '../lib/with-server-defaults'
import { buildMenuTree } from '../lib/build-menu-tree'
import { findGeonetworkInstances } from '../lib/find-geonetwork-instances'
import { fetchLayerXML } from '../lib/fetch-layer-xml'
import { formatMenusRecursive } from '../lib/format-menu'
import Mailjet from 'node-mailjet'

const mailjet = new Mailjet({
Expand All @@ -24,8 +25,10 @@ query viewersWithLayers ($first: IntType, $skip: IntType = 0) {
errorNotificationContacts {
email
}
children: layers {
id
children: viewerLayers {
layers {
id
}
}
parent {
id
Expand Down Expand Up @@ -61,8 +64,8 @@ export const handler = withServerDefaults(async (event, _) => {
const { menus } = await datocmsRequest({
query: viewersWithLayersQuery,
})

const menuTree = buildMenuTree(menus)
const formattedMenus = formatMenusRecursive(menus)
const menuTree = buildMenuTree(formattedMenus)

try {
await syncLayers(menuTree, layerData.event_type, layerId)
Expand Down Expand Up @@ -181,7 +184,7 @@ function findEmailContactsForLayerId(menuTree, layerId) {
if (children) {
children.forEach((child) => {

if (child.id === layerId) {
if (child.layer.id === layerId) {
const { errorNotificationContacts } = viewer

if (errorNotificationContacts.length) {
Expand Down
2 changes: 2 additions & 0 deletions src/lib/datocms.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ function executeFetch(query, variables = {}, preview = false) {
headers: {
'Content-Type': 'application/json',
Authorization: process.env.DATO_API_TOKEN,
// TODO: remove this before going to production
'x-environment': 'layer-metadata'
},
body: JSON.stringify({ query, variables }),
})
Expand Down
28 changes: 28 additions & 0 deletions src/lib/format-menu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
export function formatMenu(menu) {
const formattedLayers = menu.children?.map(({ layer, ...metadataFields }) => {
return {
...layer,
...metadataFields
}
}) || [];

return {
...menu,
children: formattedLayers
}
}

export function formatMenusRecursive(menus) {
if (!menus) {
return menus;
}

return menus.map((menu) => {
const formattedMenu = formatMenu(menu);

return {
...formattedMenu,
children: formatMenusRecursive(formattedMenu.children) // Ensure we use the formatted children
};
});
}
16 changes: 10 additions & 6 deletions src/scripts/report-dead-layer-links.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import path, { dirname } from 'path'
import dotenv from 'dotenv'
import { fileURLToPath } from 'url'
import Mailjet from 'node-mailjet'
import { formatMenusRecursive } from '../lib/format-menu'

const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
Expand Down Expand Up @@ -32,11 +33,13 @@ query viewersWithLayers ($first: IntType, $skip: IntType = 0) {
deadLinksReportContacts {
email
}
children: layers {
id
name
url
layer
children: viewerLayers {
layer {
id
name
url
layer
}
}
parent {
id
Expand All @@ -52,8 +55,9 @@ async function report() {
const { menus } = await datocmsRequest({
query: viewersWithLayersQuery,
})
const formattedMenus = formatMenusRecursive(menus)

const menuTree = buildMenuTree(menus)
const menuTree = buildMenuTree(formattedMenus)

const deadLayerLinks = await findDeadLayerLinks(menuTree)

Expand Down

0 comments on commit 2704455

Please sign in to comment.