{"version":3,"file":"ng-container-terminal-yard.mjs","sources":["../../../projects/ng-container-terminal/yard/src/ct-yard.component.ts","../../../projects/ng-container-terminal/yard/src/ct-yard.component.html","../../../projects/ng-container-terminal/yard/src/ct-yard.module.ts","../../../projects/ng-container-terminal/yard/src/ng-container-terminal-yard.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport { RenderOptions, YardposInfo } from 'ng-container-terminal/core';\nimport { CtYardposParserService } from 'ng-container-terminal/tool';\nimport { BehaviorSubject } from 'rxjs';\nimport { bufferTime, filter } from 'rxjs/operators';\n\n@Component({\n  selector: 'ct-yard',\n  templateUrl: './ct-yard.component.html',\n  styleUrls: ['./ct-yard.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CtYardComponent implements OnInit, OnChanges {\n  host: d3.Selection<any, any, any, any>;\n  svg: d3.Selection<any, any, any, any>;\n  yardGroup: d3.Selection<any, any, any, any>;\n  rowLabelsGroup: d3.Selection<any, any, any, any>;\n  oddBayLabelsGroup: d3.Selection<any, any, any, any>;\n  evenBayLabelsGroup: d3.Selection<any, any, any, any>;\n  displayYardposInfoList: YardposInfo[] = [];\n\n  interval = 1;\n\n  maxRow = 6;\n  maxTier = 5;\n  maxBay = 0;\n\n  canvasWidth = 2000;\n  canvasHeight = 100;\n\n  pods = [];\n  podColor;\n\n  block = '';\n\n  private _renderOptions: RenderOptions<YardposInfo>;\n\n  @Input() set renderOptions(options: RenderOptions<YardposInfo>) {\n    this._renderOptions = options;\n    // setTimeout(() => {\n    //   this.notifyDataUpdated(true);\n    // }, 0);\n  }\n\n  get renderOptions() {\n    return this._renderOptions;\n  }\n\n  @Input() yardposInfoList: YardposInfo[] = [];\n  @Input() baseWidth = 6;\n  @Input() baseHeight = 12;\n  @Input() rotation = 0;\n\n  @Output() yardposClick: EventEmitter<YardposInfo> = new EventEmitter();\n\n  onNotifyDataChanged = new BehaviorSubject<boolean>(false);\n  onNotifyDataChanged$ = this.onNotifyDataChanged.asObservable();\n\n  constructor(private el: ElementRef, private yardposParser: CtYardposParserService) {}\n\n  ngOnInit() {\n    this.host = d3.select(this.el.nativeElement);\n    this.svg = this.host\n      .select('svg')\n      .attr('width', this.canvasWidth + 'px')\n      .attr('height', this.canvasHeight + 'px');\n    this.yardGroup = this.svg\n      .append('g')\n      .attr('class', 'ct-yard-group')\n      .attr('transform', 'translate(20, 20)');\n\n    this.rowLabelsGroup = this.svg\n      .append('g')\n      .attr('class', 'row-labels-group')\n      .attr('transform', 'translate(0, 20)');\n\n    this.oddBayLabelsGroup = this.svg\n      .append('g')\n      .attr('class', 'odd-bay-labels-group')\n      .attr('transform', 'translate(20, 0)');\n    this.onNotifyDataChanged$\n      .pipe(\n        bufferTime(100),\n        filter((x: boolean[]) => x.length > 0)\n      )\n      .subscribe((data: boolean[]) => {\n        // console.log('subscribe onNotifyDataChanged: ', data);\n        const s = new Date().getTime();\n        if (data.indexOf(false) >= 0) {\n          this.extractBasicInfo();\n          this.processData();\n        }\n        this.redraw();\n        const e = new Date().getTime();\n        console.log(`redraw cost: ${e - s} ms`);\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    // console.log('ng changes: ', changes);\n    let redrawOnly = true;\n    if (changes['yardposInfoList']) {\n      console.log('yardposInfoList changes');\n      redrawOnly = false;\n      if (this.yardposInfoList.length > 0) {\n        this.block = this.yardposParser.getQ(this.yardposInfoList[0].yardpos);\n      } else {\n        this.block = '';\n      }\n      // setTimeout(() => {\n      //   this.notifyDataUpdated();\n      // }, 0);\n    }\n    // if (changes['rotation']) {\n    //   setTimeout(() => {\n    //     this.notifyDataUpdated(true);\n    //   }, 0);\n    // }\n    this.notifyDataUpdated(redrawOnly);\n  }\n\n  /**\n   * 当yardposInfoList里面的相关属性发生变化时，通知视图进行刷行\n   */\n  notifyDataUpdated(redrawOnly = false) {\n    // console.log('notifyDataUpdated: ', redrawOnly);\n    this.onNotifyDataChanged.next(redrawOnly);\n  }\n\n  /**\n   * 从场地位置信息数组中剔除箱区基础数据，即:\n   * maxBay: 小贝个数\n   * maxRow: 最大列\n   * maxTier: 最大层\n   * pods: 所有卸货港数组\n   */\n  extractBasicInfo() {\n    this.maxRow = Math.max(...this.yardposInfoList.map(d => +this.yardposParser.getP(d.yardpos)));\n    this.maxTier = Math.max(...this.yardposInfoList.map(d => +this.yardposParser.getC(d.yardpos)));\n    this.maxBay = Math.max(\n      ...this.yardposInfoList\n        .map(d => +this.yardposParser.getW(d.yardpos))\n        // .filter(bay => bay % 2 === 1)\n        .map(bay => (bay + (2 - (bay % 2))) / 2)\n    );\n    // console.log({\n    //   maxBay: this.maxBay,\n    //   maxRow: this.maxRow,\n    //   maxTier: this.maxTier\n    // });\n    // this.maxBay = d3\n    //   .set(\n    //     this.yardposInfoList\n    //       .map(d => +this.yardposParser.getW(d.yardpos))\n    //       .filter(bay => bay % 2 === 1)\n    //   )\n    //   .values().length;\n    const containers = this.yardposInfoList\n      .filter(pos => pos.containers && pos.containers.length > 0)\n      .map(pos => pos.containers)\n      .reduce((a, b) => a.concat(b), []);\n    this.pods = d3.set(containers, c => c.pod).values();\n    this.podColor = d3.scaleOrdinal(d3.schemeCategory10);\n  }\n\n  /**\n   * 数据预处理，从所有数据中提取出需要显示的数据\n   */\n  processData() {\n    this.displayYardposInfoList = [];\n    const bayInfo = [];\n    // 计算每个场地位置是否含有集装箱、计划\n    this.yardposInfoList.forEach((pos, idx) => {\n      const bay = +this.yardposParser.getW(pos.yardpos);\n      if (!bayInfo[bay]) {\n        bayInfo[bay] = {\n          containerCount: 0,\n          planCount: 0\n        };\n      }\n      if (pos.displayedContainer && pos.displayedContainer.ctnno) {\n        bayInfo[bay].containerCount += 1;\n      }\n      if (pos.plans && pos.plans.length > 0) {\n        bayInfo[bay].planCount += 1;\n      }\n    });\n\n    const evenBayPoses = this.yardposInfoList.filter(pos => +this.yardposParser.getW(pos.yardpos) % 2 === 0);\n\n    const oddBayPoses = this.yardposInfoList.filter(pos => +this.yardposParser.getW(pos.yardpos) % 2 === 1);\n\n    const invalidOddBay = [];\n    bayInfo.forEach((info, idx) => {\n      if (idx % 2 === 0) {\n        if (info && info.containerCount > 0) {\n          const poses = evenBayPoses.filter(pos => +this.yardposParser.getW(pos.yardpos) === idx);\n          this.displayYardposInfoList = [...poses, ...this.displayYardposInfoList];\n          invalidOddBay.push(idx + 1);\n          invalidOddBay.push(idx - 1);\n        }\n      }\n\n      // 如果是基数贝，则向前向后找其偶数倍是否存在占位信息，若不存在则需要画该基数贝\n      // if (idx % 2 === 1) {\n      //   if (\n      //     (bayInfo[idx + 1] === undefined ||\n      //       (bayInfo[idx + 1].containerCount === 0 && bayInfo[idx + 1].planCount === 0)) &&\n      //     (bayInfo[idx - 1] === undefined ||\n      //       (bayInfo[idx - 1].containerCount === 0 && bayInfo[idx - 1].planCount === 0))\n      //   ) {\n      //     const poses = this.yardposInfoList.filter(pos => +this.yardposParser.getW(pos.yardpos) === idx);\n      //     this.displayYardposInfoList = [...poses, ...this.displayYardposInfoList];\n      //   }\n      // } else {\n      //   if (info.containerCount > 0 || info.planCount > 0 || info.taskCount > 0) {\n      //     const poses = this.yardposInfoList.filter(pos => +this.yardposParser.getW(pos.yardpos) === idx);\n      //     this.displayYardposInfoList = [...poses, ...this.displayYardposInfoList];\n      //   }\n      // }\n    });\n\n    bayInfo.forEach((info, idx) => {\n      if (idx % 2 === 1 && invalidOddBay.indexOf(idx) < 0) {\n        const poses = oddBayPoses.filter(pos => +this.yardposParser.getW(pos.yardpos) === idx);\n        this.displayYardposInfoList = [...poses, ...this.displayYardposInfoList];\n      }\n    });\n  }\n\n  /**\n   * 视图渲染\n   */\n  private redraw() {\n    const baseWidth = +this.baseWidth;\n    const baseHeight = +this.baseHeight;\n    if (+this.rotation === 0) {\n      this.canvasWidth = (this.maxRow * this.maxBay + 1) * (baseWidth + 2 * this.interval);\n      this.canvasHeight = (this.maxTier + 1) * (baseHeight + 2 * this.interval);\n    } else {\n      this.canvasWidth = (this.maxTier * this.maxBay + 1) * (baseWidth + 2 * this.interval);\n      this.canvasHeight = (this.maxRow + 1) * (baseHeight + 2 * this.interval);\n    }\n    this.svg.attr('width', `${this.canvasWidth}px`).attr('height', `${this.canvasHeight}px`);\n    // 绘制列标签\n    this.rowLabelsGroup.selectAll('g.row-label').remove();\n    let rowLabels = this.rowLabelsGroup.selectAll('g.row-label');\n    if (this.rotation === 90) {\n      rowLabels = rowLabels.data(d3.range(this.maxRow));\n    } else {\n      rowLabels = rowLabels.data(d3.range(this.maxTier));\n    }\n    const rowLabel = rowLabels\n      .enter()\n      .append('g')\n      .attr('class', 'row-label')\n      .attr('transform', (data: number) => {\n        if (this.rotation === 90) {\n          return `translate(0, ${data * this.baseHeight})`;\n        } else {\n          return `translate(0, ${(this.maxTier - data - 1) * this.baseHeight})`;\n        }\n      });\n\n    rowLabel\n      .append('text')\n      .attr('width', 20)\n      .attr('height', this.baseHeight)\n      .attr('font-size', '9')\n      .attr('text-anchor', 'middle')\n      .attr('dx', 15)\n      .attr('dy', this.baseHeight / 1.2)\n      .text((c: number) => c + 1);\n    rowLabels.exit().remove();\n\n    // 绘制基数贝标签\n    this.oddBayLabelsGroup.selectAll('g.odd-bay-label').remove();\n    const oddBayLabels = this.oddBayLabelsGroup.selectAll('g.odd-bay-label').data(d3.range(0, this.maxBay * 2, 2));\n    const oddBayLabel = oddBayLabels\n      .enter()\n      .append('g')\n      .attr('class', 'odd-bay-label')\n      .attr('transform', (data, idx) => {\n        let x = 0;\n        if (this.rotation === 90) {\n          x = idx * this.baseWidth * this.maxTier + this.interval * data;\n        } else {\n          x = idx * this.baseWidth * this.maxRow + this.interval * data;\n        }\n        return `translate(${x}, 0)`;\n      });\n    oddBayLabel\n      .append('text')\n      .attr('width', (data, idx) => {\n        if (this.rotation === 90) {\n          return idx * this.baseWidth * this.maxTier + this.interval * data;\n        } else {\n          return idx * this.baseWidth * this.maxRow + this.interval * data;\n        }\n      })\n      .attr('height', 20)\n      .attr('font-size', '9')\n      .attr('text-anchor', 'middle')\n      .attr('dx', 12)\n      .attr('dy', this.baseHeight)\n      .text(c => c + 1);\n    oddBayLabels.exit().remove();\n\n    // TODO: 绘制偶数贝标签\n\n    const yardPoses = this.yardGroup\n      .selectAll('g.yardpos')\n\n      .data(this.displayYardposInfoList, (data: YardposInfo) => JSON.stringify(data));\n\n    // 更新\n    yardPoses\n      .transition()\n      .duration(500)\n      .attr('transform', (posInfo: YardposInfo) => {\n        return this._transformFunction(posInfo);\n      });\n    yardPoses\n      .selectAll('path.cell')\n      .transition()\n      .attr('d', (data: YardposInfo) => {\n        const bay = +this.yardposParser.getW(data.yardpos);\n        let width = 0;\n        if (bay % 2 === 1) {\n          // 基数贝\n          width = this.baseWidth;\n        } else {\n          width = this.baseWidth * 2;\n        }\n\n        const baseRect = `M0 0 L${width} 0 L${width} ${this.baseHeight} L0 ${this.baseHeight} Z`;\n        let finalRect = baseRect;\n        if (data.isLocked) {\n          // 有封场则画X表示\n          finalRect = finalRect + ` M0 0 L${width} ${this.baseHeight} M${width} 0 L0 ${this.baseHeight}`;\n        }\n        if (data.displayedContainer && data.displayedContainer.task) {\n          // 显示的集装箱有任务则画圈表示\n          finalRect =\n            finalRect +\n            ` M0 ${this.baseHeight / 2} A${width / 2} ${width / 2} 0 0 1 ${width} ${this.baseHeight / 2}` + // 上半圈\n            ` M${width} ${this.baseHeight / 2} A${width / 2} ${width / 2} 0 0 1 ${0} ${this.baseHeight / 2}`; // 下半圈\n        }\n        return finalRect;\n      })\n      .attr('fill', (data: YardposInfo) => {\n        return this._fillFunction(data);\n      })\n      .attr('stroke', (posInfo: YardposInfo) => this.draw('stroke', posInfo))\n      .attr('stroke-width', (posInfo: YardposInfo) => this.draw('strokeWidth', posInfo));\n\n    // 高箱 需要加一条粗线\n    yardPoses\n      .selectAll('path.ctn-height')\n      .transition()\n      .attr('d', (data: YardposInfo) => {\n        if (data.displayedContainer && data.displayedContainer.height + '' === '9.6') {\n          let factor = 1;\n          if (data.displayedContainer.size !== '20') {\n            factor = 2;\n          }\n          return `M0.5 2.5 L${this.baseWidth * factor} 2.5`;\n        } else {\n          return `M0.5 0 L${this.baseWidth} 0`;\n        }\n      })\n      .attr('stroke', 'black')\n      .attr('stroke-width', (data: YardposInfo) => {\n        if (!data.displayedContainer) {\n          return 0;\n        }\n        if (data.displayedContainer.height + '' === '9.6') {\n          return 4;\n        } else {\n          return 1;\n        }\n      });\n\n    const pos = yardPoses\n      .enter()\n      .append('g')\n      .attr('class', 'yardpos')\n      .attr('transform', posInfo => {\n        let x = 0;\n        let y = 0;\n        const bay = +this.yardposParser.getW(posInfo.yardpos);\n        const row = +this.yardposParser.getP(posInfo.yardpos);\n        const tier = +this.yardposParser.getC(posInfo.yardpos);\n        if (this.rotation === 90) {\n          if (bay % 2 === 1) {\n            // 基数贝\n            x = ((bay - 1) / 2) * (this.maxTier * this.baseWidth);\n            x = x + (tier - 1) * this.baseWidth;\n          } else {\n            x = (bay / 2 - 1) * (this.maxTier * this.baseWidth);\n            x = x + (tier - 1) * this.baseWidth * 2;\n          }\n          x = x + (bay - 1) * this.interval;\n          y = this.baseHeight * (row - 1);\n        } else {\n          if (bay % 2 === 1) {\n            // 基数贝\n            x = ((bay - 1) / 2) * (this.maxRow * this.baseWidth);\n            x = x + (row - 1) * this.baseWidth;\n          } else {\n            x = (bay / 2 - 1) * (this.maxRow * this.baseWidth);\n            x = x + (row - 1) * this.baseWidth * 2;\n          }\n          x = x + (bay - 1) * this.interval;\n          y = this.baseHeight * (this.maxTier - tier);\n        }\n\n        return `translate(${x + 8}, ${y})`;\n      })\n      .attr('opacity', '0')\n      .on('mouseover', function(data, i, nodes) {\n        d3.select(nodes[i])\n          .select('path')\n          .attr('fill', 'grey');\n      })\n      .on('mouseleave', (data, i, nodes) => {\n        d3.select(nodes[i])\n          .select('path')\n          .attr('fill', d => this._fillFunction(data));\n      })\n      .on('click', data => {\n        console.log(data);\n        this.yardposClick.emit(data);\n      });\n\n    pos\n      .transition()\n      .duration(300)\n      .ease(d3.easeCubicOut)\n      .attr('transform', posInfo => {\n        return this._transformFunction(posInfo);\n      })\n      .attr('opacity', (posInfo: YardposInfo) => {\n        return 1;\n      });\n\n    pos\n      .append('path')\n      .attr('class', 'cell')\n      .attr('d', data => {\n        const bay = +this.yardposParser.getW(data.yardpos);\n        let width = 0;\n        if (bay % 2 === 1) {\n          // 基数贝\n          width = this.baseWidth;\n        } else {\n          width = this.baseWidth * 2;\n        }\n\n        const baseRect = `M0 0 L${width} 0 L${width} ${this.baseHeight} L0 ${this.baseHeight} Z`;\n        let finalRect = baseRect;\n        if (data.isLocked) {\n          // 有封场则画X表示\n          finalRect = finalRect + ` M0 0 L${width} ${this.baseHeight} M${width} 0 L0 ${this.baseHeight}`;\n        }\n        if (data.displayedContainer && data.displayedContainer.task) {\n          // 显示的集装箱有任务则画圈表示\n          finalRect =\n            finalRect +\n            ` M0 ${this.baseHeight / 2} A${width / 2} ${width / 2} 0 0 1 ${width} ${this.baseHeight / 2}` + // 上半圈\n            ` M${width} ${this.baseHeight / 2} A${width / 2} ${width / 2} 0 0 1 ${0} ${this.baseHeight / 2}`; // 下半圈\n        }\n        return finalRect;\n      })\n      .attr('fill', data => {\n        return this._fillFunction(data);\n      })\n      .attr('stroke', posInfo => this.draw('stroke', posInfo))\n      .attr('stroke-width', posInfo => this.draw('strokeWidth', posInfo));\n\n    // 高箱 需要加一条粗线\n    pos\n      .append('path')\n      .attr('class', 'ctn-height')\n      .attr('d', data => {\n        if (data.displayedContainer && data.displayedContainer.height + '' === '9.6') {\n          let factor = 1;\n          if (data.displayedContainer.size !== '20') {\n            factor = 2;\n          }\n          return `M0.5 2.5 L${this.baseWidth * factor} 2.5`; // 0.5是stroke-width的一半，不然高箱的线会超出边界\n        } else {\n          return `M0.5 0 L${this.baseWidth} 0`;\n        }\n      })\n      .attr('stroke', 'black')\n      .attr('stroke-width', data => {\n        if (!data.displayedContainer) {\n          return 0;\n        }\n        if (data.displayedContainer.height + '' === '9.6') {\n          return 4;\n        } else {\n          return 1;\n        }\n      });\n    yardPoses\n      .exit()\n      .transition()\n      .duration(300)\n      .attr('opacity', '0')\n      .attr('transform', 'scale(0.5)')\n      .remove();\n  }\n\n  private _fillFunction(data: YardposInfo) {\n    // 如果提供了填充色选项则使用填充色选项的配置\n    if (this.renderOptions && this.renderOptions.fill) {\n      if (typeof this.renderOptions.fill === 'string') {\n        return this.renderOptions.fill;\n      } else {\n        return this.renderOptions.fill(data);\n      }\n    } else {\n      // 默认填充色配置\n      if (data.displayedContainer && data.displayedContainer.ctnno) {\n        return this.podColor(data.displayedContainer.pod);\n      } else if (data.plans.length > 0) {\n        if (data.plans.filter(p => p.planType === '定位组').length > 0) {\n          return 'lightgrey';\n        }\n        return 'white';\n      } else {\n        return 'white';\n      }\n    }\n  }\n\n  private _transformFunction(posInfo: YardposInfo) {\n    let x = 0;\n    let y = 0;\n    const bay = +this.yardposParser.getW(posInfo.yardpos);\n    const row = +this.yardposParser.getP(posInfo.yardpos);\n    const tier = +this.yardposParser.getC(posInfo.yardpos);\n    if (this.rotation === 90) {\n      if (bay % 2 === 1) {\n        // 基数贝\n        x = ((bay - 1) / 2) * (this.maxTier * this.baseWidth);\n        x = x + (tier - 1) * this.baseWidth;\n      } else {\n        x = (bay / 2 - 1) * (this.maxTier * this.baseWidth);\n        x = x + (tier - 1) * this.baseWidth * 2;\n      }\n      x = x + (bay - 1) * this.interval;\n      y = this.baseHeight * (row - 1);\n    } else {\n      if (bay % 2 === 1) {\n        // 基数贝\n        x = ((bay - 1) / 2) * (this.maxRow * this.baseWidth);\n        x = x + (row - 1) * this.baseWidth;\n      } else {\n        x = (bay / 2 - 1) * (this.maxRow * this.baseWidth);\n        x = x + (row - 1) * this.baseWidth * 2;\n      }\n      x = x + (bay - 1) * this.interval;\n      y = this.baseHeight * (this.maxTier - tier);\n    }\n    return `translate(${x}, ${y})`;\n  }\n\n  private draw(which: string, yardInfo: YardposInfo) {\n    if (this.renderOptions && 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","<div class=\"block-label\">{{block}}</div>\n<svg class=\"ct-yard\"></svg>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { CtYardComponent } from './ct-yard.component';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [CtYardComponent],\n  exports: [CtYardComponent]\n})\nexport class CtYardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}