UNPKG

ng-devui

Version:

DevUI components based on Angular

1 lines 56.9 kB
{"version":3,"file":"ng-devui-quadrant-diagram.mjs","sources":["../../devui/quadrant-diagram/quadrant.config.ts","../../devui/quadrant-diagram/quadrant-axis/quadrant-axis.component.ts","../../devui/quadrant-diagram/quadrant-axis/quadrant-axis.component.html","../../devui/quadrant-diagram/quadrant-diagram.service.ts","../../devui/quadrant-diagram/quadrant-label/quadrant-label.component.ts","../../devui/quadrant-diagram/quadrant-label/quadrant-label.component.html","../../devui/quadrant-diagram/quadrant-region/quadrant-region.component.ts","../../devui/quadrant-diagram/quadrant-region/quadrant-region.component.html","../../devui/quadrant-diagram/quadrant-diagram.component.ts","../../devui/quadrant-diagram/quadrant-diagram.component.html","../../devui/quadrant-diagram/quadrant-diagram.module.ts","../../devui/quadrant-diagram/ng-devui-quadrant-diagram.ts"],"sourcesContent":["export const QUADRANT_CONFIGS = [];\nexport const LABEL_SIZE = ['small', 'normal', 'large'];\nexport const DEFAULT_AXIS_CONFIGS = {\n tickWidth: 10,\n spaceBetweenLabelsAxis: 20,\n xAxisLabel: '紧急度',\n yAxisLabel: '重要度',\n xAxisRange: {\n min: 0,\n max: 100,\n step: 10\n },\n yAxisRange: {\n min: 0,\n max: 50,\n step: 5\n },\n originPosition: {\n left: 30,\n bottom: 30\n },\n axisMargin: 35,\n xWeight: 1,\n yWeight: 1\n};\nexport const DEFAULT_QUADRANT_CONFIGS = [\n { title: '重要紧急' },\n { title: '重要不紧急' },\n { title: '不重要不紧急' },\n { title: '不重要紧急' }\n];\nexport const AXIS_TITLE_SPACE = 15;\nexport const SMALL_LABEL_SIZE_CENTER_POINT = {\n x: 6, y: 6\n};\nexport const NORMAL_LABEL_SIZE_CENTER_POINT = {\n x: 45, y: 14\n};\nexport const LARGE_LABEL_SIZE_CENTER_POINT = {\n x: 60, y: 18\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { ThemeService } from 'ng-devui/theme';\r\nimport { IAxisConfigs, IViewConfigs } from '../quadrant-diagram.type';\r\nimport { AXIS_TITLE_SPACE } from '../quadrant.config';\r\n\r\n@Component({\r\n selector: 'd-quadrant-axis',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './quadrant-axis.component.html',\r\n styleUrls: ['./quadrant-axis.component.scss'],\r\n})\r\nexport class QuadrantDiagramAxisComponent implements OnInit, OnChanges {\r\n @Input() axisConfigs: IAxisConfigs;\r\n @Input() view: IViewConfigs;\r\n @Input() diagramId;\r\n quadrantAxis: any;\r\n context: any;\r\n axisOrigin: any;\r\n axisTop: number;\r\n axisRight: number;\r\n axisWidth: number;\r\n axisHeight: number;\r\n yAxisTicksNum: number;\r\n xAxisTicksNum: number;\r\n xTickSpacing: number;\r\n yTickSpacing: number;\r\n private AXIS_COLOR;\r\n private AXIS_LABEL_COLOR;\r\n themeService: ThemeService;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { axisConfigs, view } = changes;\r\n if (changes && (axisConfigs || view)) {\r\n this.resetAxis();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (typeof window !== 'undefined') {\r\n this.themeService = (window as any).devuiThemeService;\r\n if (this.themeService && this.themeService.eventBus) {\r\n this.themeService.eventBus.add('themeChanged', this.refreshColor);\r\n }\r\n this.refreshColor();\r\n }\r\n }\r\n\r\n refreshColor = () => {\r\n if (this.themeService) {\r\n this.AXIS_COLOR = this.themeService.currentTheme.data['devui-dividing-line'];\r\n this.AXIS_LABEL_COLOR = this.themeService.currentTheme.data['devui-aide-text'];\r\n }\r\n this.resetAxis();\r\n };\r\n\r\n resetAxis() {\r\n this.initAxisData();\r\n this.setAxisData();\r\n this.drawAxis();\r\n this.drawAxisLabels();\r\n }\r\n\r\n initAxisData() {\r\n this.quadrantAxis = this.elementRef.nativeElement.querySelector('d-quadrant-diagram#' + this.diagramId + ' canvas');\r\n this.quadrantAxis.width = this.view.width;\r\n this.quadrantAxis.height = this.view.height;\r\n }\r\n setAxisData() {\r\n this.context = this.quadrantAxis.getContext('2d');\r\n this.axisOrigin = this.axisConfigs.axisOrigin;\r\n this.axisTop = this.axisConfigs.axisTop;\r\n this.axisRight = this.axisConfigs.axisRight;\r\n this.axisWidth = this.axisConfigs.axisWidth;\r\n this.axisHeight = this.axisConfigs.axisHeight;\r\n this.yAxisTicksNum = this.axisConfigs.yAxisTicksNum;\r\n this.xAxisTicksNum = this.axisConfigs.xAxisTicksNum;\r\n this.xTickSpacing = this.axisConfigs.xTickSpacing;\r\n this.yTickSpacing = this.axisConfigs.yTickSpacing;\r\n }\r\n\r\n drawAxis() {\r\n this.context.save();\r\n this.context.fillStyle = this.AXIS_COLOR;\r\n this.context.strokeStyle = this.AXIS_COLOR;\r\n this.drawXAxis();\r\n this.drawYAxis();\r\n this.context.lineWidth = 0.5;\r\n this.drawYAxisTicks();\r\n this.drawXAxisTicks();\r\n this.context.restore();\r\n }\r\n\r\n drawXAxisTicks() {\r\n let deltaY;\r\n for (let i = 1; i < this.xAxisTicksNum; i++) {\r\n this.context.beginPath();\r\n // 判断显示长刻度还是短刻度\r\n if (i % this.axisConfigs.xAxisRange.step === 0) {\r\n deltaY = this.axisConfigs.tickWidth;\r\n } else {\r\n deltaY = this.axisConfigs.tickWidth / 2;\r\n }\r\n this.context.moveTo(this.axisOrigin.x + i * this.xTickSpacing, this.axisOrigin.y - deltaY);\r\n this.context.lineTo(this.axisOrigin.x + i * this.xTickSpacing, this.axisOrigin.y + deltaY);\r\n this.context.stroke();\r\n }\r\n }\r\n\r\n drawYAxisTicks() {\r\n let deltaX;\r\n for (let i = 1; i < this.yAxisTicksNum; i++) {\r\n this.context.beginPath();\r\n if (i % this.axisConfigs.yAxisRange.step === 0) {\r\n deltaX = this.axisConfigs.tickWidth;\r\n } else {\r\n deltaX = this.axisConfigs.tickWidth / 2;\r\n }\r\n this.context.moveTo(this.axisOrigin.x - deltaX, this.axisOrigin.y - i * this.yTickSpacing);\r\n this.context.lineTo(this.axisOrigin.x + deltaX, this.axisOrigin.y - i * this.yTickSpacing);\r\n this.context.stroke();\r\n }\r\n }\r\n\r\n drawYAxis() {\r\n this.context.beginPath();\r\n this.context.moveTo(this.axisOrigin.x, this.axisOrigin.y);\r\n this.context.lineTo(this.axisOrigin.x, this.axisTop - this.axisConfigs.axisMargin);\r\n this.context.stroke();\r\n this.context.moveTo(this.axisOrigin.x, this.axisTop - this.axisConfigs.axisMargin);\r\n this.context.lineTo(this.axisOrigin.x + 5, this.axisTop - this.axisConfigs.axisMargin + 10);\r\n this.context.lineTo(this.axisOrigin.x - 5, this.axisTop - this.axisConfigs.axisMargin + 10);\r\n this.context.fill();\r\n }\r\n\r\n drawXAxis() {\r\n this.context.beginPath();\r\n this.context.moveTo(this.axisOrigin.x, this.axisOrigin.y);\r\n this.context.lineTo(this.axisRight + this.axisConfigs.axisMargin - 10, this.axisOrigin.y);\r\n this.context.stroke();\r\n // 绘制坐标轴三角形\r\n this.context.moveTo(this.axisRight + this.axisConfigs.axisMargin, this.axisOrigin.y);\r\n this.context.lineTo(this.axisRight + this.axisConfigs.axisMargin - 10, this.axisOrigin.y + 5);\r\n this.context.lineTo(this.axisRight + this.axisConfigs.axisMargin - 10, this.axisOrigin.y - 5);\r\n this.context.fill();\r\n }\r\n\r\n drawAxisLabels() {\r\n this.context.save();\r\n this.context.fillStyle = this.AXIS_LABEL_COLOR;\r\n this.drawXTicksLabels();\r\n this.drawYTicksLabels();\r\n this.context.restore();\r\n this.drawAxisTitle();\r\n }\r\n\r\n drawAxisTitle() {\r\n this.context.font = '12px Microsoft YaHei';\r\n this.context.textAlign = 'left';\r\n this.context.fillStyle = this.AXIS_LABEL_COLOR;\r\n const xLabelWidth = this.context.measureText(this.axisConfigs.xAxisLabel).width;\r\n this.rotateLabel(\r\n this.axisConfigs.xAxisLabel,\r\n this.axisRight + this.axisConfigs.axisMargin / 2,\r\n this.axisOrigin.y - xLabelWidth - AXIS_TITLE_SPACE\r\n );\r\n this.context.fillText(\r\n this.axisConfigs.yAxisLabel,\r\n this.axisOrigin.x + AXIS_TITLE_SPACE,\r\n this.axisTop - this.axisConfigs.axisMargin / 2\r\n );\r\n }\r\n\r\n drawXTicksLabels() {\r\n this.context.textAlign = 'center';\r\n this.context.textBaseline = 'top';\r\n for (let i = 0; i <= this.xAxisTicksNum; i++) {\r\n if (i % this.axisConfigs.xAxisRange.step === 0) {\r\n this.context.fillText(i, this.axisOrigin.x + i * this.xTickSpacing, this.axisOrigin.y + this.axisConfigs.spaceBetweenLabelsAxis);\r\n }\r\n }\r\n }\r\n\r\n drawYTicksLabels() {\r\n this.context.textAlign = 'center';\r\n this.context.textBaseline = 'middle';\r\n for (let i = 0; i <= this.yAxisTicksNum; i++) {\r\n if (i % this.axisConfigs.yAxisRange.step === 0) {\r\n this.context.fillText(i, this.axisOrigin.x - this.axisConfigs.spaceBetweenLabelsAxis, this.axisOrigin.y - i * this.yTickSpacing);\r\n }\r\n }\r\n }\r\n\r\n rotateLabel(name, x, y) {\r\n for (let i = 0; i < name.length; i++) {\r\n const str = name.slice(i, i + 1).toString();\r\n if (str.match(/[A-Za-z0-9]/)) {\r\n this.context.save();\r\n this.context.translate(x, y);\r\n this.context.rotate((Math.PI / 180) * 90);\r\n this.context.textBaseline = 'bottom';\r\n this.context.fillText(str, 0, 0);\r\n this.context.restore();\r\n y += this.context.measureText(str).width;\r\n } else if (str.match(/[\\u4E00-\\u9FA5]/)) {\r\n this.context.save();\r\n this.context.textBaseline = 'top';\r\n this.context.fillText(str, x, y);\r\n this.context.restore();\r\n y += this.context.measureText(str).width;\r\n }\r\n }\r\n }\r\n}\r\n","<canvas id=\"devui-quadrant-axis\"></canvas>\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable()\nexport class QuadrantDiagramService {\n document: Document;\n\n constructor(@Inject(DOCUMENT) private doc: any) {\n this.document = this.doc;\n }\n showAxisLine(x, y, diagramId, view, axisConfigs) {\n const horizontalLine = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' .devui-horizontal-line') as HTMLElement;\n const verticalLine = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' .devui-vertical-line') as HTMLElement;\n const labelXAxisValue = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' #devui-label-x-axis-value') as HTMLElement;\n const labelYAxisValue = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' #devui-label-y-axis-value') as HTMLElement;\n labelXAxisValue.textContent = this.getXAxisValue(view, axisConfigs, x);\n labelYAxisValue.textContent = this.getYAxisValue(view, axisConfigs, y);\n horizontalLine.style.top = y + 'px';\n horizontalLine.style.display = '';\n verticalLine.style.left = x + 'px';\n verticalLine.style.display = '';\n }\n hideAxisLine(diagramId) {\n const horizontalLine = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' .devui-horizontal-line') as HTMLElement;\n const verticalLine = this.document.querySelector('d-quadrant-diagram#' + diagramId + ' .devui-vertical-line') as HTMLElement;\n verticalLine.style.display = 'none';\n horizontalLine.style.display = 'none';\n }\n setListPointerEvents(diagramId, value) {\n const ele = this.document.querySelectorAll('d-quadrant-diagram#' + diagramId + ' .devui-list-style');\n ele.forEach(element => {\n (element as HTMLElement).style.pointerEvents = value;\n });\n }\n getXAxisValue(view, axisConfigs, left) {\n return ((left - axisConfigs.originPosition.left) / axisConfigs.xTickSpacing).toFixed(1);\n }\n getYAxisValue(view, axisConfigs, top) {\n return ((view.height - top - axisConfigs.originPosition.bottom)\n / axisConfigs.yTickSpacing).toFixed(1);\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { QuadrantDiagramService } from '../quadrant-diagram.service';\r\nimport { IAxisConfigs, IViewConfigs } from '../quadrant-diagram.type';\r\nimport { LARGE_LABEL_SIZE_CENTER_POINT, NORMAL_LABEL_SIZE_CENTER_POINT, SMALL_LABEL_SIZE_CENTER_POINT } from '../quadrant.config';\r\n@Component({\r\n selector: 'd-quadrant-label',\r\n templateUrl: './quadrant-label.component.html',\r\n styleUrls: ['./quadrant-label.component.scss'],\r\n})\r\nexport class QuadrantLabelComponent implements OnChanges {\r\n @Input() currentLabelSize;\r\n @Input() labelData;\r\n @Input() axisConfigs: IAxisConfigs;\r\n @Input() view: IViewConfigs;\r\n @Input() normalLabelTemplate: TemplateRef<any>;\r\n @Input() largeLabelTemplate: TemplateRef<any>;\r\n @Input() smallLabelTemplate: TemplateRef<any>;\r\n @Input() dropScope;\r\n @Input() diagramId;\r\n currentCenterPoint;\r\n currentLabelTemplate;\r\n\r\n constructor(private quadrantDiagramService: QuadrantDiagramService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes?.currentLabelSize) {\r\n switch (this.currentLabelSize) {\r\n case 'small':\r\n this.currentCenterPoint = SMALL_LABEL_SIZE_CENTER_POINT;\r\n this.currentLabelTemplate = this.smallLabelTemplate;\r\n break;\r\n case 'normal':\r\n this.currentCenterPoint = NORMAL_LABEL_SIZE_CENTER_POINT;\r\n this.currentLabelTemplate = this.normalLabelTemplate;\r\n break;\r\n default:\r\n this.currentCenterPoint = LARGE_LABEL_SIZE_CENTER_POINT;\r\n this.currentLabelTemplate = this.largeLabelTemplate;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param offsetY the half height of label\r\n */\r\n getLabelTopValue(yAxisValue, offsetY) {\r\n return this.view.height - yAxisValue * this.axisConfigs.yTickSpacing - this.axisConfigs.originPosition.bottom - offsetY;\r\n }\r\n\r\n /**\r\n * @param offsetX the half width of label\r\n */\r\n getLabelLeftValue(xAxisValue, offsetX) {\r\n return xAxisValue * this.axisConfigs.xTickSpacing + this.axisConfigs.originPosition.left - offsetX;\r\n }\r\n showAxisLine(x, y) {\r\n const top = this.getLabelTopValue(y, 0);\r\n const left = this.getLabelLeftValue(x, 0);\r\n this.quadrantDiagramService.showAxisLine(left, top, this.diagramId, this.view, this.axisConfigs);\r\n }\r\n hideAxisLine() {\r\n this.quadrantDiagramService.hideAxisLine(this.diagramId);\r\n }\r\n handleDropOutRegion(event) {\r\n this.hideAxisLine();\r\n this.quadrantDiagramService.setListPointerEvents(this.diagramId, '');\r\n }\r\n}\r\n","<ng-template\n [ngTemplateOutlet]=\"currentLabelTemplate ? currentLabelTemplate : defaultLabel\"\n [ngTemplateOutletContext]=\"{\n $implicit: this,\n labelData: labelData\n }\"\n>\n</ng-template>\n<ng-template #defaultLabel let-labelData=\"labelData\">\n <div\n dDraggable\n [dragScope]=\"dropScope\"\n [dragData]=\"{ item: item, parent: labelData }\"\n (dragEndEvent)=\"handleDropOutRegion($event)\"\n *ngFor=\"let item of labelData\"\n class=\"devui-list-style devui-{{ currentLabelSize }}-size\"\n [style.position]=\"'absolute'\"\n [style.top.px]=\"getLabelTopValue(item?.y, currentCenterPoint?.y)\"\n [style.left.px]=\"getLabelLeftValue(item?.x, currentCenterPoint?.x)\"\n dPopover\n [content]=\"item?.content\"\n [position]=\"'bottom'\"\n [controlled]=\"true\"\n [trigger]=\"'hover'\"\n (mouseover)=\"showAxisLine(item?.x, item?.y)\"\n (mouseout)=\"hideAxisLine()\"\n >\n <div *ngIf=\"currentLabelSize !== 'small'\" class=\"devui-label-style\">{{ item?.title }}</div>\n <ng-container *ngIf=\"currentLabelSize === 'large'\">\n <d-progress style=\"margin-top: -4px\" [percentage]=\"item?.progress\" [percentageText]=\"''\" [strokeColor]=\"'#3ECCA6'\" [height]=\"'4px'\">\n </d-progress>\n </ng-container>\n </div>\n <div\n class=\"devui-horizontal-line\"\n [style.width.px]=\"view.width - axisConfigs.originPosition.left - axisConfigs.axisMargin\"\n [style.left.px]=\"axisConfigs.originPosition.left\"\n [style.display]=\"'none'\"\n >\n <span class=\"devui-axis-value\" id=\"devui-label-y-axis-value\"></span>\n </div>\n <div\n class=\"devui-vertical-line\"\n [style.height.px]=\"view.height - axisConfigs.originPosition.bottom - axisConfigs.axisMargin\"\n [style.top.px]=\"axisConfigs.axisMargin\"\n [style.display]=\"'none'\"\n >\n <span class=\"devui-axis-value\" id=\"devui-label-x-axis-value\"></span>\n </div>\n</ng-template>\n","import { Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { IAxisConfigs, IQuadrantConfigs, IViewConfigs } from '../quadrant-diagram.type';\r\n\r\n@Component({\r\n selector: 'd-quadrant-region',\r\n templateUrl: './quadrant-region.component.html',\r\n styleUrls: ['./quadrant-region.component.scss'],\r\n})\r\nexport class QuadrantRegionComponent implements OnInit, OnChanges {\r\n @Input() quadrantConfigs: Array<IQuadrantConfigs>;\r\n @Input() axisConfigs: IAxisConfigs;\r\n @Input() view: IViewConfigs;\r\n @Input() labelData;\r\n @Input() normalLabelTemplate: TemplateRef<any>;\r\n @Input() largeLabelTemplate: TemplateRef<any>;\r\n @Input() smallLabelTemplate: TemplateRef<any>;\r\n @Input() currentLabelSize;\r\n @Input() showQuadrants;\r\n @Input() dropScope;\r\n @Input() diagramId;\r\n quadrantHeight: number;\r\n quadrantWidth: number;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { axisConfigs, view } = changes;\r\n if (axisConfigs || view) {\r\n this.drawQuadrantRegion();\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.drawQuadrantRegion();\r\n }\r\n\r\n drawQuadrantRegion() {\r\n if (this.view && this.view.height) {\r\n this.quadrantHeight = (this.view.height - this.axisConfigs.axisMargin - this.axisConfigs.originPosition.bottom) / 2;\r\n }\r\n if (this.view && this.view.width) {\r\n this.quadrantWidth = (this.view.width - this.axisConfigs.axisMargin - this.axisConfigs.originPosition.left) / 2;\r\n }\r\n }\r\n\r\n getQuadrantTopValue(index) {\r\n let height = 0;\r\n if (index + 1 === 3 || index + 1 === 4) {\r\n height = this.quadrantHeight;\r\n }\r\n return this.axisConfigs.axisMargin + height;\r\n }\r\n\r\n getQuadrantLeftValue(index) {\r\n let width = 0;\r\n if (index + 1 === 1 || index + 1 === 4) {\r\n width = this.quadrantWidth;\r\n }\r\n return this.axisConfigs.originPosition.left + width;\r\n }\r\n}\r\n","<ng-container *ngIf=\"showQuadrants\">\n <div\n *ngFor=\"let item of quadrantConfigs; let i = index\"\n class=\"devui-quadrant-region devui-quadrant-region-{{ i + 1 }}\"\n [style.background-color]=\"item?.backgroundColor\"\n [style.height.px]=\"quadrantHeight\"\n [style.width.px]=\"quadrantWidth\"\n [style.top.px]=\"getQuadrantTopValue(i)\"\n [style.left.px]=\"getQuadrantLeftValue(i)\"\n >\n <div class=\"devui-quadrant-title\" [style.color]=\"item?.color\">\n <span>{{ item?.title }}</span>\n </div>\n </div>\n</ng-container>\n<d-quadrant-label\n [currentLabelSize]=\"currentLabelSize\"\n [labelData]=\"labelData\"\n [axisConfigs]=\"axisConfigs\"\n [view]=\"view\"\n [dropScope]=\"dropScope\"\n [diagramId]=\"diagramId\"\n></d-quadrant-label>\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { QuadrantDiagramService } from './quadrant-diagram.service';\r\nimport { IAxisConfigs, ILabelDataConfigs, IQuadrantConfigs, IViewConfigs, labelSize } from './quadrant-diagram.type';\r\nimport { DEFAULT_AXIS_CONFIGS, DEFAULT_QUADRANT_CONFIGS, LABEL_SIZE } from './quadrant.config';\r\n\r\n@Component({\r\n selector: 'd-quadrant-diagram',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './quadrant-diagram.component.html',\r\n styleUrls: ['./quadrant-diagram.component.scss'],\r\n})\r\nexport class QuadrantDiagramComponent implements OnInit, OnChanges {\r\n static ID_SEED = 0;\r\n @Input() axisConfigs: IAxisConfigs = DEFAULT_AXIS_CONFIGS;\r\n @Input() quadrantConfigs: Array<IQuadrantConfigs> = DEFAULT_QUADRANT_CONFIGS;\r\n @Input() view: IViewConfigs = {\r\n height: 900,\r\n width: 950,\r\n };\r\n @Input() normalLabelTemplate: TemplateRef<any>;\r\n @Input() largeLabelTemplate: TemplateRef<any>;\r\n @Input() smallLabelTemplate: TemplateRef<any>;\r\n @Input() labelData: Array<ILabelDataConfigs> = [];\r\n @Input() currentLabelSize: labelSize = 'large';\r\n @Input() showQuadrants = true;\r\n @Input() diagramId;\r\n @Output() dropEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() zoomInEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() zoomOutEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() fullScreenEvent: EventEmitter<any> = new EventEmitter<any>();\r\n @Input() dropScope = 'default';\r\n @Input() showToolbar = true;\r\n private originHeight;\r\n private originWidth;\r\n isFullScreen = false;\r\n @HostBinding('attr.id')\r\n get id() {\r\n return this.diagramId;\r\n }\r\n constructor(private quadrantDiagramService: QuadrantDiagramService) {\r\n if (this.diagramId === undefined) {\r\n const id = QuadrantDiagramComponent.ID_SEED++;\r\n this.diagramId = 'devui-quadrant-diagram-' + id;\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.initAxisData();\r\n this.originHeight = this.view.height;\r\n this.originWidth = this.view.width;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { axisConfigs, view } = changes;\r\n if (axisConfigs || view) {\r\n this.initAxisData();\r\n this.originHeight = this.view.height;\r\n this.originWidth = this.view.width;\r\n }\r\n }\r\n\r\n launchFullscreen({ isFullscreen }) {\r\n if (typeof window !== 'undefined' && isFullscreen) {\r\n this.isFullScreen = isFullscreen;\r\n this.view = {\r\n height: window.screen.height,\r\n width: window.screen.width,\r\n };\r\n this.initAxisData();\r\n } else {\r\n this.isFullScreen = isFullscreen;\r\n this.view = {\r\n height: this.originHeight,\r\n width: this.originWidth,\r\n };\r\n this.initAxisData();\r\n }\r\n this.fullScreenEvent.emit(isFullscreen);\r\n }\r\n\r\n onDrop(e: any) {\r\n const xAxisValue = this.quadrantDiagramService.getXAxisValue(this.view, this.axisConfigs, e.nativeEvent.offsetX);\r\n const yAxisValue = this.quadrantDiagramService.getYAxisValue(this.view, this.axisConfigs, e.nativeEvent.offsetY);\r\n this.quadrantDiagramService.setListPointerEvents(this.diagramId, '');\r\n this.quadrantDiagramService.hideAxisLine(this.diagramId);\r\n this.dropEvent.emit({ dragData: e.dragData, xAxisValue: xAxisValue, yAxisValue: yAxisValue });\r\n }\r\n\r\n initAxisData() {\r\n const axisConfigKeys = Object.keys(DEFAULT_AXIS_CONFIGS);\r\n for (let i = 0; i < axisConfigKeys.length; i++) {\r\n if (this.axisConfigs[axisConfigKeys[i]] === undefined) {\r\n this.axisConfigs[axisConfigKeys[i]] = DEFAULT_AXIS_CONFIGS[axisConfigKeys[i]];\r\n }\r\n }\r\n this.axisConfigs.axisOrigin = {\r\n x: this.axisConfigs.originPosition.left,\r\n y: this.view.height - this.axisConfigs.originPosition.bottom,\r\n };\r\n this.axisConfigs.axisTop = this.axisConfigs.axisMargin;\r\n this.axisConfigs.axisRight = this.view.width - this.axisConfigs.axisMargin;\r\n this.axisConfigs.axisWidth = this.axisConfigs.axisRight - this.axisConfigs.axisOrigin.x;\r\n this.axisConfigs.axisHeight = this.axisConfigs.axisOrigin.y - this.axisConfigs.axisTop;\r\n this.axisConfigs.yAxisTicksNum = this.axisConfigs.yAxisRange.max - this.axisConfigs.yAxisRange.min;\r\n this.axisConfigs.xAxisTicksNum = this.axisConfigs.xAxisRange.max - this.axisConfigs.xAxisRange.min;\r\n this.axisConfigs.xTickSpacing = this.axisConfigs.axisWidth / this.axisConfigs.xAxisTicksNum;\r\n this.axisConfigs.yTickSpacing = this.axisConfigs.axisHeight / this.axisConfigs.yAxisTicksNum;\r\n }\r\n\r\n zoomOut(size) {\r\n const index = LABEL_SIZE.indexOf(size);\r\n if (index > 0) {\r\n this.currentLabelSize = LABEL_SIZE[index - 1] as labelSize;\r\n }\r\n this.zoomOutEvent.emit(this.currentLabelSize);\r\n }\r\n\r\n zoomIn(size) {\r\n const index = LABEL_SIZE.indexOf(size);\r\n if (index < LABEL_SIZE.length - 1) {\r\n this.currentLabelSize = LABEL_SIZE[index + 1] as labelSize;\r\n }\r\n this.zoomInEvent.emit(this.currentLabelSize);\r\n }\r\n\r\n dragOverEvent(e) {\r\n this.quadrantDiagramService.setListPointerEvents(this.diagramId, 'none');\r\n this.quadrantDiagramService.showAxisLine(e.offsetX, e.offsetY, this.diagramId, this.view, this.axisConfigs);\r\n }\r\n\r\n handleDropOut() {\r\n this.quadrantDiagramService.setListPointerEvents(this.diagramId, '');\r\n this.quadrantDiagramService.hideAxisLine(this.diagramId);\r\n }\r\n}\r\n","<d-fullscreen (fullscreenLaunch)=\"launchFullscreen($event)\" [zIndex]=\"1001\">\n <div fullscreen-target>\n <div\n [id]=\"diagramId\"\n dDroppable\n [dropScope]=\"dropScope\"\n (dragOverEvent)=\"dragOverEvent($event)\"\n (dropEvent)=\"onDrop($event)\"\n (dragleave)=\"handleDropOut()\"\n class=\"devui-quadrant-diagram\"\n [style.height.px]=\"view?.height\"\n [style.width.px]=\"view?.width\"\n >\n <div *ngIf=\"showToolbar\" class=\"devui-control-zoom-container\" [style.right.px]=\"axisConfigs.axisMargin\">\n <div class=\"devui-icon-display\" [class.disabled]=\"currentLabelSize === 'small'\" (click)=\"zoomOut(currentLabelSize)\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <polygon fill=\"#293040\" points=\"14 7 14 9 2 9 2 7\"></polygon>\n </g>\n </svg>\n </div>\n <div class=\"devui-icon-display\" [class.disabled]=\"currentLabelSize === 'large'\" (click)=\"zoomIn(currentLabelSize)\">\n <svg\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <polygon fill=\"#293040\" points=\"7 7 7 2 9 2 9 7 14 7 14 9 9 9 9 14 7 14 7 9 2 9 2 7\"></polygon>\n </g>\n </svg>\n </div>\n <div fullscreen-launch class=\"devui-icon-display\">\n <svg\n *ngIf=\"!isFullScreen\"\n width=\"14px\"\n height=\"14px\"\n viewBox=\"0 0 14 14\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g transform=\"translate(-1482.000000, -1285.000000)\" fill=\"#293040\" fill-rule=\"nonzero\">\n <g transform=\"translate(1481.000000, 1284.000000)\">\n <path\n d=\"M15,1 L15,6 L13,6 L13,3 L10,3 L10,1 L15,1 Z M15,10 L15,15 L10,15 L10,13 L13,13 L13,10 L15,10\n Z M1,15 L1,10 L3,10 L3,13 L6,13 L6,15 L1,15 Z M1,1 L6,1 L6,3 L3,3 L3,6 L1,6 L1,1 Z\"\n id=\"Combined-Shape\"\n ></path>\n </g>\n </g>\n </g>\n </svg>\n <svg\n *ngIf=\"isFullScreen\"\n width=\"16px\"\n height=\"16px\"\n viewBox=\"0 0 16 16\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path\n d=\"M10,6 L10,1 L12,1 L12,4 L15,4 L15,6 L10,6 Z M6,1 L6,6 L1,6 L1,4 L4,4 L4,1 L6,1 Z M10,15 L10,10 L15,10 L15,12\n L12,12 L12,15 L10,15 Z M6,10 L6,15 L4,15 L4,12 L1,12 L1,10 L6,10 Z\"\n id=\"形状\"\n fill=\"#293040\"\n fill-rule=\"nonzero\"\n ></path>\n </g>\n </svg>\n </div>\n </div>\n <d-quadrant-axis [diagramId]=\"diagramId\" [view]=\"view\" [axisConfigs]=\"axisConfigs\"></d-quadrant-axis>\n <d-quadrant-region\n [view]=\"view\"\n [labelData]=\"labelData\"\n [axisConfigs]=\"axisConfigs\"\n [quadrantConfigs]=\"quadrantConfigs\"\n [currentLabelSize]=\"currentLabelSize\"\n [showQuadrants]=\"showQuadrants\"\n [dropScope]=\"dropScope\"\n [diagramId]=\"diagramId\"\n ></d-quadrant-region>\n </div>\n </div>\n</d-fullscreen>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { QuadrantDiagramAxisComponent } from './quadrant-axis/quadrant-axis.component';\nimport { QuadrantDiagramComponent } from './quadrant-diagram.component';\n\nimport { DragDropModule } from 'ng-devui/dragdrop';\nimport { FullscreenModule } from 'ng-devui/fullscreen';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { ProgressModule } from 'ng-devui/progress';\nimport { SafePipeModule } from 'ng-devui/utils';\nimport { QuadrantDiagramService } from './quadrant-diagram.service';\nimport { QuadrantLabelComponent } from './quadrant-label/quadrant-label.component';\nimport { QuadrantRegionComponent } from './quadrant-region/quadrant-region.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n DragDropModule,\n ProgressModule,\n PopoverModule,\n ProgressModule,\n FullscreenModule,\n SafePipeModule\n ],\n exports: [\n QuadrantDiagramComponent\n ],\n declarations: [\n QuadrantDiagramComponent,\n QuadrantDiagramAxisComponent,\n QuadrantRegionComponent,\n QuadrantLabelComponent\n ],\n providers: [QuadrantDiagramService]\n})\nexport class QuadrantDiagramModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.QuadrantDiagramService","i1","i2.QuadrantLabelComponent","i4","i5.QuadrantDiagramAxisComponent","i6.QuadrantRegionComponent"],"mappings":"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