From 69ad6f82bc3dec6508705139251165558cdcf9af Mon Sep 17 00:00:00 2001 From: Krzysztof Romanowski Date: Thu, 12 Nov 2020 19:51:38 +0100 Subject: [PATCH 1/2] Navigation displays only flatten package structure Classes, methods etc are not longer added to navigation --- .../src/dotty/dokka/site/processors.scala | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/scala3doc/src/dotty/dokka/site/processors.scala b/scala3doc/src/dotty/dokka/site/processors.scala index fcccd9f02f4f..f431b420960d 100644 --- a/scala3doc/src/dotty/dokka/site/processors.scala +++ b/scala3doc/src/dotty/dokka/site/processors.scala @@ -7,10 +7,13 @@ import java.nio.file.FileVisitOption import org.jetbrains.dokka.base.renderers.html.{NavigationNode, NavigationPage} import org.jetbrains.dokka.model.Documentable +import org.jetbrains.dokka.model.DPackage +import org.jetbrains.dokka.model.DModule import org.jetbrains.dokka.pages._ import org.jetbrains.dokka.transformers.pages.PageTransformer import scala.collection.JavaConverters._ +import dotty.dokka.model.api._ abstract class BaseStaticSiteProcessor(staticSiteContext: Option[StaticSiteContext]) extends PageTransformer: final override def invoke(input: RootPageNode): RootPageNode = staticSiteContext.fold(input)(transform(input, _)) @@ -118,13 +121,27 @@ class RootIndexPageCreator(ctx: Option[StaticSiteContext]) extends BaseStaticSit val (contentNodes, nonContent) = input.getChildren.asScala.partition { _.isInstanceOf[ContentNode] } val (navigations, rest) = nonContent.partition { _.isInstanceOf[NavigationPage] } val modifiedNavigation = navigations.map { it => - val root = it.asInstanceOf[NavigationPage].getRoot - val api = root.getChildren.asScala.filter(_.getDri == apiPageDRI) + val sourceSets = it.asInstanceOf[NavigationPage].getRoot.getSourceSets + def flatMapPackages(pn: PageNode): List[NavigationNode] = + def processChildren = pn.getChildren.asScala.flatMap(flatMapPackages).toList + pn match + case cp: ContentPage => cp.getDocumentable match + case null => + processChildren + case p: DPackage => + List(new NavigationNode(p.getName, p.getDri, sourceSets, JList())) ++ processChildren + case other => + Nil + case _ => + Nil + + val packagesNavigation = input.getChildren.asScala.flatMap(flatMapPackages).sortBy(_.getName) + val api = new NavigationNode("API", apiPageDRI, sourceSets, packagesNavigation.asJava) def toNavigationNode(page: StaticPageNode): NavigationNode = NavigationNode( page.title(), page.getDri.asScala.head, - root.getSourceSets, + sourceSets, page.getChildren.asScala.collect { case p: StaticPageNode => toNavigationNode(p)}.asJava ) @@ -132,8 +149,8 @@ class RootIndexPageCreator(ctx: Option[StaticSiteContext]) extends BaseStaticSit new NavigationNode( input.getName, docsRootDRI, - root.getSourceSets, - (ctx.mainPages.map(toNavigationNode) ++ api).asJava + sourceSets, + (ctx.mainPages.map(toNavigationNode) ++ Seq(api)).asJava ) ) } From a9b7cd66185e07bde6b9e77f0e43e34de8154768 Mon Sep 17 00:00:00 2001 From: Krzysztof Romanowski Date: Thu, 19 Nov 2020 13:54:20 +0100 Subject: [PATCH 2/2] Fix revealing navigation --- .../resources/dotty_res/scripts/fast-navigation-loader.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scala3doc/resources/dotty_res/scripts/fast-navigation-loader.js b/scala3doc/resources/dotty_res/scripts/fast-navigation-loader.js index c52b097635eb..3b9c5b9b9b57 100644 --- a/scala3doc/resources/dotty_res/scripts/fast-navigation-loader.js +++ b/scala3doc/resources/dotty_res/scripts/fast-navigation-loader.js @@ -28,10 +28,11 @@ window.addEventListener('DOMContentLoaded', () => { }) revealNavigationForCurrentPage = () => { - let pageId = document.getElementById("content").attributes["pageIds"].value.toString(); + let pageIdParts = document.getElementById("content").attributes["pageIds"].value.toString().split("/") let parts = document.querySelectorAll(".sideMenuPart"); let found = 0; do { + let pageId = pageIdParts.join("/") parts.forEach(part => { if (part.attributes['pageId'].value.indexOf(pageId) !== -1 && found === 0) { found = 1; @@ -42,8 +43,8 @@ revealNavigationForCurrentPage = () => { revealParents(part) } }); - pageId = pageId.substring(0, pageId.lastIndexOf("/")) - } while (pageId.indexOf("/") !== -1 && found === 0) + pageIdParts.pop() + } while (pageIdParts.length > 0) }; revealParents = (part) => {