diff --git a/nietzsche-beta-app/src/app/app.module.ts b/nietzsche-beta-app/src/app/app.module.ts
index 48b9ae2..a0f06b7 100644
--- a/nietzsche-beta-app/src/app/app.module.ts
+++ b/nietzsche-beta-app/src/app/app.module.ts
@@ -1,86 +1,80 @@
import { AppComponent } from './app.component';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule, ReactiveFormsModule} from '@angular/forms';
import { NgModule } from '@angular/core';
import {MatCardModule} from '@angular/material/card';
import { MatToolbarModule, MatButtonModule} from '@angular/material';
import {MatProgressBarModule} from '@angular/material/progress-bar';
import {MatTreeModule} from '@angular/material/tree';
import { MatExpansionModule } from '@angular/material/expansion';
import {MatIconModule} from '@angular/material/icon';
import { MatListModule } from '@angular/material/list';
import { MatMenuModule} from '@angular/material/menu';
import { MatSidenavModule } from '@angular/material';
import { MatSelectModule } from '@angular/material/select';
import {MatTabsModule} from '@angular/material/tabs';
import {MatTooltipModule} from '@angular/material';
import { CommonModule } from '@angular/common';
import { HttpClientModule } from '@angular/common/http';
import { QueryService } from './services/query.service';
import {routing} from './app.routing';
import {HomeComponent} from './home.component';
import { ManuscriptViewComponentComponent } from './manuscript-view-component/manuscript-view-component.component';
import { ContentViewTabComponentComponent } from './content-view-tab-component/content-view-tab-component.component';
import { RhizomeViewComponentComponent } from './rhizome-view-component/rhizome-view-component.component';
import { MainMenuComponentComponent } from './main-menu-component/main-menu-component.component';
import { PageViewWrapperComponent } from './page-view-wrapper-component/page-view-wrapper.component';
import { NavigationListComponentComponent } from './navigation-list-component/navigation-list-component.component';
import {NavigationServiceService} from './services/navigation-service.service';
import { TlnEditionModule} from './tln-edition/tln-edition.module';
import { NavTree } from './navigation-list-component/navtree-directive.directive';
import { LazyImageLoadDirectiveDirective } from './content-view-tab-component/lazy-image-load-directive.directive';
import { ImpressumComponent } from './impressum.component';
import { ProjectComponent } from './project.component';
import { NavigationlistListComponentComponent } from './navigation-list-component/navigationlist-list-component/navigationlist-list-component.component';
-import { CrossRefTreeComponentComponent } from './crossref-editor-component/tln-tree-component/tln-tree-component.component';
-import { CrossrefEditorComponentComponent } from './crossref-editor-component/crossref-editor-component.component';
-import { RdfEditorComponentComponent } from './crossref-editor-component/rdf-editor-component/rdf-editor-component.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
ManuscriptViewComponentComponent,
ContentViewTabComponentComponent,
RhizomeViewComponentComponent,
MainMenuComponentComponent,
PageViewWrapperComponent,
NavigationListComponentComponent,
NavTree,
LazyImageLoadDirectiveDirective,
ImpressumComponent,
ProjectComponent,
- NavigationlistListComponentComponent,
- CrossRefTreeComponentComponent,
- CrossrefEditorComponentComponent,
- RdfEditorComponentComponent
+ NavigationlistListComponentComponent
],
imports: [
routing,
BrowserModule,
BrowserAnimationsModule,
CommonModule,
HttpClientModule,
MatButtonModule,
MatCardModule,
MatExpansionModule,
MatIconModule,
MatListModule,
MatMenuModule,
MatProgressBarModule,
MatSelectModule, // for themes selection
MatSidenavModule,
MatTabsModule,
MatToolbarModule,
MatTooltipModule,
MatTreeModule,
FormsModule,
TlnEditionModule,
ReactiveFormsModule
],
providers: [ NavigationServiceService, QueryService ],
bootstrap: [AppComponent]
})
export class AppModule { }
diff --git a/nietzsche-beta-app/src/app/content-view-tab-component/content-view-routes.ts b/nietzsche-beta-app/src/app/content-view-tab-component/content-view-routes.ts
index dd9f776..b15cd32 100644
--- a/nietzsche-beta-app/src/app/content-view-tab-component/content-view-routes.ts
+++ b/nietzsche-beta-app/src/app/content-view-tab-component/content-view-routes.ts
@@ -1,17 +1,14 @@
import { Routes } from '@angular/router';
import {ManuscriptViewComponentComponent} from "../manuscript-view-component/manuscript-view-component.component";
import {RhizomeViewComponentComponent} from "../rhizome-view-component/rhizome-view-component.component";
import {PageViewWrapperComponent} from "../page-view-wrapper-component/page-view-wrapper.component";
import { TLN_CROSSREF_ROUTE, TLN_MANUSCRIPT_ROUTE, TLN_SEARCH_ROUTE, TLN_VIEWER_ROUTE, TLN_CROSSREF_EDITOR_ROUTE } from '../tln-edition/constants';
import { TlnFulltextComponent } from '../tln-edition/tln-fulltext/tln-fulltext.component';
-import {CrossRefTreeComponentComponent} from '../crossref-editor-component/tln-tree-component/tln-tree-component.component';
-import {CrossrefEditorComponentComponent} from '../crossref-editor-component/crossref-editor-component.component';
export const CONTENT_ROUTES: Routes = [
{ path: TLN_MANUSCRIPT_ROUTE, component: ManuscriptViewComponentComponent },
{ path: TLN_VIEWER_ROUTE, component: PageViewWrapperComponent },
{ path: TLN_CROSSREF_ROUTE, component: RhizomeViewComponentComponent },
{ path: TLN_SEARCH_ROUTE, component: TlnFulltextComponent},
- { path: TLN_CROSSREF_EDITOR_ROUTE, component: CrossrefEditorComponentComponent},
{ path: '', redirectTo: TLN_MANUSCRIPT_ROUTE, pathMatch: 'prefix' }
];
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.html b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.html
deleted file mode 100644
index cb49cbb..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.scss b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.scss
deleted file mode 100644
index 81b9135..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-.container {
- display: table;
-}
-
-.crossref-selector {
- display: table-cell;
- width: 50vw;
-}
-
-.basket-container {
- display: table-cell;
- width: 50vw;
-}
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.spec.ts b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.spec.ts
deleted file mode 100644
index ea6fd33..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { CrossrefEditorComponentComponent } from './crossref-editor-component.component';
-
-describe('CrossrefEditorComponentComponent', () => {
- let component: CrossrefEditorComponentComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [ CrossrefEditorComponentComponent ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(CrossrefEditorComponentComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.ts b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.ts
deleted file mode 100644
index e99ef18..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-component.component.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import {NavTreeDef} from '../models/models';
-import {CROSSREF_TREE_DEFS, GENERIC_ROOT_TREE_DEF} from '../constants';
-import {NavigationServiceService} from '../services/navigation-service.service';
-
-@Component({
- selector: 'app-crossref-editor-component',
- templateUrl: './crossref-editor-component.component.html',
- styleUrls: ['./crossref-editor-component.component.scss']
-})
-export class CrossrefEditorComponentComponent implements OnInit {
-
- constructor(private naviService: NavigationServiceService) { }
-
- ngOnInit() {
- this.naviService.updateRoute({['navBarOpenState'] : false});
- this.treeDefs = CROSSREF_TREE_DEFS;
- this.generic = false;
- }
-
- treeDefs: NavTreeDef[] = [];
- generic: boolean;
-}
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.spec.ts b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.spec.ts
deleted file mode 100644
index d8f14fd..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.spec.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { TestBed } from '@angular/core/testing';
-
-import { CrossrefEditorDataServiceService } from './crossref-editor-data-service.service';
-
-describe('CrossrefEditorDataServiceService', () => {
- beforeEach(() => TestBed.configureTestingModule({}));
-
- it('should be created', () => {
- const service: CrossrefEditorDataServiceService = TestBed.get(CrossrefEditorDataServiceService);
- expect(service).toBeTruthy();
- });
-});
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.ts b/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.ts
deleted file mode 100644
index d765d61..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/crossref-editor-data-service.service.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {EventEmitter, Injectable} from '@angular/core';
-import {TlnTreeNode} from './tln-tree-component/tln-tree-component.component';
-
-@Injectable({
- providedIn: 'root'
-})
-export class CrossrefEditorDataServiceService {
- clickedNodeEvent: EventEmitter;
-
- constructor( ) {
- this.clickedNodeEvent = new EventEmitter();
- }
-}
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.html b/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.html
deleted file mode 100644
index cddbb27..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- new triples
- {{textGeneseTriples}}
-
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.scss b/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.spec.ts b/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.spec.ts
deleted file mode 100644
index f4feefc..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { RdfEditorComponentComponent } from './rdf-editor-component.component';
-
-describe('RdfEditorComponentComponent', () => {
- let component: RdfEditorComponentComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [ RdfEditorComponentComponent ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(RdfEditorComponentComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.ts b/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.ts
deleted file mode 100644
index c43c610..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/rdf-editor-component/rdf-editor-component.component.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import * as N3 from "node_modules/n3/src";
-import {CrossrefEditorDataServiceService} from '../crossref-editor-data-service.service';
-import {Subscription} from 'rxjs';
-
-@Component({
- selector: 'app-rdf-editor-component',
- templateUrl: './rdf-editor-component.component.html',
- styleUrls: ['./rdf-editor-component.component.scss']
-})
-export class RdfEditorComponentComponent implements OnInit {
-
- nodeSub: Subscription;
- textGeneseWriter;
- textGeneseTriples: string;
-
- constructor( public dataService: CrossrefEditorDataServiceService) {
- }
-
- ngOnInit() {
- this.textGeneseWriter = new N3.Writer({ prefixes: { data: 'http://rdfh.ch/projects/0068#' } });
-
- this.nodeSub = this.dataService.clickedNodeEvent.subscribe(node => {
- this.writeSthToTextGenese(node.iri);
- //...
- this.checkOutTextGenese();
- });
- }
-
- writeSthToTextGenese(iri, prefix?: any) {
- const {DataFactory} = N3;
- const {namedNode, literal, defaultGraph, quad} = DataFactory;
- const newIri = iri+'textgenese_0'
- this.textGeneseWriter.addQuad(
- namedNode(newIri),
- namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
- namedNode('tln:textGenese!!!')
- );
- }
-
- checkOutTextGenese() {
- this.textGeneseWriter.end((error, result) => {
- console.log('typeof ', typeof result, ' result ', result);
- this.textGeneseTriples = result;
- });
- }
-}
-
-
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.html b/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.html
deleted file mode 100644
index e547244..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.scss b/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.scss
deleted file mode 100644
index e69de29..0000000
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.spec.ts b/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.spec.ts
deleted file mode 100644
index c8c817b..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.spec.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { CrossRefTreeComponentComponent } from './tln-tree-component.component';
-
-describe('RhizomeEditorComponentComponent', () => {
- let component: CrossRefTreeComponentComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [ CrossRefTreeComponentComponent ]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(CrossRefTreeComponentComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.ts b/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.ts
deleted file mode 100644
index e072a76..0000000
--- a/nietzsche-beta-app/src/app/crossref-editor-component/tln-tree-component/tln-tree-component.component.ts
+++ /dev/null
@@ -1,208 +0,0 @@
-import {Component, Injectable, Input, OnInit} from '@angular/core';
-import {CollectionViewer, SelectionChange, DataSource} from '@angular/cdk/collections';
-import {FlatTreeControl} from '@angular/cdk/tree';
-import {BehaviorSubject, merge, Observable} from 'rxjs';
-import {map} from 'rxjs/operators';
-import {NavTreeDef} from '../../models/models';
-import {QueryService} from '../../services/query.service';
-import * as _ from 'lodash';
-import {CrossrefEditorDataServiceService} from '../crossref-editor-data-service.service';
-
-
-/** Flat node with expandable and level information */
-export class TlnTreeNode {
- constructor(public label: string, public iri: string, public level = 1, public expandable = false,
- public isLoading = false, public type? ) {
- }
-}
-
-/**
- * Database for dynamic data. When expanding a node in the tree, the data source will need to fetch
- * the descendants data from the database.
- */
-@Injectable({providedIn: 'root'})
-export class DynamicDatabase {
-
- constructor() {
- }
-
-}
-/**
- * File database, it can build a tree structured Json object from string.
- * Each node in Json object represents a file or a directory. For a file, it has filename and type.
- * For a directory, it has filename and children (a list of files or directories).
- * The input will be a json object string, and the output is a list of `FileNode` with nested
- * structure.
- */
-export class DynamicDataSource implements DataSource {
-
-
- dataChange = new BehaviorSubject([]);
- genericLevel: number = 0;
-
- get data(): TlnTreeNode[] { return this.dataChange.value; }
- set data(value: TlnTreeNode[]) {
- this._treeControl.dataNodes = value;
- this.dataChange.next(value);
- }
-
- constructor(private _treeControl: FlatTreeControl,
- private _database: DynamicDatabase, private queryService: QueryService, private treeDefs: NavTreeDef[], private generic: boolean) {
- }
-
- expandable(level: number) {
- if (this.generic) {return true} else {
- return level < this.treeDefs.length-1
- }
- }
-
- connect(collectionViewer: CollectionViewer): Observable {
- this._treeControl.expansionModel.changed.subscribe(change => {
- if ((change as SelectionChange).added ||
- (change as SelectionChange).removed) {
- this.handleTreeControl(change as SelectionChange);
- }
- });
-
- return merge(collectionViewer.viewChange, this.dataChange).pipe(map(() => this.data));
- }
-
- disconnect(collectionViewer: CollectionViewer): void {}
-
- /** Handle expand/collapse behaviors */
- handleTreeControl(change: SelectionChange) {
- if (change.added) {
- change.added.forEach(node => this.toggleNode(node, this.expandable(node.level)));
- }
- if (change.removed) {
- change.removed.slice().reverse().forEach(node => this.toggleNode(node, false));
- }
- }
-
- toggleNode(node: TlnTreeNode, expand: boolean) {
- node.isLoading = true;
- const index = this.data.indexOf(node);
- if (expand) {
- this.getChildData(node).then(children => {
- if (!children || index < 0) { // If no children, or cannot find the node, no op
- return; }
- this.data.splice(index + 1, 0, ...children);
- // notify the change
- this.dataChange.next(this.data);
- });
- } else {
- let count = 0;
- for (let i = index + 1; i < this.data.length
- && this.data[i].level > node.level; i++, count++) {}
- this.data.splice(index + 1, count);
- // notify the change
- this.dataChange.next(this.data);
- }
- node.isLoading = false;
- }
-
- getChildData(node: TlnTreeNode): Promise {
- console.log('getting children');
- if (this.generic) {
- return this.getGenericChildren(node);
- } else {
- return this.getChildNodesFromDef(node);
- }
- }
-
- getParent(node: TlnTreeNode): TlnTreeNode {
- if (node.level < 1) {
- return null;
- }
- const index= this.data.indexOf(node);
- for (let i = index; i >= 0; i--) {
- const currentNode = this.data[i];
- if (currentNode.level < node.level) {
- return currentNode;
- }
- }
- }
-
- async getGenericChildren(node: TlnTreeNode){
- let treeDef: NavTreeDef;
- const parentNode = this.getParent(node);
- let query: string;
- console.log('node ', node);
- if (node.level % 2 === 0 || 0 ) { // Then we are querying for properties
- treeDef = this.treeDefs[1]; // we want to get resources/ objects of that clicked prop
- query = await this.queryService.parametrizeQueryWithItem(treeDef.apiDef.query, node.iri);
- } else { // we want all objects of the s&p
- console.log(this.data);
- treeDef = this.treeDefs[2];
- query = await this.queryService.parametrizeQueryWithItem(treeDef.apiDef.query, parentNode.iri, node.iri);
- }
- return this.getData(query, treeDef, node.level+1);
- }
-
- async getChildNodesFromDef(node: TlnTreeNode): Promise {
- const treeDef = this.treeDefs.filter(def => def.idx === node.level+1 )[0];
- let query: string;
- if (treeDef.apiDef.paramTriple && treeDef.apiDef.paramTriple === 2) {
- query = await this.queryService.parametrizeQueryWithItem(treeDef.apiDef.query, '', '', node.iri);
- } else { query = await this.queryService.parametrizeQueryWithItem(treeDef.apiDef.query, node.iri);}
-
- return this.getData(query, treeDef);
- }
-
- async getData(query: string, treeDef: NavTreeDef, level?: number): Promise {
- let nodes: TlnTreeNode[] = [];
- await this.queryService.getData(treeDef.apiDef.baseUrl, query, 'SELECT').then(res => {
- const treeData: any[] = _.get(res, treeDef.apiDef.dataArray);
- treeData.forEach(entry => {
- const tlnNode = new TlnTreeNode(_.get(entry, treeDef.apiDef.mapping.label),
- _.get(entry, treeDef.apiDef.mapping.iri), level ||
- treeDef.idx, this.expandable(treeDef.idx), false, _.get(entry, treeDef.apiDef.mapping.type) );
- nodes.push(tlnNode);
- });
- });
- return nodes;
- }
-}
-
-@Component({
- selector: 'app-tln-tree-component',
- templateUrl: './tln-tree-component.component.html',
- styleUrls: ['./tln-tree-component.component.scss']
-})
-export class CrossRefTreeComponentComponent implements OnInit {
-
- @Input() treeDefs: NavTreeDef[];
- @Input() generic: boolean;
-
-
- ngOnInit() {
- this.treeControl = new FlatTreeControl(this.getLevel, this.isExpandable);
- this.dataSource = new DynamicDataSource(this.treeControl, this.database, this.queryService, this.treeDefs, this.generic);
- this.initRootLevelNodes();
- }
-
- constructor(public database: DynamicDatabase, private queryService: QueryService, private dataService: CrossrefEditorDataServiceService) {
- }
-
- initRootLevelNodes() {
- const rootTreeDef = this.treeDefs.filter(def => def.idx === 0)[0];
- const query = rootTreeDef.apiDef.query;
- this.dataSource.getData(query, rootTreeDef).then(rootNodes => this.dataSource.data = rootNodes);
- }
-
- onClick(node:TlnTreeNode): void {
- this.dataService.clickedNodeEvent.emit(node);
- }
-
-
- treeControl: FlatTreeControl;
-
- dataSource: DynamicDataSource;
-
- getLevel = (node: TlnTreeNode) => node.level;
-
- isExpandable = (node: TlnTreeNode) => node.expandable;
-
- hasChild = (_: number, _nodeData: TlnTreeNode) => _nodeData.expandable;
-
-}