0

I am trying to test the simple ngx-diagram example from here: https://www.npmjs.com/package/ngx-diagram

But when I run my code it gives me these error messages:

ERROR in src/app/app.component.ts:23:26 - error TS2304: Cannot find name 'id'.

23       this.nodes = [{id: id()}];
                            ~~
src/app/app.component.ts:25:23 - error TS2304: Cannot find name 'id'.

25           const idl = id();
                         ~~
src/app/app.component.ts:59:25 - error TS2304: Cannot find name 'id'.

59       const node = {id: id()};
                           ~~

This is the .ts file that I use:

import { Component, ViewChild } from '@angular/core';
import {NgxDiagramComponent} from 'ngx-diagram'


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})


export class AppComponent {
  @ViewChild('diagram' , {static:false})  diagram : NgxDiagramComponent;
  //title = 'ngx-diagram';

  selection = [];

  nodes = [];
  links = [];

  ngOnInit() {

      this.nodes = [{id: id()}];
      for (let i = 0; i < 10; i++) {
          const idl = id();
          this.nodes.push({id: idl});
      }

      this.nodes.forEach(source => {
          for (let i = 0; i < 1; i++) {
              const target = this.nodes[Math.floor(Math.random() * this.nodes.length)];
              if (source.id !== target.id) {
                  this.links.push({source: source.id, target: target.id});
              }
          }
      });

      this.diagram.updateNodes(this.nodes); // First the nodes then the links
      this.diagram.updateLinks(this.links);
      this.diagram.redraw();


  }

  connected(connection) {

      if (connection.source.id !== connection.target.id) {
          this.links.push({source: connection.source.id, target: connection.target.id});

          this.diagram.updateLinks(this.links);
          this.diagram.redraw();

      }

  }

  created(creation) {

      const node = {id: id()};
      this.nodes.push(node);

      this.diagram.updateNodes(this.nodes);
      this.diagram.moveNodeTo(node.id, creation.x, creation.y);
      this.diagram.redraw();

  }

  selected(selection) {

      this.selection = selection;

  }

  deleteSelected() {

      this.nodes = this.nodes.filter(node => !this.selection.find(n => node.id === n.id));
      this.links = this.links.filter(link => !(this.selection.find(n => link.source === n.id || link.target === n.id)));

      this.diagram.updateNodes(this.nodes);
      this.diagram.redraw();
      this.selection = [];

  }

  deleteLinksBetweenSelected() {

      this.links = this.links.filter(link => !(this.selection.find(n => link.source === n.id) && this.selection.find(n => link.target === n.id)));

      this.diagram.updateLinks(this.links);
      this.diagram.redraw();

  }

  autoLayout() {
      this.diagram.autoLayout().then();
  }

}
Garth Mason
  • 7,611
  • 3
  • 30
  • 39
Hasani
  • 3,543
  • 14
  • 65
  • 125

1 Answers1

0

Very strange example of using the library(on library github page). I think id() is the function generating random string and returning it, but the author of the ngx-charts didn't mention it. Try to replace id() to this.id(). And then create function that returns some random string or int.

In the end, I suggest to find other library because the author dropped it. No updates, answers and very few users.

Konstantin
  • 129
  • 4
  • 16