{"version":3,"file":"ng-container-terminal-yard-overview.mjs","sources":["../../../projects/ng-container-terminal/yard-overview/src/ct-yard-overview.component.ts","../../../projects/ng-container-terminal/yard-overview/src/ct-yard-overview.component.html","../../../projects/ng-container-terminal/yard-overview/src/ct-yard-overview.module.ts","../../../projects/ng-container-terminal/yard-overview/src/ng-container-terminal-yard-overview.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport { RenderOptions, YardInfo } from 'ng-container-terminal/core';\n\n@Component({\n  selector: 'ct-yard-overview',\n  templateUrl: './ct-yard-overview.component.html',\n  styleUrls: ['./ct-yard-overview.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CtYardOverviewComponent<T> implements OnInit, OnChanges {\n  private host: d3.Selection<any, any, any, any>;\n  private svgCtx: d3.Selection<any, any, any, any>;\n  private yardOverviewGroup: d3.Selection<any, any, any, any>;\n  private ctxWidth = 0;\n  private ctxHeight = 0;\n  private defaultRenderOptions: RenderOptions<YardInfo<T>> = {\n    fill: yardInfo => {\n      return d3.interpolateSpectral(yardInfo.x / 3000 + yardInfo.y / 3000);\n    },\n    scaleFactor: 1,\n    stroke: 'rgba(0, 0, 0)',\n    strokeWidth: 2,\n    text: yardInfo => yardInfo.block + '-' + yardInfo.direction\n  };\n\n  private _renderOptions: RenderOptions<YardInfo<T>> = Object.assign({}, this.defaultRenderOptions);\n\n  @Input() set renderOptions(options: RenderOptions<YardInfo<T>>) {\n    if (options) {\n      this._renderOptions = Object.assign({}, this.defaultRenderOptions, options);\n    }\n  }\n\n  get renderOptions() {\n    return this._renderOptions;\n  }\n\n  @Input() yardInfoList: YardInfo<T>[] = [];\n\n  @Output() yardClick: EventEmitter<YardInfo<T>> = new EventEmitter();\n\n  @Output() yardContentRender: EventEmitter<{\n    node: d3.Selection<any, any, any, any>;\n    data: YardInfo<T>;\n  }> = new EventEmitter();\n\n  constructor(private el: ElementRef) {\n    this.host = d3.select(this.el.nativeElement);\n  }\n\n  ngOnInit() {\n    this.initYardOverview();\n  }\n\n  ngOnChanges() {\n    if (!this.svgCtx) {\n      this.initYardOverview();\n    } else {\n      this.redraw();\n    }\n  }\n\n  initYardOverview() {\n    this.ctxWidth = Math.max(...this.yardInfoList.map(d => d.x + d.width + 16), 0);\n    this.ctxHeight = Math.max(...this.yardInfoList.map(d => d.y + d.height + 16), 0);\n\n    this.host\n      .select('svg')\n      .selectAll('g.ct-yard-overview-group')\n      .remove();\n    this.svgCtx = this.host\n      .select('svg')\n      .attr('width', this.ctxWidth * this.renderOptions.scaleFactor + 'px')\n      .attr('height', this.ctxHeight * this.renderOptions.scaleFactor + 'px');\n\n    this.yardOverviewGroup = this.svgCtx\n      .append('g')\n      .attr('class', 'ct-yard-overview-group')\n      .attr('transform', `scale(${this.renderOptions.scaleFactor})`)\n      .attr('width', '100%')\n      .attr('height', '100%');\n    this.redraw();\n  }\n\n  scaleYardOverview() {\n    this.svgCtx = this.host\n      .select('svg')\n      .attr('width', this.ctxWidth * this.renderOptions.scaleFactor + 'px')\n      .attr('height', this.ctxHeight * this.renderOptions.scaleFactor + 'px');\n    this.yardOverviewGroup\n      .attr('transform', `scale(${this.renderOptions.scaleFactor})`)\n      .attr('width', '100%')\n      .attr('height', '100%');\n  }\n\n  redraw() {\n    this.ctxWidth = Math.max(...this.yardInfoList.map(d => d.x + d.width + 16), 0);\n    this.ctxHeight = Math.max(...this.yardInfoList.map(d => d.y + d.height + 16), 0);\n\n    this.svgCtx\n      .transition()\n      .duration(500)\n      .attr('width', this.ctxWidth * this.renderOptions.scaleFactor + 'px')\n      .attr('height', this.ctxHeight * this.renderOptions.scaleFactor + 'px');\n\n    this.yardOverviewGroup\n      .transition()\n      .duration(500)\n      .attr('transform', `scale(${this.renderOptions.scaleFactor})`);\n\n    const allYards = this.yardOverviewGroup\n      .selectAll('g.yard-group')\n      .data(this.yardInfoList, (pos: YardInfo<T>, idx) => JSON.stringify(pos));\n\n    // overview\n    //   .selectAll('rect.yard-rect')\n    //   .transition()\n    //   .attr('fill', (yardInfo: YardInfo<T>) => this.draw('fill', yardInfo));\n\n    const enterYards = allYards.enter();\n    const updateYards = allYards;\n    const exitYards = allYards.exit();\n\n    const yardGroup = enterYards\n      .append('g')\n      .attr('class', 'yard-group')\n      .attr('transform', data => {\n        const x = data.x;\n        const y = this.ctxHeight - data.y - data.height;\n        return `translate(${x}, ${y})`;\n      })\n      .on('mouseover', (data, i, nodes) => {\n        d3.select(nodes[i])\n          .select('rect')\n          .attr('fill', 'grey');\n      })\n      .on('mouseleave', (data, i, nodes) => {\n        d3.select(nodes[i])\n          .select('rect')\n          .attr('fill', (yardInfo: YardInfo<T>) => this.draw('fill', yardInfo));\n      })\n      .on('click', yardInfo => {\n        this.yardClick.emit(yardInfo);\n      });\n\n    yardGroup\n      .append('rect')\n      .attr('class', 'yard-rect')\n      .attr('width', data => data.width)\n      .attr('height', data => data.height)\n      .attr('fill', (yardInfo: YardInfo<T>) => this.draw('fill', yardInfo))\n      .attr('stroke', (yardInfo: YardInfo<T>) => this.draw('stroke', yardInfo))\n      .attr('stroke-width', (yardInfo: YardInfo<T>) => this.draw('strokeWidth', yardInfo) + 'px');\n    yardGroup.each((data, nodeIdx, nodes) => {\n      this.yardContentRender.next({\n        node: d3.select(nodes[nodeIdx]),\n        data: data\n      });\n    });\n\n    yardGroup\n      .append('text')\n      .attr('font-size', '12')\n      .attr('text-anchor', 'middle')\n      .text((yardInfo: YardInfo<any>) => this.draw('text', yardInfo));\n\n    updateYards\n      .transition()\n      .duration(500)\n      .attr('transform', (data: YardInfo<T>) => {\n        const x = data.x;\n        const y = this.ctxHeight - data.y - data.height;\n        return `translate(${x}, ${y})`;\n      });\n\n    updateYards.each((data, nodeIdx, nodes) => {\n      this.yardContentRender.next({\n        node: d3.select(nodes[nodeIdx]),\n        data: data\n      });\n    });\n    // .on('mouseover', (data, i, nodes) => {\n    //   d3.select(nodes[i])\n    //     .select('rect')\n    //     .attr('fill', 'grey');\n    // })\n    // .on('mouseleave', (data, i, nodes) => {\n    //   d3.select(nodes[i])\n    //     .select('rect')\n    //     .attr('fill', (yardInfo: YardInfo<T>) => this.draw('fill', yardInfo));\n    // })\n    // .on('click', (data: YardInfo<T>) => {\n    //   this.yardClick.emit(data);\n    // });\n\n    updateYards\n      .selectAll('rect.yard-rect')\n      .transition()\n      .duration(500)\n      .attr('width', (yardInfo: YardInfo<T>) => yardInfo.width)\n      .attr('height', (yardInfo: YardInfo<T>) => yardInfo.height)\n      .attr('fill', (yardInfo: YardInfo<T>) => this.draw('fill', yardInfo))\n      .attr('stroke', (yardInfo: YardInfo<T>) => this.draw('stroke', yardInfo))\n      .attr('stroke-width', (yardInfo: YardInfo<T>) => this.draw('strokeWidth', yardInfo) + 'px');\n\n    updateYards.selectAll('text').text((yardInfo: YardInfo<any>) => this.draw('text', yardInfo));\n\n    exitYards\n      .attr('opacity', 1)\n      .transition()\n      .duration(500)\n      .attr('opacity', 0)\n      .remove();\n  }\n\n  private draw(which: string, yardInfo: YardInfo<T>) {\n    if (this.renderOptions[which]) {\n      switch (typeof this.renderOptions[which]) {\n        case 'string':\n          return this.renderOptions[which];\n        case 'number':\n          return `${this.renderOptions[which]}`;\n        default:\n          return this.renderOptions[which](yardInfo);\n      }\n    } else {\n      return null;\n    }\n  }\n}\n","<svg class=\"ct-yard-overview\"></svg>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CtYardOverviewComponent } from './ct-yard-overview.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [CtYardOverviewComponent],\n  exports: [CtYardOverviewComponent]\n})\nexport class CtYardOverviewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}