UNPKG

@obliczeniowo/elementary

Version:
1 lines 34.3 kB
{"version":3,"file":"obliczeniowo-elementary-categories-relations.mjs","sources":["../../../../projects/components/categories-relations/components/relation-item/relation-item.component.ts","../../../../projects/components/categories-relations/components/relation-item/relation-item.component.html","../../../../projects/components/categories-relations/components/categories-relations/categories-relations.component.ts","../../../../projects/components/categories-relations/components/categories-relations/categories-relations.component.html","../../../../projects/components/categories-relations/categories-relations.module.ts","../../../../projects/components/categories-relations/obliczeniowo-elementary-categories-relations.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, Output, HostListener, HostBinding, input, effect } from '@angular/core';\nimport { Category } from '@obliczeniowo/elementary/categories';\nimport { RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\nimport { IPoint2D, Point2D } from '@obliczeniowo/elementary/classes';\nimport { MenuComponent } from '@obliczeniowo/elementary/menu';\nimport { Subscription } from 'rxjs';\n\nexport type RelationSide = 'left' | 'right';\n\nexport interface RelationItemClicked {\n side: RelationSide;\n category: Category;\n pos: IPoint2D;\n}\n\n@Component({\n selector: 'obl-relation-item',\n templateUrl: './relation-item.component.html',\n styleUrls: ['./relation-item.component.scss'],\n standalone: false\n})\nexport class RelationItemComponent {\n category = input<Category>({ name: 'unknown' });\n\n side = input<RelationSide>('left');\n\n relations = input<RelationConnectorComponent[]>([]);\n\n menu = input<MenuComponent>();\n\n disabled = input<boolean>();\n\n @Output() clicked = new EventEmitter<RelationItemClicked>();\n\n @Output() remove = new EventEmitter<{ category: Category; side: RelationSide }>();\n\n @Output() editColor = new EventEmitter<{ category: Category; side: RelationSide }>();\n\n protected subscription!: Subscription;\n\n protected haveRelations = false;\n\n @HostListener('click') onClick() {\n this.clicked.emit({ side: this.side(), category: this.category(), pos: this.position });\n }\n\n @Output() hovered = new EventEmitter<RelationItemComponent>();\n\n protected menuItems = [\n {\n id: 1,\n text: 'Delete',\n command: 'delete',\n },\n {\n id: 2,\n text: 'Set color',\n command: 'set-color',\n }\n ]\n\n @HostListener('mouseover') onMouseOver() {\n this.hovered.emit(this);\n\n const menu = this.menu();\n if (menu && !this.disabled()) {\n menu.items = this.haveRelations ? this.menuItems : [];\n }\n }\n\n @HostListener('mouseleave') onMouseLeave() {\n const menu = this.menu();\n if (menu && !menu?.opened) {\n menu.items = [];\n }\n }\n\n @HostBinding('class.left') get isLeft() {\n return this.side() === 'left';\n }\n\n @HostBinding('class.right') get isRight() {\n return this.side() === 'right';\n }\n\n constructor(protected elementRef: ElementRef<HTMLElement>) {\n effect(() => {\n this.update();\n })\n\n effect(() => {\n const menu = this.menu();\n if (this.subscription && !this.subscription?.closed) {\n this.subscription.unsubscribe();\n }\n if (!menu) {\n return;\n }\n this.subscription = menu.command.subscribe((command) => {\n if (menu?.items !== this.menuItems) {\n return;\n }\n switch (command) {\n case 'delete':\n this.remove.emit(\n {\n category: this.category(),\n side: this.side()\n }\n )\n if (menu) {\n menu.items = [];\n }\n this.haveRelations = false;\n break;\n case 'set-color':\n this.editColor.emit({\n category: this.category(),\n side: this.side()\n })\n break;\n case 'on-close':\n menu.items = [];\n break;\n }\n })\n })\n\n effect(() => {\n const disabled = this.disabled();\n const menu = this.menu();\n if (!disabled && menu) {\n menu.items = [];\n }\n })\n }\n\n ngOnDestroy(): void {\n if (this.subscription && !this.subscription?.closed) {\n this.subscription.unsubscribe();\n }\n }\n\n update() {\n if (this.category() && this.relations()) {\n setTimeout(() => {\n const items = this.relations().filter(relation => relation.connector?.[this.side()] === this.category().name);\n\n const dy = 1;\n\n this.haveRelations = !!items.length;\n\n let pos: Point2D = this.position as Point2D;\n pos = new Point2D(pos.x, pos.y - items.length * dy * 0.5);\n\n items.forEach((item, index) => {\n item[this.side()] = pos.add(new Point2D(0, dy * index));\n item.change.detectChanges();\n })\n })\n }\n }\n\n get position() {\n const rect = this.elementRef.nativeElement.getBoundingClientRect() as DOMRect;\n const parent = this.elementRef.nativeElement.parentElement?.parentElement?.getBoundingClientRect() as DOMRect;\n\n const side = this.side() === 'left' ? 'right' : 'left';\n\n const dx = side === 'right' ? 10 : -10;\n\n return { x: rect[side] - parent.left + dx, y: rect.top + rect.height / 2 - parent.y };\n }\n}\n","<div class=\"connection-point\"></div>\n{{ category().name }}\n","import { Component, Input, ElementRef, ViewChildren, QueryList, EventEmitter, ChangeDetectorRef, Output, HostListener, ViewChild, input } from '@angular/core';\nimport { Category } from '@obliczeniowo/elementary/categories';\nimport { RelationItemClicked, RelationItemComponent, RelationSide } from '../relation-item/relation-item.component';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\nimport { ColorRGB, IPoint2D } from '@obliczeniowo/elementary/classes';\nimport { Connector, RelationConnectorComponent } from '@obliczeniowo/elementary/connectors';\nimport { MenuComponent } from '@obliczeniowo/elementary/menu';\nimport { DialogWrapperComponent } from '@obliczeniowo/elementary/dialogs';\nimport { ColorComponent } from '@obliczeniowo/elementary/color-picker';\n\n/**\n * Relations item let you create corelation between left items and right one in graphical way and modify them\n *\n * [menu] - add context menu component {@link MenuComponent} from {@link MenuModule}. Do not set menu items, this component\n * will set them up by them self\n * [translations] - set the translations using as key current (default) english text and value as new one (translated) to display\n */\n@Component({\n selector: 'obl-categories-relations',\n templateUrl: './categories-relations.component.html',\n styleUrls: ['./categories-relations.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: CategoriesRelationsComponent\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: CategoriesRelationsComponent\n }\n ],\n standalone: false\n})\nexport class CategoriesRelationsComponent implements ControlValueAccessor {\n /**\n * right side categories\n */\n @Input() left: Category[] = [];\n /**\n * left side categories\n */\n @Input() right: Category[] = [];\n /**\n * connectors array to create {@link RelationConnectorComponent}\n */\n @Input() connectors: Connector[] = [];\n /**\n * [translations] - set the translations using as key current (default) english text and value as new one (translated) to display\n */\n translations = input<{ [english: string]: string }>({});\n // context menu component reference\n menu = input<MenuComponent>();\n\n @Output() changed = new EventEmitter<{ left: Category[]; right: Category[]; connectors: Connector[] }>();\n\n @ViewChild(DialogWrapperComponent) color!: DialogWrapperComponent;\n\n protected width: number = 0;\n protected height: number = 0;\n\n observer = new ResizeObserver(() => {\n this.width = this.elementRef.nativeElement.clientWidth;\n this.height = this.elementRef.nativeElement.clientHeight;\n\n this.items?.forEach(item => item.update())\n });\n\n protected highlight?: string;\n\n protected categoryItemSelected?: RelationItemClicked;\n protected mousePos?: IPoint2D;\n\n @ViewChildren(RelationConnectorComponent) set relations(relation: QueryList<RelationConnectorComponent>) {\n setTimeout(() => this.relationsChanged = relation.toArray())\n };\n\n @ViewChildren(RelationItemComponent) items!: QueryList<RelationItemComponent>;\n\n @ViewChild(ColorComponent) colorPicker!: ColorComponent;\n\n @HostListener('mouseover') onMouseOver() {\n const menu = this.menu();\n if (menu) {\n menu.target = this.elementRef.nativeElement;\n menu.translations = this.translations();\n }\n }\n\n @Input() disabled?: boolean;\n\n protected relationsChanged: RelationConnectorComponent[] = [];\n\n protected target: any;\n\n protected connectorsSelected?: Connector[];\n\n constructor(protected elementRef: ElementRef<HTMLElement>, protected changes: ChangeDetectorRef) {\n }\n\n onChange = (value: { left: Category[]; right: Category[]; connectors: Connector[] }) => {\n this.changed.emit(value);\n };\n\n onTouched = () => { };\n\n onMove(event: MouseEvent) {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const mousePos = { x: event.x - rect.x, y: event.y - rect.y }\n if (this.categoryItemSelected) {\n if (this.categoryItemSelected.side === 'left') {\n this.mousePos = { x: Math.max(mousePos.x, this.categoryItemSelected?.pos.x + 50), y: mousePos.y }\n } else {\n this.mousePos = { x: Math.min(mousePos.x, this.categoryItemSelected?.pos.x), y: mousePos.y }\n }\n }\n }\n\n writeValue(obj: { left: Category[]; right: Category[]; connectors: Connector[] }): void {\n Object.assign(this, obj);\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouched = onTouched;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n validate(control: any): ValidationErrors | null {\n return null;\n }\n\n ngOnInit() {\n this.observer.observe(this.elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.observer.unobserve(this.elementRef.nativeElement);\n }\n\n onHoverOverItem(item: RelationItemComponent) {\n if (this.categoryItemSelected?.side !== item.side()) {\n this.mousePos = item.position;\n } else {\n const { x, y } = this.categoryItemSelected.pos;\n this.mousePos = { x: this.categoryItemSelected?.side === 'left' ? x + 50 : x - 50, y };\n }\n }\n\n onRemove(item: { category: Category; side: RelationSide }) {\n this.connectors = this.connectors.filter(connector => connector[item.side] !== item.category.name);\n const prepare = { left: this.left, right: this.right, connectors: this.connectors };\n\n this.changed.emit(prepare);\n\n if (this.onChange) {\n this.onChange(prepare);\n }\n const menu = this.menu();\n if (menu) {\n menu.items = [];\n }\n }\n\n setColor(color: ColorRGB) {\n this.color.close();\n if (this.connectorsSelected) {\n this.connectorsSelected.forEach(item => {\n item.color = color.getHexColorBase;\n })\n\n this.connectors = [...this.connectors];\n const prepare = { left: this.left, right: this.right, connectors: this.connectors };\n this.changed.emit(prepare);\n if (this.onChange) {\n this.onChange(prepare);\n }\n }\n }\n\n onEditColor(item: { category: Category; side: RelationSide }) {\n if (this.disabled) {\n return;\n }\n\n this.color.open({ minWidth: '540px' });\n this.colorPicker.chosenColor = ColorRGB.fromHtmlColor(item.category?.color || '#ff0000');\n this.connectorsSelected = this.connectors.filter(connector => connector[item.side] === item.category.name)\n\n const menu = this.menu();\n if (menu) {\n menu.items = [];\n }\n }\n\n onEditColorConnector(connector: Connector) {\n if (this.disabled) {\n return;\n }\n\n this.connectorsSelected = [connector];\n this.color.open({ minWidth: '540px' });\n this.colorPicker.chosenColor = ColorRGB.fromHtmlColor(connector.color || '#ff0000');\n this.colorPicker.ngAfterViewInit();\n }\n\n removeConnector(connector: Connector) {\n if (this.disabled) {\n return;\n }\n this.connectors = this.connectors.filter(conn => !(conn.left === connector.left && conn.right === connector.right));\n this.onChange({ left: this.left, right: this.right, connectors: this.connectors });\n this.changes.detectChanges();\n }\n\n addConnector(categoryItem: RelationItemClicked) {\n if (this.disabled) {\n return;\n }\n if (!this.categoryItemSelected) {\n this.categoryItemSelected = categoryItem;\n this.mousePos = { x: this.categoryItemSelected.pos.x + (this.categoryItemSelected.side === 'left' ? 50 : -50), y: this.categoryItemSelected.pos.y };\n } else {\n if (this.categoryItemSelected.side === categoryItem.side) {\n this.categoryItemSelected = undefined;\n return;\n }\n if (this.connectors.find(con =>\n con?.[categoryItem.side] === categoryItem.category.name &&\n this.categoryItemSelected &&\n con?.[this.categoryItemSelected.side] === this.categoryItemSelected.category.name\n )) {\n this.categoryItemSelected = undefined;\n return;\n }\n this.connectors = [...this.connectors,\n {\n [categoryItem.side]: categoryItem.category.name,\n [this.categoryItemSelected.side]: this.categoryItemSelected.category.name,\n color: categoryItem.side === 'left' ? categoryItem.category.color : this.categoryItemSelected.category.color\n } as any].sort((a: Connector, b: Connector) => {\n return this.left.findIndex(w => w.name === a.left) * this.left.length - this.left.findIndex(w => w.name === b.left) * this.left.length +\n this.right.findIndex(w => w.name === a.right) - this.right.findIndex(w => w.name === b.right);\n });\n\n this.onChange({ left: this.left, right: this.right, connectors: this.connectors });\n\n this.categoryItemSelected = undefined;\n }\n }\n}\n","<svg\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n (mousemove)=\"onMove($event)\"\n (click)=\"categoryItemSelected = undefined\"\n>\n @for(connector of connectors; track $index) {\n <g\n obl-relation-connector\n [connector]=\"connector\"\n [highlighted]=\"highlight\"\n [disabled]=\"disabled\"\n [menu]=\"menu()\"\n [translations]=\"translations()\"\n (clicked)=\"removeConnector($event)\"\n (remove)=\"removeConnector($event)\"\n (editColor)=\"onEditColorConnector($event)\"\n ></g>\n }\n\n @if (categoryItemSelected) {\n <g\n obl-relation-connector\n class=\"selected\"\n [left]=\"\n categoryItemSelected.side === 'left' ? categoryItemSelected.pos : mousePos\n \"\n [right]=\"\n categoryItemSelected.side === 'right'\n ? categoryItemSelected.pos\n : mousePos\n \"\n [defaultColor]=\"'red'\"\n (clicked)=\"removeConnector($event)\"\n ></g>\n }\n</svg>\n\n<div class=\"left-section\">\n @for(item of left; track item.name) {\n <obl-relation-item\n [category]=\"item\"\n [relations]=\"relationsChanged\"\n [disabled]=\"disabled\"\n [menu]=\"menu()\"\n (mouseover)=\"highlight = item.name\"\n (mouseleave)=\"highlight = undefined\"\n (clicked)=\"addConnector($event)\"\n (hovered)=\"onHoverOverItem($event)\"\n (remove)=\"onRemove($event)\"\n (editColor)=\"onEditColor($event)\"\n ></obl-relation-item>\n }\n</div>\n\n<div class=\"right-section\">\n @for (item of right; track item.name) {\n <obl-relation-item\n [category]=\"item\"\n [relations]=\"relationsChanged\"\n [side]=\"'right'\"\n [disabled]=\"disabled\"\n [menu]=\"menu()\"\n (mouseover)=\"highlight = item.name\"\n (mouseleave)=\"highlight = undefined\"\n (clicked)=\"addConnector($event)\"\n (hovered)=\"onHoverOverItem($event)\"\n (remove)=\"onRemove($event)\"\n (editColor)=\"onEditColor($event)\"\n ></obl-relation-item>\n }\n</div>\n\n<obl-dialog-wrapper\n [header]=\"translations()['Color picker'] || 'Color picker'\"\n #color\n>\n <obl-color\n [translations]=\"{\n red: translations()['Red'] || 'Red',\n green: translations()['Green'] || 'Green',\n blue: translations()['Blue'] || 'Blue',\n alpha: translations()['Alpha'] || 'Transparent'\n }\"\n #colorSet\n ></obl-color>\n <div class=\"buttons\">\n <button oblButton (click)=\"setColor(colorSet.chosenColor)\">\n {{ translations()['Ok'] || 'Ok' }}\n </button>\n <button oblButton (click)=\"color.close()\">\n {{ translations()['Cancel'] || 'Cancel' }}\n </button>\n </div>\n</obl-dialog-wrapper>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RelationItemComponent } from './components/relation-item/relation-item.component';\nimport { CategoriesRelationsComponent } from './components/categories-relations/categories-relations.component';\nimport { ConnectorsModule } from '@obliczeniowo/elementary/connectors';\nimport { MenuModule } from '@obliczeniowo/elementary/menu';\nimport { DialogsModule } from '@obliczeniowo/elementary/dialogs';\nimport { ColorPickerModule } from '@obliczeniowo/elementary/color-picker';\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\n\n\n@NgModule({\n declarations: [\n RelationItemComponent,\n CategoriesRelationsComponent,\n ],\n imports: [\n CommonModule,\n ConnectorsModule,\n MenuModule,\n DialogsModule,\n ColorPickerModule,\n ButtonsModule\n ],\n exports: [\n CategoriesRelationsComponent\n ]\n})\nexport class CategoriesRelationsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5.RelationItemComponent"],"mappings":"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"}