From 5522b00ad27afe45643631b0873a12f7a5b6e928 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 8 Aug 2025 14:26:48 +0200 Subject: [PATCH 1/6] Experimental Platform split --- site/content/3.12/_index.md | 4 ++-- .../3.12/about-arangodb/features/platform.md | 12 +++++----- site/content/3.12/aql/functions/vector.md | 2 +- site/content/3.12/deploy/_index.md | 2 +- .../working-with-indexes/vector-indexes.md | 2 +- site/content/platform/_index.md | 24 +++++++++++++++++++ .../about-the-platform/_index.md} | 4 ++-- .../{3.12 => platform}/data-science/_index.md | 18 +++++++------- .../data-science/graphml/_index.md | 0 .../data-science/graphml/notebooks-api.md | 2 +- .../data-science/graphml/quickstart.md | 0 .../data-science/graphml/ui.md | 0 .../data-science/graphrag/_index.md | 0 .../data-science/graphrag/services/_index.md | 0 .../data-science/graphrag/services/gen-ai.md | 2 +- .../graphrag/services/importer.md | 0 .../data-science/graphrag/services/mlflow.md | 2 +- .../services/natural-language-to-aql.md | 0 .../graphrag/services/retriever.md | 0 .../services/triton-inference-server.md | 0 .../graphrag/tutorial-notebook.md | 2 +- .../data-science/graphrag/web-interface.md | 2 +- .../data-science/integrations/_index.md | 0 .../integrations/arangodb-cugraph-adapter.md | 0 .../integrations/arangodb-dgl-adapter.md | 0 .../integrations/arangodb-networkx-adapter.md | 0 .../integrations/arangodb-pyg-adapter.md | 0 .../integrations/arangodb-rdf-adapter.md | 0 .../data-science/integrations/langchain.md | 0 .../data-science/notebook-servers.md | 2 +- .../platform/graph-intelligence/_index.md | 5 ++++ .../graph-intelligence}/graph-analytics.md | 12 +++++----- .../graph-intelligence}/graph-visualizer.md | 4 ++-- .../platform.md => platform/release-notes.md} | 8 +++---- site/data/versions.yaml | 5 ++++ .../layouts/partials/shortcodes/version.html | 4 +++- .../arangoproxy/internal/service/service.go | 3 +++ 37 files changed, 80 insertions(+), 41 deletions(-) create mode 100644 site/content/platform/_index.md rename site/content/{3.12/components/platform.md => platform/about-the-platform/_index.md} (98%) rename site/content/{3.12 => platform}/data-science/_index.md (89%) rename site/content/{3.12 => platform}/data-science/graphml/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphml/notebooks-api.md (99%) rename site/content/{3.12 => platform}/data-science/graphml/quickstart.md (100%) rename site/content/{3.12 => platform}/data-science/graphml/ui.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/_index.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/gen-ai.md (98%) rename site/content/{3.12 => platform}/data-science/graphrag/services/importer.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/mlflow.md (98%) rename site/content/{3.12 => platform}/data-science/graphrag/services/natural-language-to-aql.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/retriever.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/services/triton-inference-server.md (100%) rename site/content/{3.12 => platform}/data-science/graphrag/tutorial-notebook.md (99%) rename site/content/{3.12 => platform}/data-science/graphrag/web-interface.md (98%) rename site/content/{3.12 => platform}/data-science/integrations/_index.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-cugraph-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-dgl-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-networkx-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-pyg-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/arangodb-rdf-adapter.md (100%) rename site/content/{3.12 => platform}/data-science/integrations/langchain.md (100%) rename site/content/{3.12 => platform}/data-science/notebook-servers.md (96%) create mode 100644 site/content/platform/graph-intelligence/_index.md rename site/content/{3.12/graphs => platform/graph-intelligence}/graph-analytics.md (98%) rename site/content/{3.12/graphs => platform/graph-intelligence}/graph-visualizer.md (99%) rename site/content/{3.12/release-notes/platform.md => platform/release-notes.md} (82%) diff --git a/site/content/3.12/_index.md b/site/content/3.12/_index.md index 55372ec34b..cc569bfae0 100644 --- a/site/content/3.12/_index.md +++ b/site/content/3.12/_index.md @@ -26,11 +26,11 @@ ArangoDB's Query Language AQL lets you use graphs, JSON documents, and search via a single, composable query language. {{% /card %}} -{{% card title="GenAI & Data Science" link="data-science/" %}} +{{% card title="GenAI & Data Science" link="../platform/data-science/" %}} Discover the graph-powered machine learning and GraphRAG features of ArangoDB. {{% /card %}} -{{% card title="ArangoDB Platform" link="components/platform/" %}} +{{% card title="ArangoDB Platform" link="../platform/" %}} The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering of products, including GraphML and GraphRAG. {{% /card %}} diff --git a/site/content/3.12/about-arangodb/features/platform.md b/site/content/3.12/about-arangodb/features/platform.md index 2b833379d4..d6ef7fd320 100644 --- a/site/content/3.12/about-arangodb/features/platform.md +++ b/site/content/3.12/about-arangodb/features/platform.md @@ -8,7 +8,7 @@ description: >- solution with a unified interface --- For in-depth information about the ArangoDB Platform as a whole and how to -deploy and use it, see [The ArangoDB Platform](../../components/platform.md). +deploy and use it, see [The ArangoDB Platform](../../../platform/about-the-platform/_index.md). ## Architecture @@ -34,24 +34,24 @@ deploy and use it, see [The ArangoDB Platform](../../components/platform.md). - [**ArangoDB Core**](core.md): The ArangoDB database system with support for graphs, documents, key-value, full-text search, and vector search. -- [**Graph Visualizer**](../../graphs/graph-visualizer.md): +- [**Graph Visualizer**](../../../platform/graph-intelligence/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. -- [**Graph Analytics**](../../graphs/graph-analytics.md): +- [**Graph Analytics**](../../../platform/graph-intelligence/graph-analytics.md): A service that can efficiently load graph data from the core database system and run graph algorithms such as PageRank and many more. -- [**GenAI Suite**](../../data-science/_index.md): +- [**GenAI Suite**](../../../platform/data-science/_index.md): ArangoDB's graph-powered machine learning (GraphML) as well as GraphRAG for automatically building knowledge graphs from text and taking advantage of both excerpts and higher-level summaries as context for turbocharging GenAI applications. -- [**Notebook servers**](../../data-science/notebook-servers.md): +- [**Notebook servers**](../../../platform/data-science/notebook-servers.md): Run Jupyter kernels in the Platform for hosting interactive, Python-based notebooks to experiment and develop applications. -- [**MLflow integration**](../../data-science/graphrag/services/mlflow.md): +- [**MLflow integration**](../../../platform/data-science/graphrag/services/mlflow.md): Use the popular MLflow for machine learning practitioners as part of the ArangoDB Platform. diff --git a/site/content/3.12/aql/functions/vector.md b/site/content/3.12/aql/functions/vector.md index 45341b8ea8..987de8e45e 100644 --- a/site/content/3.12/aql/functions/vector.md +++ b/site/content/3.12/aql/functions/vector.md @@ -12,7 +12,7 @@ To use vector search, you need to have vector embeddings stored in documents and the attribute that stores them needs to be indexed by a [vector index](../../index-and-search/indexing/working-with-indexes/vector-indexes.md). -You can calculate vector embeddings using [ArangoDB's GraphML](../../data-science/graphml/_index.md) +You can calculate vector embeddings using [ArangoDB's GraphML](../../../platform/data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. {{< warning >}} diff --git a/site/content/3.12/deploy/_index.md b/site/content/3.12/deploy/_index.md index e0d36ebcd0..e99d1d56e5 100644 --- a/site/content/3.12/deploy/_index.md +++ b/site/content/3.12/deploy/_index.md @@ -50,7 +50,7 @@ ArangoDB product offering with a unified interface in a Kubernetes cluster. It is offered for self-hosting on-prem or in the cloud and as a managed service, superseding the ArangoGraph Insights Platform. -See [The ArangoDB Platform](../components/platform.md) for details. +See [The ArangoDB Platform](../../platform/about-the-platform/_index.md) for details. ## How to deploy diff --git a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md b/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md index 17d9be8fe3..955051efc6 100644 --- a/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md +++ b/site/content/3.12/index-and-search/indexing/working-with-indexes/vector-indexes.md @@ -33,7 +33,7 @@ startup option needs to be enabled on the deployment you want to restore to. {{< /warning >}} 1. Enable the experimental vector index feature. -2. Calculate vector embeddings using [ArangoDB's GraphML](../../../data-science/graphml/_index.md) +2. Calculate vector embeddings using [ArangoDB's GraphML](../../../../platform/data-science/graphml/_index.md) capabilities (available in ArangoGraph) or using external tools. Store each vector as an attribute in the respective document. 3. Create a vector index over this attribute. You need to choose which diff --git a/site/content/platform/_index.md b/site/content/platform/_index.md new file mode 100644 index 0000000000..a70a2b36e7 --- /dev/null +++ b/site/content/platform/_index.md @@ -0,0 +1,24 @@ +--- +title: Recommended Resources +menuTitle: 'Platform' +weight: 0 +layout: default +--- +{{< cloudbanner >}} + +{{< cards >}} + +{{% card title="What is the ArangoDB Platform?" link="about-the-platform/" %}} +The ArangoDB Platform is the umbrella for hosting the entire ArangoDB offering +of products, including GraphML and GraphRAG. +{{% /card %}} + +{{% card title="Graph Intelligence" link="graph-intelligence/" %}} +Analyze and visualize your data with the Graph Analytics and Graph Visualizer features. +{{% /card %}} + +{{% card title="GenAI & Data Science" link="data-science/" %}} +Discover the graph-powered machine learning and GraphRAG features of ArangoDB. +{{% /card %}} + +{{< /cards >}} diff --git a/site/content/3.12/components/platform.md b/site/content/platform/about-the-platform/_index.md similarity index 98% rename from site/content/3.12/components/platform.md rename to site/content/platform/about-the-platform/_index.md index ba034f43cf..e643b843c7 100644 --- a/site/content/3.12/components/platform.md +++ b/site/content/platform/about-the-platform/_index.md @@ -1,7 +1,7 @@ --- title: The ArangoDB Platform menuTitle: Platform -weight: 169 +weight: 5 description: >- The ArangoDB Platform brings everything ArangoDB offers together to a single solution that you can deploy on-prem or use as a managed service @@ -65,7 +65,7 @@ of the platform features. ### Use the ArangoDB Platform as a managed service The ArangoDB Platform is not available as a managed service yet, but it will -become available for the [ArangoGraph Insights Platform](../arangograph/_index.md) +become available for the [ArangoGraph Insights Platform](../../3.12/arangograph/_index.md) in the future. Until then, you can request early access to the self-hosted ArangoDB Platform for testing. diff --git a/site/content/3.12/data-science/_index.md b/site/content/platform/data-science/_index.md similarity index 89% rename from site/content/3.12/data-science/_index.md rename to site/content/platform/data-science/_index.md index 3e0f3d853d..c6981e809c 100644 --- a/site/content/3.12/data-science/_index.md +++ b/site/content/platform/data-science/_index.md @@ -1,7 +1,7 @@ --- title: Generative Artificial Intelligence (GenAI) and Data Science menuTitle: GenAI & Data Science -weight: 115 +weight: 15 description: >- ArangoDB's set of tools and technologies enables analytics, machine learning, and GenAI applications powered by graph data @@ -48,16 +48,16 @@ ArangoDB Platform web interface, guiding you through the process. Alongside these components, you also get the following additional features: -- [**Graph Visualizer**](../graphs/graph-visualizer.md): A web-based tool for exploring your graph data with an +- [**Graph Visualizer**](../graph-intelligence/graph-visualizer.md): A web-based tool for exploring your graph data with an intuitive interface and sophisticated querying capabilities. - [**Jupyter notebooks**](notebook-servers.md): Run a Jupyter kernel in the platform for hosting interactive notebooks for experimentation and development of applications that use ArangoDB as their backend. - **Public and private LLM support**: Use public LLMs such as OpenAI - or private LLMs with [Triton Inference Server](../data-science/graphrag/services/triton-inference-server.md). -- [**MLflow integration**](./graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs + or private LLMs with [Triton Inference Server](graphrag/services/triton-inference-server.md). +- [**MLflow integration**](graphrag/services/mlflow.md): Use the popular MLflow as a model registry for private LLMs or to run machine learning experiments as part of the ArangoDB Platform. -- [**Integrations**](./integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, +- [**Integrations**](integrations/_index.md): Use ArangoDB together with cuGraph, NetworkX, and other data science tools. - **Application Programming Interfaces**: Use the underlying APIs of the GenAI Suite services and build your own integrations. See the @@ -69,7 +69,7 @@ Alongside these components, you also get the following additional features: The ArangoDB Platform includes the following features independent of the GenAI Suite: -- [**Graph Analytics**](../graphs/graph-analytics.md): Run graph algorithms such as PageRank +- [**Graph Analytics**](../graph-intelligence/graph-analytics.md): Run graph algorithms such as PageRank on dedicated compute resources. ## From graph to AI @@ -92,7 +92,7 @@ Graph queries can answer questions like _**Who can introduce me to person X**_? ![Graph Query](../../images/graph-query.png) -See [Graphs in AQL](../aql/graphs/_index.md) for the supported graph queries. +See [Graphs in AQL](../../3.12/aql/graphs/_index.md) for the supported graph queries. ### Graph Analytics @@ -106,7 +106,7 @@ Graph analytics can answer questions like _**Who are the most connected persons* ArangoDB offers _Graph Analytics Engines_ to run algorithms such as connected components, label propagation, and PageRank on your data. This feature is available for the ArangoGraph Insights Platform. See -[Graph Analytics](../graphs/graph-analytics.md) for details. +[Graph Analytics](../graph-intelligence/graph-analytics.md) for details. ### GraphML @@ -168,5 +168,5 @@ the following tasks: ## Sample datasets If you want to try out ArangoDB's data science features, you may use the -[`arango-datasets` Python package](../components/tools/arango-datasets.md) +[`arango-datasets` Python package](../../3.12/components/tools/arango-datasets.md) to load sample datasets into a deployment. diff --git a/site/content/3.12/data-science/graphml/_index.md b/site/content/platform/data-science/graphml/_index.md similarity index 100% rename from site/content/3.12/data-science/graphml/_index.md rename to site/content/platform/data-science/graphml/_index.md diff --git a/site/content/3.12/data-science/graphml/notebooks-api.md b/site/content/platform/data-science/graphml/notebooks-api.md similarity index 99% rename from site/content/3.12/data-science/graphml/notebooks-api.md rename to site/content/platform/data-science/graphml/notebooks-api.md index c9ade4cacf..9b0d593a2a 100644 --- a/site/content/3.12/data-science/graphml/notebooks-api.md +++ b/site/content/platform/data-science/graphml/notebooks-api.md @@ -82,7 +82,7 @@ news sources, and locations are interconnected into a large graph. ![Example Event](../../../images/ArangoML_open_intelligence_visualization.png) -The [`arango-datasets`](../../components/tools/arango-datasets.md) Python package +The [`arango-datasets`](../../../3.12/components/tools/arango-datasets.md) Python package allows you to load pre-defined datasets into ArangoDB Platform. It comes pre-installed in the GraphML notebook environment. diff --git a/site/content/3.12/data-science/graphml/quickstart.md b/site/content/platform/data-science/graphml/quickstart.md similarity index 100% rename from site/content/3.12/data-science/graphml/quickstart.md rename to site/content/platform/data-science/graphml/quickstart.md diff --git a/site/content/3.12/data-science/graphml/ui.md b/site/content/platform/data-science/graphml/ui.md similarity index 100% rename from site/content/3.12/data-science/graphml/ui.md rename to site/content/platform/data-science/graphml/ui.md diff --git a/site/content/3.12/data-science/graphrag/_index.md b/site/content/platform/data-science/graphrag/_index.md similarity index 100% rename from site/content/3.12/data-science/graphrag/_index.md rename to site/content/platform/data-science/graphrag/_index.md diff --git a/site/content/3.12/data-science/graphrag/services/_index.md b/site/content/platform/data-science/graphrag/services/_index.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/_index.md rename to site/content/platform/data-science/graphrag/services/_index.md diff --git a/site/content/3.12/data-science/graphrag/services/gen-ai.md b/site/content/platform/data-science/graphrag/services/gen-ai.md similarity index 98% rename from site/content/3.12/data-science/graphrag/services/gen-ai.md rename to site/content/platform/data-science/graphrag/services/gen-ai.md index 280dfd2511..a87c3c44df 100644 --- a/site/content/3.12/data-science/graphrag/services/gen-ai.md +++ b/site/content/platform/data-science/graphrag/services/gen-ai.md @@ -98,7 +98,7 @@ curl -X POST https://:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see -the [ArangoDB Authentication](../../../develop/http-api/authentication/#jwt-user-tokens) +the [ArangoDB Authentication](../../../../3.12/develop/http-api/authentication/#jwt-user-tokens) documentation. ## Complete Service lifecycle example diff --git a/site/content/3.12/data-science/graphrag/services/importer.md b/site/content/platform/data-science/graphrag/services/importer.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/importer.md rename to site/content/platform/data-science/graphrag/services/importer.md diff --git a/site/content/3.12/data-science/graphrag/services/mlflow.md b/site/content/platform/data-science/graphrag/services/mlflow.md similarity index 98% rename from site/content/3.12/data-science/graphrag/services/mlflow.md rename to site/content/platform/data-science/graphrag/services/mlflow.md index 0de3c91d3b..305ea90a1b 100644 --- a/site/content/3.12/data-science/graphrag/services/mlflow.md +++ b/site/content/platform/data-science/graphrag/services/mlflow.md @@ -93,7 +93,7 @@ curl -X POST https://:8529/_open/auth \ This returns a JWT token that you can use as your Bearer token. For more details about ArangoDB authentication and JWT tokens, see the -[ArangoDB Authentication](https://docs.arangodb.com/stable/develop/http-api/authentication/#jwt-user-tokens) +[ArangoDB Authentication](../../../../3.12/develop/http-api/authentication/#jwt-user-tokens) documentation. ## Installation diff --git a/site/content/3.12/data-science/graphrag/services/natural-language-to-aql.md b/site/content/platform/data-science/graphrag/services/natural-language-to-aql.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/natural-language-to-aql.md rename to site/content/platform/data-science/graphrag/services/natural-language-to-aql.md diff --git a/site/content/3.12/data-science/graphrag/services/retriever.md b/site/content/platform/data-science/graphrag/services/retriever.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/retriever.md rename to site/content/platform/data-science/graphrag/services/retriever.md diff --git a/site/content/3.12/data-science/graphrag/services/triton-inference-server.md b/site/content/platform/data-science/graphrag/services/triton-inference-server.md similarity index 100% rename from site/content/3.12/data-science/graphrag/services/triton-inference-server.md rename to site/content/platform/data-science/graphrag/services/triton-inference-server.md diff --git a/site/content/3.12/data-science/graphrag/tutorial-notebook.md b/site/content/platform/data-science/graphrag/tutorial-notebook.md similarity index 99% rename from site/content/3.12/data-science/graphrag/tutorial-notebook.md rename to site/content/platform/data-science/graphrag/tutorial-notebook.md index 00df23951e..2738493dcc 100644 --- a/site/content/3.12/data-science/graphrag/tutorial-notebook.md +++ b/site/content/platform/data-science/graphrag/tutorial-notebook.md @@ -201,7 +201,7 @@ pprint(importerResponse) ### Visualize and interact with the Knowledge Graph Once the importer service has processed the document, you can visualize and -interact with the generated Knowledge Graph using the [Graph Visualizer](../../graphs/graph-visualizer.md) +interact with the generated Knowledge Graph using the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) directly from the ArangoDB Platform web interface. 1. In the ArangoDB Platform web interface, select the database you have previously used. diff --git a/site/content/3.12/data-science/graphrag/web-interface.md b/site/content/platform/data-science/graphrag/web-interface.md similarity index 98% rename from site/content/3.12/data-science/graphrag/web-interface.md rename to site/content/platform/data-science/graphrag/web-interface.md index b167f66616..275bbeb81a 100644 --- a/site/content/3.12/data-science/graphrag/web-interface.md +++ b/site/content/platform/data-science/graphrag/web-interface.md @@ -107,7 +107,7 @@ You can only import a single file, either in `.md` or `.txt` format. You can open and explore the Knowledge Graph that has been generated by clicking on the **Explore in visualizer** button. -For more information, see the [Graph Visualizer](../../graphs/graph-visualizer.md) documentation. +For more information, see the [Graph Visualizer](../../graph-intelligence/graph-visualizer.md) documentation. ## Configure the Retriever service diff --git a/site/content/3.12/data-science/integrations/_index.md b/site/content/platform/data-science/integrations/_index.md similarity index 100% rename from site/content/3.12/data-science/integrations/_index.md rename to site/content/platform/data-science/integrations/_index.md diff --git a/site/content/3.12/data-science/integrations/arangodb-cugraph-adapter.md b/site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-cugraph-adapter.md rename to site/content/platform/data-science/integrations/arangodb-cugraph-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-dgl-adapter.md b/site/content/platform/data-science/integrations/arangodb-dgl-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-dgl-adapter.md rename to site/content/platform/data-science/integrations/arangodb-dgl-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-networkx-adapter.md b/site/content/platform/data-science/integrations/arangodb-networkx-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-networkx-adapter.md rename to site/content/platform/data-science/integrations/arangodb-networkx-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-pyg-adapter.md b/site/content/platform/data-science/integrations/arangodb-pyg-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-pyg-adapter.md rename to site/content/platform/data-science/integrations/arangodb-pyg-adapter.md diff --git a/site/content/3.12/data-science/integrations/arangodb-rdf-adapter.md b/site/content/platform/data-science/integrations/arangodb-rdf-adapter.md similarity index 100% rename from site/content/3.12/data-science/integrations/arangodb-rdf-adapter.md rename to site/content/platform/data-science/integrations/arangodb-rdf-adapter.md diff --git a/site/content/3.12/data-science/integrations/langchain.md b/site/content/platform/data-science/integrations/langchain.md similarity index 100% rename from site/content/3.12/data-science/integrations/langchain.md rename to site/content/platform/data-science/integrations/langchain.md diff --git a/site/content/3.12/data-science/notebook-servers.md b/site/content/platform/data-science/notebook-servers.md similarity index 96% rename from site/content/3.12/data-science/notebook-servers.md rename to site/content/platform/data-science/notebook-servers.md index e84a9ebbb7..c9b8f67a05 100644 --- a/site/content/3.12/data-science/notebook-servers.md +++ b/site/content/platform/data-science/notebook-servers.md @@ -35,7 +35,7 @@ The notebooks are primarily focused on the following solutions: The ArangoDB Notebooks include the following: - Automatically connect to ArangoDB databases and GenAI platform services -- [Magic commands](../arangograph/notebooks.md#arangograph-magic-commands) +- [Magic commands](../../3.12/arangograph/notebooks.md#arangograph-magic-commands) that simplify database interactions - Example notebooks for learning diff --git a/site/content/platform/graph-intelligence/_index.md b/site/content/platform/graph-intelligence/_index.md new file mode 100644 index 0000000000..9d5ac11917 --- /dev/null +++ b/site/content/platform/graph-intelligence/_index.md @@ -0,0 +1,5 @@ +--- +title: Graph intelligence +menuTitle: Graph intelligence +weight: 10 +--- diff --git a/site/content/3.12/graphs/graph-analytics.md b/site/content/platform/graph-intelligence/graph-analytics.md similarity index 98% rename from site/content/3.12/graphs/graph-analytics.md rename to site/content/platform/graph-intelligence/graph-analytics.md index ee01851ba8..ef55508402 100644 --- a/site/content/3.12/graphs/graph-analytics.md +++ b/site/content/platform/graph-intelligence/graph-analytics.md @@ -1,7 +1,7 @@ --- title: Graph Analytics menuTitle: Graph Analytics -weight: 115 +weight: 5 description: | ArangoGraph offers Graph Analytics Engines to run graph algorithms on your data separately from your ArangoDB deployments @@ -64,22 +64,22 @@ Single server deployments using ArangoDB version 3.11 are not supported. The [Management API](#management-api) for deploying and deleting engines requires an ArangoGraph **API key**. See -[Generating an API Key](../arangograph/api/get-started.md#generating-an-api-key) +[Generating an API Key](../../3.12/arangograph/api/get-started.md#generating-an-api-key) on how to create one. You then need to generate an **access token** using the API key. See -[Authenticating with Oasisctl](../arangograph/api/get-started.md#authenticating-with-oasisctl) +[Authenticating with Oasisctl](../../3.12/arangograph/api/get-started.md#authenticating-with-oasisctl) on how to do so using `oasisctl login`. The [Engine API](#engine-api) uses one of two authentication methods, depending -on the [__auto login to database UI__](../arangograph/deployments/_index.md#auto-login-to-database-ui) +on the [__auto login to database UI__](../../3.12/arangograph/deployments/_index.md#auto-login-to-database-ui) setting in ArangoGraph: - **Enabled**: You can use an ArangoGraph access token created with an API key (see above), allowing you to use one token for both the Management API and the Engine API. - **Disabled**: You need use a JWT user token created from ArangoDB credentials. These session tokens need to be renewed every hour by default. See - [HTTP API Authentication](../develop/http-api/authentication.md#jwt-user-tokens) + [HTTP API Authentication](../../3.12/develop/http-api/authentication.md#jwt-user-tokens) for details. ## Management API @@ -246,7 +246,7 @@ Request and response payloads are JSON-encoded in the engine API. Import graph data from a database of the ArangoDB deployment. You can import named graphs as well as sets of vertex and edge collections (see -[Managed and unmanaged graphs](../graphs/_index.md#managed-and-unmanaged-graphs)). +[Managed and unmanaged graphs](../../3.12/graphs/_index.md#managed-and-unmanaged-graphs)). ```bash curl -H "Authorization: bearer $ADB_TOKEN" -XPOST -d '{"database":"_system","graph_name":"connectedComponentsGraph"}' "$ENGINE_URL/v1/loaddata" diff --git a/site/content/3.12/graphs/graph-visualizer.md b/site/content/platform/graph-intelligence/graph-visualizer.md similarity index 99% rename from site/content/3.12/graphs/graph-visualizer.md rename to site/content/platform/graph-intelligence/graph-visualizer.md index f3125d6d4d..76d34e383d 100644 --- a/site/content/3.12/graphs/graph-visualizer.md +++ b/site/content/platform/graph-intelligence/graph-visualizer.md @@ -1,7 +1,7 @@ --- title: Graph Visualizer menuTitle: Graph Visualizer -weight: 102 +weight: 10 description: >- Visually explore and interact with your ArangoDB graphs through an intuitive interface --- @@ -24,7 +24,7 @@ create new nodes (vertices) and relations (edges). {{< info >}} Graph creation is **not** performed within the Graph Visualizer. Graphs must be created in the **Management** section under **Graphs** of the second-level -navigation in the [web interface](../components/web-interface/graphs.md). Once +navigation in the [web interface](../../3.12/components/web-interface/graphs.md). Once created, you can select a graph from the list for exploration and visualization. {{< /info >}} diff --git a/site/content/3.12/release-notes/platform.md b/site/content/platform/release-notes.md similarity index 82% rename from site/content/3.12/release-notes/platform.md rename to site/content/platform/release-notes.md index 84ecec3536..22e37bf1ee 100644 --- a/site/content/3.12/release-notes/platform.md +++ b/site/content/platform/release-notes.md @@ -1,7 +1,7 @@ --- title: What's new in the ArangoDB Platform -menuTitle: ArangoDB Platform -weight: 5 +menuTitle: Release notes +weight: 50 description: >- Features and improvements in the ArangoDB Platform --- @@ -20,7 +20,7 @@ of the core ArangoDB database system along with graph-powered machine learning and GenAI capabilities as a single solution with a unified interface. Deploy the Platform on-premise or in the cloud on top of Kubernetes. -To get started, see [Self-host the ArangoDB Platform](../components/platform.md#self-host-the-arangodb-platform). +To get started, see [Self-host the ArangoDB Platform](about-the-platform/_index.md#self-host-the-arangodb-platform). ### GenAI Suite @@ -35,5 +35,5 @@ user-friendly interface seamlessly integrated into the ArangoDB Platform web int - MLflow integration - Graph Visualizer -To learn more, see the [GenAI Suite](../data-science/_index.md#genai-suite) +To learn more, see the [GenAI Suite](data-science/_index.md#genai-suite) documentation. diff --git a/site/data/versions.yaml b/site/data/versions.yaml index f58386be72..f3da90f719 100644 --- a/site/data/versions.yaml +++ b/site/data/versions.yaml @@ -1,3 +1,8 @@ +- name: "platform" + version: "0.1.0" + alias: "platform" + deprecated: false + - name: "3.13" version: "3.13.0" alias: "devel" diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index add77a0252..520418c334 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -6,7 +6,9 @@ {{- $page.Store.Set "versionShort" $version.name }} {{- $page.Store.Set "alias" $version.alias }} {{- $page.Store.Set "deprecated" $version.deprecated }} - {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} + {{- if ne $version.name "platform" }} + {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} + {{- end }} {{- end }} {{- end }} diff --git a/toolchain/arangoproxy/internal/service/service.go b/toolchain/arangoproxy/internal/service/service.go index b9f3b6caab..6f525ca79c 100644 --- a/toolchain/arangoproxy/internal/service/service.go +++ b/toolchain/arangoproxy/internal/service/service.go @@ -226,6 +226,9 @@ func (service OpenapiService) ValidateOpenapiGlobalSpec() { models.Logger.Summary("

OPENAPI

") for _, version := range Versions { + if version.Name == "platform" { + continue + } wg.Add(1) go service.ValidateFile(version.Name, &wg) } From 55dfbbf3bb1467e04058bab1b2695ac38f621f2e Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Fri, 8 Aug 2025 14:45:17 +0200 Subject: [PATCH 2/6] WIP: Don't attempt to navigate to path but different version between Platform and Core docs --- site/themes/arangodb-docs-theme/static/js/theme.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index cf6e186757..208f8e9d66 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -466,8 +466,13 @@ function changeVersion() { changeVersion(); } - - var newUrl = window.location.pathname.replace(getVersionFromURL(), getVersionInfo(newVersion).alias) + window.location.hash; + var currentVersion = getVersionFromURL(); + var newVersionAlias = getVersionInfo(newVersion).alias; + if (currentVersion == "platform" || newVersion == "platform") { + var newUrl = window.location.pathname = "/" + newVersionAlias + "/"; + } else { + var newUrl = window.location.pathname.replace(currentVersion, newVersionAlias) + window.location.hash; + } updateHistory(newUrl); } From d7a9917e98d35c3710ffe4f73357fc9c12c2a036 Mon Sep 17 00:00:00 2001 From: Simran Spiller Date: Thu, 4 Sep 2025 14:26:11 +0200 Subject: [PATCH 3/6] WIP: Navigation --- site/config/_default/config.yaml | 6 + .../layouts/_default/home.navigation.html | 13 +- .../layouts/partials/meta.html | 6 - .../layouts/partials/shortcodes/version.html | 3 +- .../layouts/partials/version-selector.html | 4 + .../arangodb-docs-theme/static/js/theme.js | 448 ++++++++++++------ 6 files changed, 314 insertions(+), 166 deletions(-) diff --git a/site/config/_default/config.yaml b/site/config/_default/config.yaml index 67c2321b61..e2b7760a81 100644 --- a/site/config/_default/config.yaml +++ b/site/config/_default/config.yaml @@ -19,6 +19,12 @@ module: - source: "static" target: "static" + - source: content/3.12 + target: content/stable + + - source: content/3.13 + target: content/devel + # Version folders can be ignored temporarily for faster local builds # of a single version (here: 3.12) # - excludeFiles: diff --git a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html index a1ca735f4d..55ad423ade 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/home.navigation.html @@ -3,14 +3,11 @@
    - {{- range .Site.Sections.ByWeight }} - {{/* version folders */}} - {{- if ne .Type "hooks" }} -
      {{/* TODO: hide non-stable versions by default? */}} - {{- template "section-tree-nav" . }} -
    - {{- end }} - {{- end }} + {{- range .Site.Sections.ByWeight }} +
      {{/* TODO: hide non-stable versions by default? */}} + {{- template "section-tree-nav" . }} +
    + {{- end }}
diff --git a/site/themes/arangodb-docs-theme/layouts/partials/meta.html b/site/themes/arangodb-docs-theme/layouts/partials/meta.html index 67aadd8e32..0a1a0e646f 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/meta.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/meta.html @@ -25,9 +25,3 @@ {{- end }} {{- end }} -{{- if or (eq .Type "hooks") (.IsHome) }} - {{- $redirectPath := printf "/%s" (index (where site.Data.versions "alias" "stable") 0).alias }} - -{{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html index 520418c334..c82297d40e 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/shortcodes/version.html @@ -1,7 +1,7 @@ {{- $page := .page }} {{- $versions := site.Data.versions }} {{- range $i, $version := $versions }} - {{- if eq $page.Type $version.name }} + {{- if or (eq $page.Type $version.name) (eq $page.Type $version.alias) }} {{- $page.Store.Set "version" $version.version }} {{- $page.Store.Set "versionShort" $version.name }} {{- $page.Store.Set "alias" $version.alias }} @@ -9,6 +9,7 @@ {{- if ne $version.name "platform" }} {{- template "checkVersionIsInDevelopment" dict "page" $page "pageVersion" $version.name "versions" $versions }} {{- end }} + {{- break }} {{- end }} {{- end }} diff --git a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html index 71a3db016c..918cbf161c 100644 --- a/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html +++ b/site/themes/arangodb-docs-theme/layouts/partials/version-selector.html @@ -2,6 +2,10 @@ diff --git a/site/themes/arangodb-docs-theme/static/js/theme.js b/site/themes/arangodb-docs-theme/static/js/theme.js index da7da401c2..5efc2c16a2 100644 --- a/site/themes/arangodb-docs-theme/static/js/theme.js +++ b/site/themes/arangodb-docs-theme/static/js/theme.js @@ -9,7 +9,16 @@ function toggleMenuItem(event) { if (listItem.classList.contains("leaf")) return; listItem.querySelector("label").classList.toggle("open"); - $(listItem.querySelector(".submenu")).slideToggle(); + slideToggle(listItem.querySelector(".submenu")); +} + +// Vanilla JS slideToggle implementation +function slideToggle(element) { + if (element.style.display === "none" || element.style.display === "") { + element.style.display = "block"; + } else { + element.style.display = "none"; + } } function menuToggleClick(event) { @@ -18,21 +27,17 @@ function menuToggleClick(event) { toggleMenuItem(event); } -function menuEntryClickListener() { - $('.menu-link').on("click", function(event) { - event.preventDefault(); - if (event.target.pathname == window.location.pathname) { - toggleMenuItem(event) - return - } - updateHistory(event.target.getAttribute('href')) - $('.sidebar.mobile').removeClass("active") +function renderVersion() { + var version = getVersionFromURL(); - }); -} + var versionSelector = document.querySelector(".arangodb-version"); + if (!version || version === "platform") { + versionSelector.style.display = "none"; + } else { + versionSelector.style.display = "block"; + } -function renderVersion() { - var version = localStorage.getItem('docs-version'); + version = "version-" + version.replace('.', '_'); var menuEntry = document.getElementsByClassName('version-menu'); for ( let entry of menuEntry ) { if (entry.classList.contains(version)) { @@ -44,38 +49,74 @@ function renderVersion() { } function closeAllEntries() { - $(".dd-item.active").removeClass("active"); - $(".dd-item > label.open").removeClass("open"); - $(".submenu").hide(); - $(".dd-item.parent").removeClass("parent"); + document.querySelectorAll(".dd-item.active").forEach(el => el.classList.remove("active")); + document.querySelectorAll(".dd-item > label.open").forEach(el => el.classList.remove("open")); + document.querySelectorAll(".submenu").forEach(el => el.style.display = "none"); + document.querySelectorAll(".dd-item.parent").forEach(el => el.classList.remove("parent")); } function loadMenu(url) { closeAllEntries(); var version = getVersionFromURL() - $('.version-menu.'+version).find('a').each(function() { - $(this).attr("href", function(index, old) { - return old.replace(old.split("/")[1], version) - }); + document.querySelectorAll('.version-menu.version-' + version.replace('.', '_') + ' a').forEach(function(link) { + const oldHref = link.getAttribute('href'); + const newHref = oldHref.replace(oldHref.split("/")[1], version); + link.setAttribute('href', newHref); }); - var current = $('.dd-item > a[href="' + url + '"]').parent(); - current.addClass("active"); - while (current.length > 0 && current.prop("class") != "topics collapsible-menu") { - if (current.prop("tagName") == "LI") { - current.addClass("parent"); - current.children("label:first").addClass("open"); - current.children(".submenu:first").show(); + // Try to find the menu item - first try exact match, then try without hash + console.log('loadMenu: Looking for URL:', url); + var current = document.querySelector('.dd-item > a[href="' + url + '"]'); + console.log('loadMenu: Exact match found:', current); + + if (!current && url.includes('#')) { + // Try without the hash fragment + const urlWithoutHash = url.split('#')[0]; + console.log('loadMenu: Trying without hash:', urlWithoutHash); + current = document.querySelector('.dd-item > a[href="' + urlWithoutHash + '"]'); + console.log('loadMenu: Without hash found:', current); + } + if (!current) { + // Try to find by pathname only (in case of different origins or protocols) + const pathname = new URL(url, window.location.origin).pathname; + console.log('loadMenu: Trying pathname only:', pathname); + current = document.querySelector('.dd-item > a[href="' + pathname + '"]'); + console.log('loadMenu: Pathname match found:', current); + } + + if (current) { + console.log('loadMenu: Found menu item, expanding parents'); + current = current.parentNode; + current.classList.add("active"); + let expandedCount = 0; + while (current && !current.classList.contains("topics") && !current.classList.contains("collapsible-menu")) { + if (current.tagName === "LI") { + console.log('loadMenu: Expanding parent LI:', current); + current.classList.add("parent"); + const label = current.querySelector("label"); + if (label) { + label.classList.add("open"); + console.log('loadMenu: Added open class to label'); + } + const submenu = current.querySelector(".submenu"); + if (submenu) { + submenu.style.display = "block"; + expandedCount++; + console.log('loadMenu: Set submenu display to block, count:', expandedCount); + } + } + current = current.parentNode; } - - current = current.parent(); + console.log('loadMenu: Total submenus expanded:', expandedCount); + } else { + console.log('loadMenu: No menu item found for URL:', url); } } function showSidebarHandler() { - $(".sidebar").toggleClass("active"); - } + document.querySelectorAll(".sidebar").forEach(el => el.classList.toggle("active")); +} /* @@ -96,6 +137,16 @@ function replaceArticle(href, newDoc) { var re = /(.*?)<\/title>/; var match = re.exec(newDoc); + /* TODO: Replace with DOMParser? + const tempDiv = document.createElement('div'); + tempDiv.innerHTML = newDoc; + const newContainer = tempDiv.querySelector(".container-main"); + const currentContainer = document.querySelector(".container-main"); + + if (newContainer && currentContainer) { + currentContainer.parentNode.replaceChild(newContainer, currentContainer); + } + */ $(".container-main").replaceWith($(".container-main", newDoc)); if (match) { document.title = decodeHtmlEntities(match[1]); @@ -108,7 +159,7 @@ function replaceArticle(href, newDoc) { function updateHistory(urlPath) { - if (urlPath == window.location.pathname + window.location.hash) { + if (!urlPath || urlPath == window.location.pathname + window.location.hash) { return } @@ -131,21 +182,22 @@ function styleImages() { } function loadNotFoundPage() { - $.get({ - url: window.location.origin + "/notfound.html", - success: function(newDoc) { + fetch(window.location.origin + "/notfound.html") + .then(response => response.text()) + .then(newDoc => { replaceArticle("", newDoc) initArticle(""); return true; - }, - }); + }) + .catch(error => console.error('Error loading not found page:', error)); } function loadPage(target) { var href = target; - if (getVersionInfo(getVersionFromURL()) == undefined) { + var versionUrl = getVersionFromURL(); + if (versionUrl !== "platform" && getVersionInfo(versionUrl) == undefined) { loadNotFoundPage(); return; } @@ -155,15 +207,16 @@ function loadPage(target) { loadMenu(new URL(href).pathname); var version = getVersionInfo(getVersionFromURL()).name; href = href.replace(getVersionFromURL(), version); - var xhr = new XMLHttpRequest(); - $.get({ - xhr: function() { return xhr; }, - url: href, - success: function(newDoc) { - if (xhr.responseURL && href.replace(/#.*/, "") !== xhr.responseURL) { - updateHistory(xhr.responseURL.replace(version, getVersionFromURL())); + fetch(href) + .then(response => { + if (response.url && href.replace(/#.*/, "") !== response.url) { + updateHistory(response.url.replace(version, getVersionFromURL())); return; } + return response.text(); + }) + .then(newDoc => { + if (!newDoc) return; if (!newDoc.includes("<body>")) { // https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/alias.html var match = /<title>(.*?)<\/title>/.exec(newDoc)[1]; @@ -174,35 +227,10 @@ function loadPage(target) { scrollToFragment(); initArticle(href); return true; - }, - error: function(newDoc) { + }) + .catch(error => { loadNotFoundPage(href) - }, - }); -} - -function internalLinkListener() { - $('.link').on("click", function(event) { - if (event.target.getAttribute("target")) { - // external link - return; - } - event.preventDefault(); - updateHistory(event.target.getAttribute('href')) - }); - - $('.card-link').on('click', function(event) { - event.preventDefault(); - updateHistory(this.getAttribute('href')) - }); -} - -function codeShowMoreListener() { - $('article').on('click', '.code-show-more', function(event) { - var t = $(event.target) - t.toggleClass("expanded") - t.prev().toggleClass("expanded") - }); + }); } function trackPageView(title, urlPath) { @@ -222,25 +250,24 @@ function initArticle(url) { restoreTabSelections(); initCopyToClipboard(); addShowMoreButton('article'); - initClickHandlers(); + hideEmptyOpenapiDiv(); goToTop(); styleImages(); - internalLinkListener(); - codeShowMoreListener(); - aliazeLinks('article', 'a.link:not([target]), a.card-link, a.header-link'); - aliazeLinks('.breadcrumbs', 'a') + //aliazeLinks('article', 'a.link:not([target]), a.card-link, a.header-link'); + //aliazeLinks('.breadcrumbs', 'a') + linkToVersionedContent(); } -$(window).on('popstate', function (e) { - var state = e.originalEvent.state; +window.addEventListener('popstate', function (e) { + var state = e.state; if (state !== null) { loadPage(window.location.href); } }); -$(window).on('hashchange', function (e) { +window.addEventListener('hashchange', function (e) { window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); scrollToFragment() }); @@ -273,7 +300,7 @@ function tocHiglighter() { if (window.innerWidth <= 768) return; var anchors = getAllAnchors(); - var scrollTop = $(document).scrollTop(); + var scrollTop = window.pageYOffset || document.documentElement.scrollTop; anchors.forEach(anchor => { const rect = anchor.getBoundingClientRect(); @@ -303,7 +330,7 @@ function throttle(callback, limit) { } } -$(window).scroll(throttle(function() { +window.addEventListener('scroll', throttle(function() { tocHiglighter(); backToTopButton(); }, 250)); @@ -314,17 +341,28 @@ $(window).scroll(throttle(function() { */ function switchTab(tabGroup, tabId, event) { - var tabs = jQuery(".tab-panel").has("[data-tab-group='"+tabGroup+"'][data-tab-item='"+tabId+"']"); - var allTabItems = tabs.find("[data-tab-group='"+tabGroup+"']"); - var targetTabItems = tabs.find("[data-tab-group='"+tabGroup+"'][data-tab-item='"+tabId+"']"); + var tabs = document.querySelectorAll(".tab-panel"); + var allTabItems = []; + var targetTabItems = []; + + tabs.forEach(tab => { + const groupItems = tab.querySelectorAll("[data-tab-group='" + tabGroup + "']"); + const targetItems = tab.querySelectorAll("[data-tab-group='" + tabGroup + "'][data-tab-item='" + tabId + "']"); + if (targetItems.length > 0) { + allTabItems.push(...groupItems); + targetTabItems.push(...targetItems); + } + }); + if (event) { var clickedTab = event.target; var topBefore = clickedTab.getBoundingClientRect().top; } - allTabItems.removeClass("selected"); - targetTabItems.addClass("selected"); - addShowMoreButton(targetTabItems); + allTabItems.forEach(item => item.classList.remove("selected")); + targetTabItems.forEach(item => item.classList.add("selected")); + targetTabItems.forEach(item => addShowMoreButton(item)); + if (event) { // Keep relative offset of tab in viewport to avoid jumping content var topAfter = clickedTab.getBoundingClientRect().top; @@ -394,15 +432,14 @@ function aliazeLinks(parentSelector, linkSelector) { nameAliasMapping[v.name] = v.alias; } - $(parentSelector).find(linkSelector).each(function() { - $(this).attr("href", function(index, old) { - if (old == undefined || old.startsWith("#")) return old; - let splitLink = old.split("/"); - let linkVersion = splitLink[1]; - let alias = nameAliasMapping[linkVersion] || linkVersion; - splitLink.splice(1, 1, alias); - return splitLink.join("/"); - }); + document.querySelectorAll(parentSelector + ' ' + linkSelector).forEach(function(link) { + const old = link.getAttribute("href"); + if (old == undefined || old.startsWith("#")) return; + let splitLink = old.split("/"); + let linkVersion = splitLink[1]; + let alias = nameAliasMapping[linkVersion] || linkVersion; + splitLink.splice(1, 1, alias); + link.setAttribute("href", splitLink.join("/")); }); } @@ -414,45 +451,44 @@ function setVersionSelector(version) { } } -function getCurrentVersion() { - var urlVersion = stableVersion.name +function getCurrentVersion(href) { + var newVersion = stableVersion.name if (window.location.pathname.split("/").length > 0) { - newVersion = getVersionFromURL() - - if (getVersionInfo(newVersion) == undefined) { + newVersion = getVersionFromURL(); + if (newVersion === "platform") { + return; + } + if ((href === "" || href === "/") && getVersionInfo(newVersion) == undefined) { loadNotFoundPage(); return; } - - urlVersion = getVersionInfo(newVersion).name } - localStorage.setItem('docs-version', urlVersion); - setVersionSelector(urlVersion); + localStorage.setItem('docs-version', newVersion); + setVersionSelector(newVersion); } function changeVersion() { - var oldVersion = localStorage.getItem('docs-version'); var versionSelector = document.querySelector(".arangodb-version"); - var newVersion = versionSelector.options[versionSelector.selectedIndex].value; + var newVersion = versionSelector.options[versionSelector.selectedIndex].value; try { - localStorage.setItem('docs-version', newVersion); - renderVersion(); - window.setupDocSearch(newVersion); + localStorage.setItem('docs-version', newVersion); + renderVersion(); + window.setupDocSearch(newVersion); } catch(exception) { console.log({exception}) - changeVersion(); + changeVersion(); } var currentVersion = getVersionFromURL(); - var newVersionAlias = getVersionInfo(newVersion).alias; + //var newVersionAlias = getVersionInfo(newVersion).alias; if (currentVersion == "platform" || newVersion == "platform") { - var newUrl = window.location.pathname = "/" + newVersionAlias + "/"; + var newUrl = window.location.pathname = "/" + newVersion + "/"; } else { - var newUrl = window.location.pathname.replace(currentVersion, newVersionAlias) + window.location.hash; + var newUrl = window.location.pathname.replace(currentVersion, newVersion) + window.location.hash; } updateHistory(newUrl); } @@ -466,8 +502,9 @@ function changeVersion() { function hideEmptyOpenapiDiv() { var lists = document.getElementsByClassName("openapi-parameters") for (let list of lists) { - if ($(list).find(".openapi-table").text().trim() == "") { - $(list).addClass("hidden"); + const table = list.querySelector(".openapi-table"); + if (table && table.textContent.trim() == "") { + list.classList.add("hidden"); } } } @@ -492,23 +529,6 @@ function hideEmptyOpenapiDiv() { } } -function initClickHandlers() { - hideEmptyOpenapiDiv(); - - $(".openapi-prop").on("click", function(event) { - if (this === event.target) { - $(event.target).toggleClass("collapsed"); - $(event.target).find('.openapi-prop-content').first().toggleClass("hidden"); - } - }); - - $(".openapi-table.show-children").on("click", function(event) { - $(event.target).toggleClass("collapsed"); - $(event.target).next(".openapi-table").toggleClass("hidden"); - }); - -} - /* Common custom functions @@ -548,17 +568,144 @@ function copyURI(evt) { } function toggleExpandShortcode(event) { - var t = $(event.target.closest("a")); - if (t.parent('.expand-expanded.expand-marked').length) { - t.next().css('display','none'); - } else if (t.parent('.expand-marked').length) { - t.next().css('display','block') + var t = event.target.closest("a"); + var parent = t.parentNode; + if (parent.classList.contains('expand-expanded') && parent.classList.contains('expand-marked')) { + t.nextElementSibling.style.display = 'none'; + } else if (parent.classList.contains('expand-marked')) { + t.nextElementSibling.style.display = 'block'; } else { - t.next('.expand-content').slideToggle(100); + const nextElement = t.querySelector('.expand-content') || t.nextElementSibling; + if (nextElement) { + slideToggle(nextElement); + } } - t.parent().toggleClass('expand-expanded'); + parent.classList.toggle('expand-expanded'); } +function linkToVersionedContent() { + const currentVersion = getVersionFromURL(); + if (currentVersion !== "platform") return; + document.querySelectorAll("a.link:not([target])").forEach(el => { + const matches = el.getAttribute("href").match(/^\/(\d\.\d{1,2})(\/.*)/); + const previousVersion = localStorage.getItem('docs-version') || "stable"; + if (matches && matches.length > 2 && previousVersion) { + el.setAttribute("href", "/" + previousVersion + matches[2]); + } + }); +} + +// Central click handler using event delegation +function handleDocumentClick(event) { + const target = event.target; + const closest = (selector) => target.closest(selector); + + // Menu link clicks + if (closest('.menu-link')) { + event.preventDefault(); + const menuLink = closest('.menu-link'); + const href = menuLink.getAttribute('href'); + if (href) { + updateHistory(href); + } + document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); + return; + } + + // Internal link clicks (.link) + const linkElement = closest('.link'); + if (linkElement && !linkElement.getAttribute("target")) { + event.preventDefault(); + let href = linkElement.getAttribute('href'); + if (href) { + updateHistory(href); + } + return; + } + + // Card link clicks + if (closest('.card-link')) { + event.preventDefault(); + const cardLink = closest('.card-link'); + const href = cardLink.getAttribute('href'); + if (href) { + updateHistory(href); + } + return; + } + + // Code show more button clicks + if (closest('.code-show-more')) { + target.classList.toggle("expanded"); + const prevElement = target.previousElementSibling; + if (prevElement) prevElement.classList.toggle("expanded"); + return; + } + + // OpenAPI property clicks + if (closest('.openapi-prop') && target === closest('.openapi-prop')) { + target.classList.toggle("collapsed"); + const content = target.querySelector('.openapi-prop-content'); + if (content) content.classList.toggle("hidden"); + return; + } + + // OpenAPI table show children clicks + if (closest('.openapi-table.show-children')) { + target.classList.toggle("collapsed"); + const nextTable = target.nextElementSibling; + if (nextTable && nextTable.classList.contains('openapi-table')) { + nextTable.classList.toggle("hidden"); + } + return; + } + + // Menu toggle clicks (labels) + if (target.tagName === "LABEL" && closest('.sidebar')) { + event.preventDefault(); + toggleMenuItem(event); + return; + } + + // Tab clicks + if (target.hasAttribute('data-tab-group') && target.hasAttribute('data-tab-item')) { + event.preventDefault(); + switchTab(target.getAttribute('data-tab-group'), target.getAttribute('data-tab-item'), event); + return; + } + + // Back to top button + if (closest('.back-to-top')) { + event.preventDefault(); + goToTop(event); + return; + } + + // Copy URI clicks + if (closest('.header-link')) { + copyURI(event); + return; + } + + // Expand shortcode clicks + if (closest('.expand-label')) { + event.preventDefault(); + toggleExpandShortcode(event); + return; + } + + // Homepage clicks + if (closest('.home-link')) { + goToHomepage(event); + return; + } + + // Sidebar toggle + if (closest('.sidebar-toggle')) { + showSidebarHandler(); + return; + } +} window.onload = () => { window.history.pushState("popstate", "ArangoDB Documentation", window.location.href); @@ -571,7 +718,6 @@ window.onload = () => { iframe.replaceWith(content); getCurrentVersion(window.location.href); - menuEntryClickListener(); renderVersion(); loadPage(window.location.href) @@ -579,17 +725,17 @@ window.onload = () => { window.setupDocSearch(getVersionInfo(getVersionFromURL()).name); } else { window.setupDocSearch(stableVersion); - } - content.addEventListener("click", menuToggleClick); - + // Add central click handler to document + document.addEventListener("click", handleDocumentClick); var isMobile = window.innerWidth <= 768; if (isMobile) { - $('.sidebar').addClass("mobile"); - $('.sidebar.mobile').removeClass("active"); + document.querySelectorAll('.sidebar').forEach(el => el.classList.add("mobile")); + document.querySelectorAll('.sidebar.mobile').forEach(el => el.classList.remove("active")); } - $('.page-wrapper').css("opacity", "1") + const pageWrapper = document.querySelector('.page-wrapper'); + if (pageWrapper) pageWrapper.style.opacity = "1"; } \ No newline at end of file From 1085cbdb904d77e14e32b9f3f81aa64b933c0cf6 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 14:26:32 +0200 Subject: [PATCH 4/6] Fix link --- site/content/platform/graph-intelligence/graph-analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/platform/graph-intelligence/graph-analytics.md b/site/content/platform/graph-intelligence/graph-analytics.md index a3d013b046..2c273b0c38 100644 --- a/site/content/platform/graph-intelligence/graph-analytics.md +++ b/site/content/platform/graph-intelligence/graph-analytics.md @@ -19,7 +19,7 @@ and network flow analysis. ArangoDB offers a feature for running algorithms on your graph data, called Graph Analytics Engines (GAEs). It is available on request for the [ArangoGraph Insights Platform](https://dashboard.arangodb.cloud/home?utm_source=docs&utm_medium=cluster_pages&utm_campaign=docs_traffic) -and included in the [ArangoDB Platform](../components/platform.md). +and included in the [ArangoDB Platform](../about-the-platform/_index.md). Key features: From 599f2ceb2f8ad55a044bdf692539cb3e813d2a80 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 14:26:42 +0200 Subject: [PATCH 5/6] Test: Links between Platform and Core --- site/content/3.12/aql/_index.md | 2 ++ site/content/3.13/aql/_index.md | 2 ++ site/content/platform/data-science/_index.md | 2 ++ 3 files changed, 6 insertions(+) diff --git a/site/content/3.12/aql/_index.md b/site/content/3.12/aql/_index.md index 688215f3dc..befe676097 100644 --- a/site/content/3.12/aql/_index.md +++ b/site/content/3.12/aql/_index.md @@ -6,6 +6,8 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- +- [Link to Platform](../../platform/data-science/_index.md) + AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be human-readable and therefore uses keywords from the English language. Another diff --git a/site/content/3.13/aql/_index.md b/site/content/3.13/aql/_index.md index 688215f3dc..befe676097 100644 --- a/site/content/3.13/aql/_index.md +++ b/site/content/3.13/aql/_index.md @@ -6,6 +6,8 @@ description: >- The ArangoDB Query Language (AQL) lets you store, retrieve, and modify data in various ways in ArangoDB --- +- [Link to Platform](../../platform/data-science/_index.md) + AQL is mainly a declarative language, meaning that a query expresses what result should be achieved but not how it should be achieved. AQL aims to be human-readable and therefore uses keywords from the English language. Another diff --git a/site/content/platform/data-science/_index.md b/site/content/platform/data-science/_index.md index ec24ec73ea..485687e4d7 100644 --- a/site/content/platform/data-science/_index.md +++ b/site/content/platform/data-science/_index.md @@ -8,6 +8,8 @@ description: >- aliases: - data-science/overview --- +- [Link to 3.12](../../3.12/aql/_index.md) + {{< tag "ArangoDB Platform" >}} {{< tip >}} From 4237c0c4d9757acf95ee81fe6699bc0263cdae98 Mon Sep 17 00:00:00 2001 From: Simran Spiller <simran@arangodb.com> Date: Thu, 4 Sep 2025 15:40:57 +0200 Subject: [PATCH 6/6] Try to exclude aliases in link check --- .../layouts/_default/_markup/render-link.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html index 74b4be1301..70df3678d4 100644 --- a/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html +++ b/site/themes/arangodb-docs-theme/layouts/_default/_markup/render-link.html @@ -41,7 +41,7 @@ {{- end }} {{- $permalink = printf "%s%s" $page.RelPermalink $fragment }} {{- else }} - {{- if ne $currentPage "/" }} + {{- if and (ne $currentPage "/") (not (or (strings.HasPrefix $currentPage "/stable/") (strings.HasPrefix $currentPage "/devel/"))) }} {{- if site.Params.failOnBrokenLinks }} {{- errorf "<error code=1> Broken link '%v' found in %s </error><br>" $link $currentFile }} {{- else }}