From 627981ea908a905121012adc041fc2845c644d92 Mon Sep 17 00:00:00 2001 From: Joshua Melville Date: Thu, 21 Nov 2024 11:36:02 +0200 Subject: [PATCH] fix sidebar generation --- apps/documentation/lib/writeSidebarJson.ts | 39 +- apps/documentation/public/sidebar.json | 848 ++++++++++----------- apps/documentation/public/sitemap-0.xml | 128 ++-- 3 files changed, 513 insertions(+), 502 deletions(-) diff --git a/apps/documentation/lib/writeSidebarJson.ts b/apps/documentation/lib/writeSidebarJson.ts index a6f0d6b..d908102 100644 --- a/apps/documentation/lib/writeSidebarJson.ts +++ b/apps/documentation/lib/writeSidebarJson.ts @@ -1,8 +1,8 @@ import "dotenv/config"; // This is essential here, because helper functions (below) use env variables, but they are not available in the Node.js environment without dotenv! This file is run directly in Node via tsc. import matter from "gray-matter"; -import { readFileSync, readdirSync, writeFileSync } from "node:fs"; +import { readdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import { type Locale, type TSideBar, locales } from "~/app/types"; +import { locales, type Locale, type SidebarLocaleDefinition, type TSideBar } from "~/app/types"; import { createFolderEntry, createPageEntry, @@ -25,7 +25,7 @@ function generateSidebarData() { // Set up initial structure for sidebar data. const sidebarData: TSideBar = locales.reduce((acc, locale) => { - acc[locale] = {} as TSideBar[Locale]; + acc[locale] = {} as SidebarLocaleDefinition; return acc; }, {} as TSideBar); @@ -34,16 +34,19 @@ function generateSidebarData() { for (const file of sortedFiles) { if (file.isDirectory()) { const metadata = getMetaDataForDirectory(join(file.path, file.name)); + const currentLocales = Object.keys(sidebarData); if (metadata.type === "project") { - for (const locale of Object.keys(sidebarData) as Locale[]) { + for (const l of currentLocales) { + const locale = l as Locale; + sidebarData[locale] = { ...sidebarData[locale], [file.name]: createProjectEntry(file, locale, metadata), }; } - return; + continue; } // If this is a folder, create a folder entry @@ -51,39 +54,45 @@ function generateSidebarData() { const nestedPath = getNestedPath(file.path); // Insert folder entry for each locale in the nested path - for (const locale of Object.keys(sidebarData) as Locale[]) { + for (const l of currentLocales) { + const locale = l as Locale; set(sidebarData[locale], [...nestedPath, file.name], createFolderEntry(file, locale, metadata)); } - return; + continue; } } // Only process files ending in .md or .mdx - if (!file.name.endsWith(".md") && !file.name.endsWith(".mdx")) return; + if (!file.name.endsWith(".md") && !file.name.endsWith(".mdx")) { + continue; + } // Determine locale based on file name (format is `index.en.mdx` or `index.en.md`) const locale = file.name.split(".")[1] as Locale | undefined; // If there's no locale, or the locale isn't included in the type, ignore it. if (!locale || !locales.includes(locale as Locale)) { + // eslint-disable-next-line no-console console.warn( `File ${file.name} is missing a locale or has a locale not defined in Locale. Locale is ${locale}. Skipping.`, ); - return; + continue; } - // create a key based on the filename without the locale or extension - // biome-ignore lint/style/noNonNullAssertion: filename is known to have a value here + // Create a key based on the filename without the locale or extension + // biome-ignore lint/style/noNonNullAssertion: structure is known const key = file.name.split(".")[0]!; - const nestedPath = getNestedPath(file.parentPath); + const nestedPath = getNestedPath(file.path); - const markdownFile = readFileSync(join(file.parentPath, file.name), "utf-8"); + const markdownFile = readFileSync(join(file.path, file.name), "utf-8"); const matterResult = matter(markdownFile); // If file has "hidden: true" in frontmatter, skip it - if (matterResult.data.hidden) return; + if (matterResult.data.hidden) { + continue; + } set(sidebarData[locale], [...nestedPath, key], createPageEntry(file, matterResult)); } @@ -96,5 +105,7 @@ try { writeFileSync(join(process.cwd(), "public", "sidebar.json"), JSON.stringify(sidebarData, null, 2), "utf-8"); } catch (e) { + // eslint-disable-next-line no-console console.log("Error writing sidebar data!", e); + throw e; } diff --git a/apps/documentation/public/sidebar.json b/apps/documentation/public/sidebar.json index 4bc7f5f..3ad5076 100644 --- a/apps/documentation/public/sidebar.json +++ b/apps/documentation/public/sidebar.json @@ -1,425 +1,425 @@ { - "en": { - "desktop": { - "type": "project", - "sourceFile": "/docs/desktop/index.en.mdx", - "label": "Desktop", - "children": { - "advanced-topics": { - "type": "folder", - "expanded": false, - "label": "Advanced Topics", - "navOrder": 50000, - "children": { - "network-canvas-graphml": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", - "label": "Network Canvas GraphML Format", - "navOrder": null - }, - "node-labelling": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", - "label": "Node Labelling", - "navOrder": null - }, - "protocol-file-format": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", - "label": "Protocol File Format", - "navOrder": null - }, - "protocol-schema-information": { - "type": "page", - "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", - "label": "Protocol Schema Information", - "navOrder": null - } - } - }, - "getting-started": { - "type": "folder", - "expanded": true, - "label": "Getting Started", - "navOrder": 1, - "children": { - "choosing-hardware": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", - "label": "Choosing a Hardware Device for Interviewer", - "navOrder": null - }, - "configuring-devices": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", - "label": "Configuring Devices Prior To Starting Data Collection", - "navOrder": null - }, - "installation-guide": { - "type": "page", - "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", - "label": "Installation Guide", - "navOrder": 3 - } - } - }, - "interface-documentation": { - "type": "folder", - "expanded": false, - "label": "Interface documentation", - "navOrder": null, - "children": { - "categorical-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", - "label": "Categorical Bin", - "navOrder": null - }, - "dyad-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", - "label": "Dyad Census", - "navOrder": null - }, - "ego-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", - "label": "Ego Form", - "navOrder": null - }, - "information": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", - "label": "Information", - "navOrder": null - }, - "large-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", - "label": "Large Roster Name Generator", - "navOrder": null - }, - "name-generator-roster": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", - "label": "Name Generator for Roster Data", - "navOrder": null - }, - "name-generator-using-forms": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", - "label": "Name Generator using Forms", - "navOrder": null - }, - "name-generator-using-quick-add": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", - "label": "Name Generators using Quick Add", - "navOrder": null - }, - "narrative": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", - "label": "Narrative", - "navOrder": null - }, - "ordinal-bin": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", - "label": "Ordinal Bin", - "navOrder": null - }, - "per-alter-edge-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", - "label": "Per Alter Edge Form", - "navOrder": null - }, - "per-alter-form": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", - "label": "Per Alter Form", - "navOrder": null - }, - "shared": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", - "label": "Shared Interface Options", - "navOrder": null - }, - "small-roster-name-generator": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", - "label": "Small Roster Name Generator", - "navOrder": null - }, - "sociogram": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", - "label": "Sociogram", - "navOrder": null - }, - "tie-strength-census": { - "type": "page", - "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", - "label": "Tie-Strength Census", - "navOrder": null - } - } - }, - "key-concepts": { - "type": "folder", - "expanded": false, - "label": "Key concepts", - "navOrder": null, - "children": { - "additional-variables": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", - "label": "Additional Variables", - "navOrder": null - }, - "codebook": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", - "label": "Codebook", - "navOrder": null - }, - "field-validation": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", - "label": "Field Validation", - "navOrder": null - }, - "forms": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", - "label": "Forms", - "navOrder": null - }, - "input-controls": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", - "label": "Input Controls", - "navOrder": null - }, - "interfaces": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", - "label": "Interfaces", - "navOrder": null - }, - "network-filtering": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", - "label": "Network Filtering", - "navOrder": null - }, - "preview-mode": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", - "label": "Preview Mode", - "navOrder": null - }, - "prompts": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", - "label": "Prompts", - "navOrder": null - }, - "resources": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", - "label": "Resources", - "navOrder": null - }, - "skip-logic": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", - "label": "Skip Logic", - "navOrder": null - }, - "the-protocol-file": { - "type": "page", - "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", - "label": "The Protocol File", - "navOrder": null - } - } - }, - "project-information": { - "type": "folder", - "expanded": true, - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Information", - "navOrder": 3, - "children": { - "citing-the-software": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", - "label": "Citing the Software", - "navOrder": 6 - }, - "contributing-code": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", - "label": "Contributing Code", - "navOrder": null - }, - "faq": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/faq.en.md", - "label": "Frequently Asked Questions", - "navOrder": 5 - }, - "irb-best-practices": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", - "label": "IRB and Security Best Practices", - "navOrder": null - }, - "project-overview": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", - "label": "Project Overview", - "navOrder": 2 - }, - "requests-for-collaboration": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", - "label": "Requests for Collaboration", - "navOrder": null - }, - "security-model": { - "type": "page", - "sourceFile": "/docs/desktop/project-information/security-model.en.md", - "label": "Overview of Security Model", - "navOrder": null - } - } - }, - "tutorials": { - "type": "folder", - "expanded": true, - "label": "Tutorials", - "navOrder": 2, - "children": { - "building-a-protocol": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", - "label": "Building a protocol using Architect", - "navOrder": 2 - }, - "protocol-and-data-workflows": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", - "label": "Protocol and Data Workflows", - "navOrder": 3 - }, - "using-interviewer": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", - "label": "Using Interviewer", - "navOrder": 1 - }, - "working-with-data": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", - "label": "Working with Network Canvas data in R", - "navOrder": null - }, - "working-with-rosters": { - "type": "page", - "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", - "label": "Working with Roster Data", - "navOrder": null - } - } - } - } - }, - "fresco": { - "type": "project", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "Fresco", - "children": { - "about": { - "type": "page", - "sourceFile": "/docs/fresco/about.en.mdx", - "label": "About Fresco", - "navOrder": 1 - }, - "advanced-topics": { - "type": "folder", - "expanded": true, - "label": "Advanced Topics", - "navOrder": null, - "children": { - "integration": { - "type": "page", - "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", - "label": "Integration with other survey tools", - "navOrder": null - } - } - }, - "deployment": { - "type": "folder", - "expanded": true, - "label": "Deployment", - "navOrder": 5, - "children": { - "advanced": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", - "label": "Advanced Deployment", - "navOrder": null - }, - "cloud-pricing": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", - "label": "Cloud Pricing", - "navOrder": 6 - }, - "guide": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/guide.en.mdx", - "label": "Deployment Guide", - "navOrder": 1 - }, - "troubleshooting": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", - "label": "Troubleshooting", - "navOrder": 3 - }, - "upgrading": { - "type": "page", - "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", - "label": "Upgrading Fresco", - "navOrder": 5 - } - } - }, - "faq": { - "type": "page", - "sourceFile": "/docs/fresco/faq.en.mdx", - "label": "Frequently Asked Questions", - "navOrder": 3 - }, - "sandbox": { - "type": "page", - "sourceFile": "/docs/fresco/sandbox.en.mdx", - "label": "Sandbox", - "navOrder": 3 - }, - "using-fresco": { - "type": "page", - "sourceFile": "/docs/fresco/using-fresco.en.mdx", - "label": "Using Fresco", - "navOrder": 2 - } - } - } - } -} + "en": { + "desktop": { + "type": "project", + "sourceFile": "/docs/desktop/index.en.mdx", + "label": "Desktop", + "children": { + "advanced-topics": { + "type": "folder", + "expanded": false, + "label": "Advanced Topics", + "navOrder": 50000, + "children": { + "network-canvas-graphml": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/network-canvas-graphml.en.md", + "label": "Network Canvas GraphML Format", + "navOrder": null + }, + "node-labelling": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/node-labelling.en.md", + "label": "Node Labelling", + "navOrder": null + }, + "protocol-file-format": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-file-format.en.md", + "label": "Protocol File Format", + "navOrder": null + }, + "protocol-schema-information": { + "type": "page", + "sourceFile": "/docs/desktop/advanced-topics/protocol-schema-information.en.mdx", + "label": "Protocol Schema Information", + "navOrder": null + } + } + }, + "getting-started": { + "type": "folder", + "expanded": true, + "label": "Getting Started", + "navOrder": 1, + "children": { + "choosing-hardware": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/choosing-hardware.en.md", + "label": "Choosing a Hardware Device for Interviewer", + "navOrder": null + }, + "configuring-devices": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/configuring-devices.en.mdx", + "label": "Configuring Devices Prior To Starting Data Collection", + "navOrder": null + }, + "installation-guide": { + "type": "page", + "sourceFile": "/docs/desktop/getting-started/installation-guide.en.md", + "label": "Installation Guide", + "navOrder": 3 + } + } + }, + "interface-documentation": { + "type": "folder", + "expanded": false, + "label": "Interface documentation", + "navOrder": null, + "children": { + "categorical-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/categorical-bin.en.mdx", + "label": "Categorical Bin", + "navOrder": null + }, + "dyad-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/dyad-census.en.md", + "label": "Dyad Census", + "navOrder": null + }, + "ego-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ego-form.en.md", + "label": "Ego Form", + "navOrder": null + }, + "information": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/information.en.mdx", + "label": "Information", + "navOrder": null + }, + "large-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/large-roster-name-generator.en.mdx", + "label": "Large Roster Name Generator", + "navOrder": null + }, + "name-generator-roster": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-roster.en.mdx", + "label": "Name Generator for Roster Data", + "navOrder": null + }, + "name-generator-using-forms": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-forms.en.mdx", + "label": "Name Generator using Forms", + "navOrder": null + }, + "name-generator-using-quick-add": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/name-generator-using-quick-add.en.mdx", + "label": "Name Generators using Quick Add", + "navOrder": null + }, + "narrative": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/narrative.en.md", + "label": "Narrative", + "navOrder": null + }, + "ordinal-bin": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/ordinal-bin.en.md", + "label": "Ordinal Bin", + "navOrder": null + }, + "per-alter-edge-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-edge-form.en.mdx", + "label": "Per Alter Edge Form", + "navOrder": null + }, + "per-alter-form": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/per-alter-form.en.md", + "label": "Per Alter Form", + "navOrder": null + }, + "shared": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/shared.en.md", + "label": "Shared Interface Options", + "navOrder": null + }, + "small-roster-name-generator": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/small-roster-name-generator.en.mdx", + "label": "Small Roster Name Generator", + "navOrder": null + }, + "sociogram": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/sociogram.en.md", + "label": "Sociogram", + "navOrder": null + }, + "tie-strength-census": { + "type": "page", + "sourceFile": "/docs/desktop/interface-documentation/tie-strength-census.en.md", + "label": "Tie-Strength Census", + "navOrder": null + } + } + }, + "key-concepts": { + "type": "folder", + "expanded": false, + "label": "Key concepts", + "navOrder": null, + "children": { + "additional-variables": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/additional-variables.en.mdx", + "label": "Additional Variables", + "navOrder": null + }, + "codebook": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/codebook.en.mdx", + "label": "Codebook", + "navOrder": null + }, + "field-validation": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/field-validation.en.md", + "label": "Field Validation", + "navOrder": null + }, + "forms": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/forms.en.mdx", + "label": "Forms", + "navOrder": null + }, + "input-controls": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/input-controls.en.md", + "label": "Input Controls", + "navOrder": null + }, + "interfaces": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/interfaces.en.mdx", + "label": "Interfaces", + "navOrder": null + }, + "network-filtering": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/network-filtering.en.mdx", + "label": "Network Filtering", + "navOrder": null + }, + "preview-mode": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/preview-mode.en.md", + "label": "Preview Mode", + "navOrder": null + }, + "prompts": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/prompts.en.mdx", + "label": "Prompts", + "navOrder": null + }, + "resources": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/resources.en.mdx", + "label": "Resources", + "navOrder": null + }, + "skip-logic": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/skip-logic.en.mdx", + "label": "Skip Logic", + "navOrder": null + }, + "the-protocol-file": { + "type": "page", + "sourceFile": "/docs/desktop/key-concepts/the-protocol-file.en.md", + "label": "The Protocol File", + "navOrder": null + } + } + }, + "project-information": { + "type": "folder", + "expanded": true, + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Information", + "navOrder": 3, + "children": { + "citing-the-software": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/citing-the-software.en.md", + "label": "Citing the Software", + "navOrder": 6 + }, + "contributing-code": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/contributing-code.en.md", + "label": "Contributing Code", + "navOrder": null + }, + "faq": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/faq.en.md", + "label": "Frequently Asked Questions", + "navOrder": 5 + }, + "irb-best-practices": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/irb-best-practices.en.md", + "label": "IRB and Security Best Practices", + "navOrder": null + }, + "project-overview": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/project-overview.en.mdx", + "label": "Project Overview", + "navOrder": 2 + }, + "requests-for-collaboration": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/requests-for-collaboration.en.md", + "label": "Requests for Collaboration", + "navOrder": null + }, + "security-model": { + "type": "page", + "sourceFile": "/docs/desktop/project-information/security-model.en.md", + "label": "Overview of Security Model", + "navOrder": null + } + } + }, + "tutorials": { + "type": "folder", + "expanded": true, + "label": "Tutorials", + "navOrder": 2, + "children": { + "building-a-protocol": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/building-a-protocol.en.mdx", + "label": "Building a protocol using Architect", + "navOrder": 2 + }, + "protocol-and-data-workflows": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/protocol-and-data-workflows.en.mdx", + "label": "Protocol and Data Workflows", + "navOrder": 3 + }, + "using-interviewer": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/using-interviewer.en.mdx", + "label": "Using Interviewer", + "navOrder": 1 + }, + "working-with-data": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-data.en.mdx", + "label": "Working with Network Canvas data in R", + "navOrder": null + }, + "working-with-rosters": { + "type": "page", + "sourceFile": "/docs/desktop/tutorials/working-with-rosters.en.md", + "label": "Working with Roster Data", + "navOrder": null + } + } + } + } + }, + "fresco": { + "type": "project", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "Fresco", + "children": { + "about": { + "type": "page", + "sourceFile": "/docs/fresco/about.en.mdx", + "label": "About Fresco", + "navOrder": 1 + }, + "advanced-topics": { + "type": "folder", + "expanded": true, + "label": "Advanced Topics", + "navOrder": null, + "children": { + "integration": { + "type": "page", + "sourceFile": "/docs/fresco/advanced-topics/integration.en.mdx", + "label": "Integration with other survey tools", + "navOrder": null + } + } + }, + "deployment": { + "type": "folder", + "expanded": true, + "label": "Deployment", + "navOrder": 5, + "children": { + "advanced": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/advanced.en.mdx", + "label": "Advanced Deployment", + "navOrder": null + }, + "cloud-pricing": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/cloud-pricing.en.md", + "label": "Cloud Pricing", + "navOrder": 6 + }, + "guide": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/guide.en.mdx", + "label": "Deployment Guide", + "navOrder": 1 + }, + "troubleshooting": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/troubleshooting.en.mdx", + "label": "Troubleshooting", + "navOrder": 3 + }, + "upgrading": { + "type": "page", + "sourceFile": "/docs/fresco/deployment/upgrading.en.mdx", + "label": "Upgrading Fresco", + "navOrder": 5 + } + } + }, + "faq": { + "type": "page", + "sourceFile": "/docs/fresco/faq.en.mdx", + "label": "Frequently Asked Questions", + "navOrder": 3 + }, + "sandbox": { + "type": "page", + "sourceFile": "/docs/fresco/sandbox.en.mdx", + "label": "Sandbox", + "navOrder": 3 + }, + "using-fresco": { + "type": "page", + "sourceFile": "/docs/fresco/using-fresco.en.mdx", + "label": "Using Fresco", + "navOrder": 2 + } + } + } + } +} \ No newline at end of file diff --git a/apps/documentation/public/sitemap-0.xml b/apps/documentation/public/sitemap-0.xml index b148fd2..a86bcbb 100644 --- a/apps/documentation/public/sitemap-0.xml +++ b/apps/documentation/public/sitemap-0.xml @@ -1,67 +1,67 @@ -https://documentation.networkcanvas.com/manifest.webmanifest2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/icon.svg2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/network-canvas-graphml2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/node-labelling2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-file-format2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-schema-information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/choosing-hardware2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/configuring-devices2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/getting-started/installation-guide2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/categorical-bin2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/dyad-census2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/ego-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/large-roster-name-generator2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-roster2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-forms2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-quick-add2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/narrative2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/ordinal-bin2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-edge-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-form2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/shared2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/small-roster-name-generator2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/sociogram2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/interface-documentation/tie-strength-census2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/additional-variables2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/codebook2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/field-validation2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/forms2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/input-controls2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/interfaces2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/network-filtering2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/preview-mode2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/prompts2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/resources2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/skip-logic2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/key-concepts/the-protocol-file2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/citing-the-software2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/contributing-code2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/faq2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/irb-best-practices2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/project-overview2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/requests-for-collaboration2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/project-information/security-model2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/building-a-protocol2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/protocol-and-data-workflows2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/using-interviewer2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-data2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-rosters2024-11-20T19:47:48.014Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/about2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/advanced-topics/integration2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/advanced2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/cloud-pricing2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/guide2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/troubleshooting2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/deployment/upgrading2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/faq2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/sandbox2024-11-20T19:47:48.015Zdaily0.7 -https://documentation.networkcanvas.com/en/fresco/using-fresco2024-11-20T19:47:48.015Zdaily0.7 +https://documentation.networkcanvas.com/icon.svg2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com/en2024-11-21T09:35:52.966Zdaily0.7 +https://documentation.networkcanvas.com/manifest.webmanifest2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/network-canvas-graphml2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/node-labelling2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-file-format2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/advanced-topics/protocol-schema-information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/choosing-hardware2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/configuring-devices2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/getting-started/installation-guide2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/categorical-bin2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/dyad-census2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/ego-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/large-roster-name-generator2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-roster2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-forms2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/name-generator-using-quick-add2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/narrative2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/ordinal-bin2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-edge-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/per-alter-form2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/shared2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/small-roster-name-generator2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/sociogram2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/interface-documentation/tie-strength-census2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/additional-variables2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/codebook2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/field-validation2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/forms2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/input-controls2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/interfaces2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/network-filtering2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/preview-mode2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/prompts2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/resources2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/skip-logic2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/key-concepts/the-protocol-file2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/citing-the-software2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/contributing-code2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/faq2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/irb-best-practices2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/project-overview2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/requests-for-collaboration2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/project-information/security-model2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/building-a-protocol2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/protocol-and-data-workflows2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/using-interviewer2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-data2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/desktop/tutorials/working-with-rosters2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/about2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/advanced-topics/integration2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/advanced2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/cloud-pricing2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/guide2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/troubleshooting2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/deployment/upgrading2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/faq2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/sandbox2024-11-21T09:35:52.967Zdaily0.7 +https://documentation.networkcanvas.com/en/fresco/using-fresco2024-11-21T09:35:52.967Zdaily0.7 \ No newline at end of file