{"version":3,"file":"sedeh-visualize-it.mjs","sources":["../../../projects/visualize-it/src/lib/components/visualize-it.component.ts","../../../projects/visualize-it/src/lib/components/visualize-it.component.html","../../../projects/visualize-it/src/lib/visualize-it.module.ts","../../../projects/visualize-it/src/public-api.ts","../../../projects/visualize-it/src/sedeh-visualize-it.ts"],"sourcesContent":["/*\r\n * tool to display result of a search on set of points of interests on objects.\r\n */\r\nimport {\r\n  Component,\r\n  OnInit,\r\n  OnChanges,\r\n  AfterViewInit ,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  Renderer2,\r\n  RendererFactory2,\r\n  ChangeDetectionStrategy\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'visualize-it',\r\n  templateUrl: './visualize-it.component.html',\r\n  styleUrls: ['./visualize-it.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VisualizeItComponent implements OnInit, AfterViewInit, OnChanges  {\r\n\r\n  showLegend = false;\r\n  showHelp = false;\r\n  expanded = false;\r\n\r\n  private renderer: Renderer2;\r\n  \r\n  @Input(\"showCurvedConnections\")\r\n  showCurvedConnections!: string;\r\n  \r\n  @Input(\"visualizerId\")\r\n  visualizerId = 'd3-container';\r\n  \r\n  @Input(\"enableTooltip\")\r\n  enableTooltip!: boolean;\r\n\r\n  @Input(\"gradientsEnabled\")\r\n  gradientsEnabled = true;\r\n\r\n  @Input(\"repealForce\")\r\n  repealForce = 300;\r\n  \r\n  @Input(\"fixedDistance\")\r\n  fixedDistance = 60;\r\n  \r\n  @Input(\"outlineNodes\")\r\n  outlineNodes!: boolean;\r\n\r\n  @Input(\"enableLegends\")\r\n  enableLegends!: boolean;\r\n\r\n  @Input(\"showTypeOnHover\")\r\n  showTypeOnHover!: boolean;\r\n\r\n  @Input(\"showDirections\")\r\n  showDirections!: boolean;\r\n\r\n  @Input(\"data\")\r\n  data: any;\r\n\r\n  @Input(\"typeMapping\")\r\n  typeMapping: any = {};\r\n\r\n  @Input(\"width\")\r\n  width!: string;\r\n\r\n  @Input(\"height\")\r\n  height!: string;\r\n\r\n  @Output(\"onVisualization\")\r\n  onVisualization = new EventEmitter();\r\n\r\n  constructor(private factory: RendererFactory2) {\r\n    this.renderer = this.factory.createRenderer(null, null);\r\n    if (navigator.platform.toUpperCase().indexOf('MAC')<0) {\r\n      document.addEventListener(\"webkitfullscreenchange\", (event: Event) => {\r\n        if(!window.screenTop && !window.screenY) {\r\n          this.expand(false);\r\n        }\r\n      });\r\n      document.addEventListener(\"mozfullscreenchange\", (event: Event) => {\r\n        const win: any = window;\r\n        const isFullScreen = win.fullScreen ||\r\n                            (win.innerWidth == screen.width && win.innerHeight == screen.height)\r\n        if(!isFullScreen) {\r\n          this.expand(false);\r\n        }\r\n      });\r\n      document.addEventListener(\"MSFullscreenChange\", (event: Event) => {\r\n        const win: any = window;\r\n        const isFullScreen = win.fullScreen ||\r\n                            (win.innerWidth == screen.width && win.innerHeight == screen.height)\r\n        if(!isFullScreen) {\r\n          this.expand(false);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  private triggerEvaluation(points: any) {\r\n    if (points.length) {\r\n      const indexOf: any = {};\r\n      const errors: any = [];\r\n      const dataSet: any = {\r\n        links:[],\r\n        nodes: []\r\n      };\r\n      this.renderer.selectRootElement('#' + this.visualizerId).innerHTML = \"\";\r\n      points.map( (node: any,index: number) => indexOf[node.id] = index);\r\n      points.map( (node: any, i: number) => {\r\n        dataSet.nodes.push({\r\n          size: node.size ? node.size: 10, \r\n          group: node.group? node.group : 0, \r\n          type: node.type && node.type.length ? node.type : \"circle\",\r\n          name: node.name,\r\n          image: node.image,\r\n          data: node.data ? node.data : []\r\n        });\r\n        if(node.sources) {\r\n          node.sources.map( (id: string) => {\r\n            const item = indexOf[id];\r\n            if (item != undefined) {\r\n              dataSet.links.push({source: item, target: i});\r\n            } else {\r\n              errors.push(\"Missing source node '\" + id + \"' for node '\" + node.id + \"'.\");\r\n            }\r\n          })\r\n        }\r\n        if(node.destinations) {\r\n          node.destinations.map( (id: any) => {\r\n            const item = indexOf[id];\r\n            if (item != undefined) {\r\n              dataSet.links.push({source: i, target: item});\r\n            } else {\r\n              errors.push(\"Missing destination node '\" + id + \"' for node '\" + node.id + \"'.\");\r\n            }\r\n          })\r\n        }\r\n      });\r\n\r\n      if (errors.length) {\r\n        this.renderer.selectRootElement('#' + this.visualizerId).innerHTML = \"<div class='danger'>\"+errors.join(\"<br/>\")+\"</div>\";\r\n      } else {\r\n        const el = this.renderer.selectRootElement('#' + this.visualizerId).parentNode;\r\n        const win: any = window;\r\n        const config = {\r\n          width: window.innerWidth, \r\n          height: window.innerHeight,\r\n          offset: {x: el.offsetLeft, y: el.offsetTop}, \r\n          data: dataSet,\r\n          mapping: this.typeMapping, \r\n          showTypeOnHover: this.showTypeOnHover, \r\n          showDirections: this.showDirections,\r\n          enableTooltip: this.enableTooltip,\r\n          showCurvedConnections: this.showCurvedConnections,\r\n          outlineNodes: this.outlineNodes,\r\n          charge: -1 * this.repealForce,\r\n          fixedDistance: this.fixedDistance,\r\n          gradientsEnabled: this.gradientsEnabled,\r\n          targetDiv: \"#\" + this.visualizerId\r\n        };\r\n        win['initiateD3'](config);\r\n      }\r\n    } else {\r\n      this.renderer.selectRootElement('#' + this.visualizerId).innerHTML = \"<div class='danger'>Missing data.</div>\";\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: any) {\r\n    if (changes.data) {\r\n      setTimeout(this.ngOnInit.bind(this), 333);\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    if( !(this.data instanceof Array)) {\r\n      this.data = [this.data];\r\n    }\r\n  }\r\n\r\n  async ngAfterViewInit() {\r\n    const win: any = window;\r\n    if (!win['initiateD3']) {\r\n      await this.loadScript(\"assets/d3.js\", 'd3js').then( () => {\r\n        this.triggerEvaluation(this.data);\r\n      });\r\n    } else {\r\n      this.triggerEvaluation(this.data);\r\n    }\r\n \t}\r\n   \r\n\tprivate loadScript(url: string, id: string) {    \r\n    return new Promise((resolve, reject) => {\r\n      const scriptElement = document.createElement('script');\r\n    \r\n      scriptElement.type = \"text/javascript\";\r\n      scriptElement.src = url;\r\n      scriptElement.onload = resolve;\r\n      \r\n      document.body.appendChild(scriptElement);\r\n\t\t})\r\n  }\r\n\r\n  expand(flag: boolean) {\r\n    const win: any = window;\r\n    const doc: any = document;\r\n\r\n    if (flag) {\r\n      const el = this.renderer.selectRootElement('#' + this.visualizerId).parentNode;\r\n      const element: any = doc.documentElement;\r\n      if(element.requestFullscreen) {\r\n        element.requestFullscreen();\r\n      } else if(element.mozRequestFullScreen) {\r\n        element.mozRequestFullScreen();\r\n      } else if(element.webkitRequestFullscreen) {\r\n        element.webkitRequestFullscreen();\r\n      } else if(element.msRequestFullscreen) {\r\n        element.msRequestFullscreen();\r\n      }\r\n      el.classList.add(\"expanded-container\");\r\n      this.expanded = true;\r\n      if (win[\"centerVisibility\"]) {\r\n        win[\"centerVisibility\"](0, 0);\r\n      }\r\n    } else {\r\n      if(doc.exitFullscreen) {\r\n        doc.exitFullscreen();\r\n      } else if(doc.mozCancelFullScreen) {\r\n        doc.mozCancelFullScreen();\r\n      } else if(doc.webkitExitFullscreen) {\r\n        doc.webkitExitFullscreen();\r\n      }\r\n      const el = this.renderer.selectRootElement('#' + this.visualizerId).parentNode;\r\n      el.classList.remove(\"expanded-container\");\r\n      this.expanded = false;\r\n      if (win[\"centerVisibility\"]) {\r\n        win[\"centerVisibility\"](el.offsetLeft, el.offsetTop);\r\n      }\r\n    }\r\n  }\r\n\r\n  onchange(event: any) {\r\n    this.triggerEvaluation(event.points);\r\n  }\r\n}\r\n","\r\n<div class=\"legends\" *ngIf=\"enableLegends\">\r\n    <a tabindex=\"0\" (click)=\"showLegend = !showLegend;showHelp = false\" title=\"show Legend\"><span class=\"legend\">&#9826;</span></a>\r\n    \r\n    <a *ngIf=\"!expanded\" tabindex=\"0\" (click)=\"expand(true)\" title=\"show in full screen\"><span class=\"expand\">&#9859;</span></a>\r\n    <a *ngIf=\"expanded\" tabindex=\"0\" (click)=\"expand(false)\" title=\"show in normal screen\"><span class=\"expand\">&#9860;</span></a>\r\n    \r\n    <a tabindex=\"0\" (click)=\"showLegend = false;showHelp = !showHelp\" title=\"show help\"><span class=\"help\">?</span></a>\r\n    <fieldset class=\"info\" *ngIf=\"showLegend\">\r\n        <legend>Definitions</legend>\r\n        <b>Relationship types:</b><br/>\r\n        <strong>Dotted line:</strong> Descendancy relationship (example: Children of)<br/>\r\n        <strong>Solid Line:</strong> Origination relationship (example: Parents of)<br/>\r\n        <span *ngIf=\"showDirections\"><strong>Arrow on a line:</strong> Pointing toward the recipient of relationship.<br/></span>\r\n\r\n        <br/><b>Node types:</b><br/>\r\n        <span *ngIf=\"typeMapping['circle']\"><strong>Circle</strong> - {{typeMapping['circle']}}<br/></span>\r\n        <span *ngIf=\"typeMapping['cross']\"><strong>Cross</strong> - {{typeMapping['cross']}}<br/></span>\r\n        <span *ngIf=\"typeMapping['diamond']\"><strong>Diamond</strong> - {{typeMapping['diamond']}}<br/></span>\r\n        <span *ngIf=\"typeMapping['square']\"><strong>Square</strong> - {{typeMapping['square']}}<br/></span>\r\n        <span *ngIf=\"typeMapping['triangle-down']\"><strong>Triangle-down</strong> - {{typeMapping['triangle-down']}}<br/></span>\r\n        <span *ngIf=\"typeMapping['triangle-up']\"><strong>Triangle-up</strong> - {{typeMapping['triangle-up']}}<br/></span>\r\n    </fieldset>\r\n    <fieldset class=\"info\" *ngIf=\"showHelp\">\r\n        <legend>Tips</legend>\r\n        <b>Hover on a node to highlight 1st-order neighbourhood.</b><br/>\r\n        <b>Hold mouse down on a node to fade surroundings.</b><br/>\r\n        <b>Double-click to center node and zoom in.</b><br/>\r\n        <b>Hold SHIFT and Double-click to zoom out.</b><br/><br/>\r\n\r\n        <b>Filter nodes by:</b><br/>\r\n        <strong>\"&#46;\" :</strong> Stop/resume animation<br/>\r\n        <strong>\"&#33;\" :</strong> Show/hide node category on hover<br/>\r\n        <strong>\"&#35;\" :</strong> Show/hide link arrow direction<br/>\r\n        <strong>\"&#64;\" :</strong> Show/hide node names or node category<br/>\r\n        <strong>\"&#84;\" :</strong> Enable/disable displaying of Tooltip<br/>\r\n        <strong>\"&#90;\" :</strong> Do/Don't Normalize node sizes on zoom<br/>\r\n        <span *ngIf=\"typeMapping['circle']\"><strong>\"&#67;\" :</strong> Show/hide all circle ( {{typeMapping['circle']}} ) nodes<br/></span>\r\n        <span *ngIf=\"typeMapping['cross']\"><strong>\"&#88;\" :</strong> Show/hide all cross ( {{typeMapping['cross']}} ) nodes<br/></span>\r\n        <span *ngIf=\"typeMapping['diamond']\"><strong>\"&#82;\" :</strong> Show/hide all diamond ( {{typeMapping['diamond']}} ) nodes<br/></span>\r\n        <span *ngIf=\"typeMapping['square']\"><strong>\"&#83;\" :</strong> Show/hide all square ( {{typeMapping['square']}} ) nodes<br/></span>\r\n        <span *ngIf=\"typeMapping['triangle-down']\"><strong>\"&#68;\" :</strong> Show/hide all triangle-down ( {{ typeMapping['triangle-down']}} ) nodes<br/></span>\r\n        <span *ngIf=\"typeMapping['triangle-up']\"><strong>\"&#85;\" :</strong> Show/hide all triangle-up ( {{typeMapping['triangle-up']}} ) nodes<br/></span>\r\n        <strong>\"&#76;\" :</strong> Show/hide all low range group (%33) nodes<br/>\r\n        <strong>\"&#77;\" :</strong> Show/hide all medium range group (%50) nodes<br/>\r\n        <strong>\"&#72;\" :</strong> Show/hide all high range group (%66) nodes<br/>\r\n        <strong>\"&#49;\" :</strong> Show/hide all low range group (%33) links<br/>\r\n        <strong>\"&#50;\" :</strong> Show/hide all medium range group (%50) links<br/>\r\n        <strong>\"&#51;\" :</strong> Show/hide all high range group (%66) links\r\n    </fieldset>\r\n</div>\r\n\r\n<div class=\"d3-container\" \r\n    tabindex=\"0\"\r\n    [style.width]=\"width\"\r\n    [style.height]=\"height\"\r\n    [id]=\"visualizerId\"></div>\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { VisualizeItComponent } from './components/visualize-it.component';\r\n\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  declarations: [\r\n    VisualizeItComponent\r\n  ],\r\n  exports: [\r\n    VisualizeItComponent\r\n  ],\r\n  entryComponents: [\r\n    VisualizeItComponent\r\n  ],\r\n  providers: [\r\n  ],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class VisualizeItModule {}\r\n","/*\n * Public API Surface of visualize-it\n */\n\nexport * from './lib/components/visualize-it.component';\nexport * from './lib/visualize-it.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}