graphdb-workbench
Version:
The web application for GraphDB APIs
1 lines • 1.37 kB
JavaScript
import{NavbarItemModel,NavbarModel}from"./navbar-model";import{UriUtil}from"../../../../../api/dist/ontotext-workbench-api";import{LoggerProvider}from"../../services/logger-provider";const logger=LoggerProvider.logger;export class NavbarService{static map(e,t){const o=new NavbarModel;return NavbarService.setTopLevelMenuItems(e,o,t),NavbarService.setSubmenuItems(e,o,t),o.sorted()}static setTopLevelMenuItems(e,t,o){e.forEach(e=>{e.items.filter(e=>!e.parent&&e.shouldShow).forEach(e=>{t.hasParent(e.label)?logger.warn("Doubled parent definition: ",e):t.addItem(this.toMenuItemModel(e,void 0,o,e.children))})})}static setSubmenuItems(e,t,o){e.forEach(e=>{e.items.filter(e=>e.parent&&e.shouldShow).forEach(e=>{const r=t.getTopLevelItem(e.parent);null==r||r.addChildren(this.toMenuItemModel(e,r,o,e.children))})})}static toMenuItemModel(e,t,o,r=[]){let l;e.documentationHref&&(l=UriUtil.resolveDocumentationUrl(null==o?void 0:o.shortVersion,e.documentationHref));const n=new NavbarItemModel({label:e.label,labelKey:e.labelKey,href:l||e.href,documentationHref:e.documentationHref,hrefFun:e.hrefFun,order:e.order,role:e.role,editions:e.editions,icon:e.icon,guideSelector:e.guideSelector,hasParent:!!t,parentModel:t,parent:e.parent,selected:!1,shouldShow:e.shouldShow,testSelector:e.testSelector}),a=r.map(e=>this.toMenuItemModel(e,n,o,e.children));return n.addChildren(...a),n}}