39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { entities } from '../../../wailsjs/wailsjs/go/models'
 | 
						|
import { SidebarGroup } from './types'
 | 
						|
 | 
						|
const getNavigationProps = (documents: entities.Document[], groups: entities.Group[]) : SidebarGroup[] => {
 | 
						|
  const groupsWithDocuments = groups.map(g => {
 | 
						|
    const childrenDocuments = documents
 | 
						|
      .filter(d => d.groupId === g.id)
 | 
						|
      .map(d => ({
 | 
						|
        id: d.id,
 | 
						|
        name: d.name,
 | 
						|
        areas: d.areas?.map(a => ({ id: a.id, name: a.name, order: a.order }))//.sort((a, b) => a.order - b.order)
 | 
						|
      }))
 | 
						|
 | 
						|
    return {
 | 
						|
      id: g.id,
 | 
						|
      name: g.name,
 | 
						|
      documents: childrenDocuments
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  const documentsWithoutGroup = documents
 | 
						|
    .filter(d => !d.groupId || d.groupId === 'Uncategorized')
 | 
						|
    .map(d => ({
 | 
						|
      id: d.id,
 | 
						|
      name: d.name,
 | 
						|
      areas: d.areas?.map(a => ({ id: a.id, name: a.name, order: a.order }))//.sort((a, b) => a.order - b.order)
 | 
						|
    }))
 | 
						|
 | 
						|
  return [
 | 
						|
    ...groupsWithDocuments,
 | 
						|
    {
 | 
						|
      id: '',
 | 
						|
      name: 'Uncategorized',
 | 
						|
      documents: documentsWithoutGroup
 | 
						|
    }
 | 
						|
  ]
 | 
						|
}
 | 
						|
 | 
						|
export { getNavigationProps } |