@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 55.2 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-categories.mjs","sources":["../../../../projects/components/categories/classes/abstract-combine-adapter.ts","../../../../projects/components/categories/classes/combine-name-and-index-adapter.ts","../../../../projects/components/categories/classes/combine-name-adapter.ts","../../../../projects/components/categories/components/single-combination/single-combination.component.ts","../../../../projects/components/categories/components/single-combination/single-combination.component.html","../../../../projects/components/categories/components/combine-categories/combine-categories.component.ts","../../../../projects/components/categories/components/combine-categories/combine-categories.component.html","../../../../projects/components/categories/components/half-matrix-combine-categories/half-matrix-combine-categories.component.ts","../../../../projects/components/categories/components/half-matrix-combine-categories/half-matrix-combine-categories.component.html","../../../../projects/components/categories/categories.module.ts","../../../../projects/components/categories/classes/combine-id-adapter.ts","../../../../projects/components/categories/obliczeniowo-elementary-categories.ts"],"sourcesContent":["import { AdapterConnector } from './../interfaces/adapter-connector';\r\n\r\nexport abstract class AbstractCombineAdapter<T> {\r\n protected adapterConnector!: AdapterConnector;\r\n\r\n constructor(adapterConnector?: AdapterConnector) {\r\n if (adapterConnector) {\r\n this.adapterConnector = adapterConnector;\r\n }\r\n }\r\n\r\n setAdapterConnector(adapterConnector: AdapterConnector): void {\r\n this.adapterConnector = adapterConnector;\r\n }\r\n\r\n toTag(index1: number, index2: number, reversed?: boolean): string {\r\n if (index1 === -1 || index2 === -1) {\r\n throw new Error('index incorrect');\r\n }\r\n return reversed ? `${Math.max(index1, index2)}-${Math.min(index1, index2)}` : `${Math.min(index1, index2)}-${Math.max(index1, index2)}`;\r\n }\r\n\r\n abstract findIndex(data: T): number;\r\n abstract fromIndex(index: number): T;\r\n\r\n abstract convert(): T[][];\r\n abstract transform(data: T[][], reversed?: boolean): string[];\r\n}\r\n","import { CategoryWithId } from '../interfaces/category';\r\nimport { AbstractCombineAdapter } from './abstract-combine-adapter';\r\n\r\nexport class CombineNameAndIndexAdapter extends AbstractCombineAdapter<CategoryWithId> {\r\n findIndex(data: CategoryWithId): number {\r\n return this.adapterConnector.categories.findIndex(c => c.name === data.name);\r\n }\r\n\r\n fromIndex(index: number): CategoryWithId {\r\n if (index === -1) {\r\n throw new Error('index incorrect');\r\n }\r\n return { ...this.adapterConnector.categories[index], id: index + 1 };\r\n }\r\n\r\n convert(): CategoryWithId[][] {\r\n return this.adapterConnector.selected.map(tag => {\r\n const splitted = tag.split('-');\r\n\r\n return [\r\n this.fromIndex(+splitted[0] - 1),\r\n this.fromIndex(+splitted[1] - 1)\r\n ];\r\n });\r\n }\r\n\r\n transform(data: CategoryWithId[][], reversed?: boolean): string[] {\r\n return data.map(categories => (this.toTag(\r\n (categories[0].id ?? this.findIndex(categories[0]) + 1),\r\n (categories[1].id ?? this.findIndex(categories[1]) + 1), reversed)\r\n ));\r\n }\r\n}\r\n","import { Category } from '../interfaces/category';\r\nimport { AbstractCombineAdapter } from './abstract-combine-adapter';\r\n\r\nexport class CombineNameAdapter extends AbstractCombineAdapter<Category> {\r\n findIndex(data: Category): number {\r\n return this.adapterConnector.categories.findIndex(c => c.name === data.name);\r\n }\r\n\r\n fromIndex(index: number): Category {\r\n if (index === -1) {\r\n throw new Error('index incorrect');\r\n }\r\n return this.adapterConnector.categories[index];\r\n }\r\n\r\n convert(): Category[][] {\r\n return this.adapterConnector.selected.map(tag => {\r\n const splitted = tag.split('-');\r\n return [\r\n this.fromIndex(+splitted[0] - 1),\r\n this.fromIndex(+splitted[1] - 1)\r\n ];\r\n });\r\n }\r\n\r\n transform(data: Category[][], reversed?: boolean): string[] {\r\n return data.map(categories => (this.toTag(\r\n this.findIndex(categories[0]) + 1,\r\n this.findIndex(categories[1]) + 1,\r\n reversed)\r\n ));\r\n }\r\n}\r\n","import { Category } from './../../interfaces/category';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'obl-single-combination',\r\n templateUrl: './single-combination.component.html',\r\n styleUrls: ['./single-combination.component.scss'],\r\n standalone: false\r\n})\r\nexport class SingleCombinationComponent {\r\n @Input()\r\n categories!: [Category, Category];\r\n}\r\n","<div>\r\n <div [class]=\"'left ' + categories[0].class\">\r\n {{ categories[0].name }}\r\n </div>\r\n <div [class]=\"'right ' + categories[1].class\">\r\n {{ categories[1].name }}\r\n </div>\r\n</div>\r\n","import { CategoryWithId } from './../../interfaces/category';\r\nimport { CombineNameAndIndexAdapter } from './../../classes/combine-name-and-index-adapter';\r\nimport { AdapterConnector } from './../../interfaces/adapter-connector';\r\nimport { Component, Input, Output, EventEmitter, HostBinding, SimpleChanges, OnChanges, input } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { Category } from '../../interfaces/category';\r\n\r\nimport { CombineNameAdapter } from '../../classes/combine-name-adapter';\r\nimport { AbstractCombineAdapter } from '../../classes/abstract-combine-adapter';\r\n\r\ninterface Coords {\r\n x1: number;\r\n y1: number;\r\n x2: number;\r\n y2: number;\r\n transform: string;\r\n}\r\n\r\n@Component({\r\n selector: 'obl-combine-categories',\r\n templateUrl: './combine-categories.component.html',\r\n styleUrls: ['./combine-categories.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CombineCategoriesComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: CombineCategoriesComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class CombineCategoriesComponent implements OnChanges, ControlValueAccessor, AdapterConnector {\r\n /**\r\n * Selected list in format of string containing id's combination: ['1-2', '1-3'] values should not repeat\r\n *\r\n * Used to modify selection by adapter field object\r\n *\r\n * Rather not modify from outside but you can do that too\r\n */\r\n selected: string[] = [];\r\n /**\r\n * If set display the obl-single-category components, depends on the displaySingle input field\r\n */\r\n single: [CategoryWithId, CategoryWithId][] = [];\r\n\r\n protected suffix = `-obl-${Math.floor(Math.random() * 1000000)}`;\r\n protected touched = false;\r\n protected disableParts: string[] = [];\r\n\r\n /**\r\n * Adapt model input/output to your needs.\r\n *\r\n * Default: CombineNameAdapter is used\r\n *\r\n * There exists another ones:\r\n *\r\n * CombineIdAdapter - accept input/output format: [[1, 2], [1, 3]] <- select / emit categories by\r\n * pair of id's. Id's are number from 1 - 6 (step 1 of course)\r\n */\r\n adapter = input<AbstractCombineAdapter<any>>(new CombineNameAdapter(this));\r\n\r\n /**\r\n * Set selected categories\r\n */\r\n @Input() value: (Category | number)[][] = [];\r\n\r\n /**\r\n * Disable whole things\r\n */\r\n @Input()\r\n @HostBinding('class.disabled') disabled: any = false;\r\n\r\n /**\r\n * Disable specific combination of categories (format depends on type of adapter used inside)\r\n *\r\n * When the adapter field is instance of CombineNameAdapter then to disable \"Category 1\" i \"Category 2\":\r\n *\r\n * @example\r\n *\r\n * <obl-combine-categories [value]=\"selected\" (valueChanged)=\"changed($event)\"\r\n * [disable]=\"[[{ name: 'Category 1' }, { name: 'Category 2' }]]\"></obl-combine-categories>\r\n */\r\n @Input() disable: (Category | number)[][] = [];\r\n\r\n /**\r\n * Let you display a obl-single-category components that represents single combination with names of\r\n * categories displayed inside.\r\n */\r\n displaySingle = input<boolean>(false);\r\n\r\n /**\r\n * Emit when value changed\r\n */\r\n @Output() valueChange = new EventEmitter<any[][]>();\r\n\r\n protected headers = [\r\n {\r\n transform: 'translate(0.92604457,-0.92629337)',\r\n href: '#text-path-' + this.suffix\r\n },\r\n {\r\n transform: 'rotate(60,53.230425,244.80418)',\r\n href: '#text-path-' + this.suffix\r\n },\r\n {\r\n transform: 'rotate(120,53.230425,244.80418)',\r\n href: '#text-path-' + this.suffix\r\n },\r\n {\r\n transform: 'rotate(180,53.230425,244.80418)',\r\n href: '#text-path-' + this.suffix\r\n },\r\n {\r\n transform: 'rotate(-60,52.160837,243.7349)',\r\n href: '#text-path-top-' + this.suffix\r\n },\r\n {\r\n transform: 'translate(0.92604457,-0.92629337)',\r\n href: '#text-path-top-' + this.suffix\r\n }\r\n ];\r\n\r\n protected combine: [number, number, Coords][] = [\r\n [1, 2, {\r\n x1: 88.953682,\r\n y1: 167.21274,\r\n x2: 106.51595,\r\n y2: 131.14131,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [1, 3, {\r\n x1: 72.372162,\r\n y1: 177.26645,\r\n x2: 231.58354,\r\n y2: 78.695023,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [1, 4, {\r\n x1: 18.104263,\r\n y1: 246.04858,\r\n x2: 86.896088,\r\n y2: 246.04858,\r\n transform: 'translate(0.92604457,-0.92629337)'\r\n }],\r\n [1, 5, {\r\n x1: 231.58354,\r\n y1: 78.695023,\r\n x2: 72.372162,\r\n y2: 177.26645,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [1, 6, {\r\n x1: 106.51595,\r\n y1: 131.14131,\r\n x2: 88.953682,\r\n y2: 167.21274,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [2, 3, {\r\n x1: 88.953682,\r\n y1: 167.21274,\r\n x2: 106.51595,\r\n y2: 131.14131,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [2, 4, {\r\n x1: 72.372162,\r\n y1: 177.26645,\r\n x2: 231.58354,\r\n y2: 78.695023,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [2, 5, {\r\n x1: 18.104263,\r\n y1: 246.04858,\r\n x2: 86.896088,\r\n y2: 246.04858,\r\n transform: 'translate(0.92604457,-0.92629337)'\r\n }],\r\n [2, 6, {\r\n x1: 231.58354,\r\n y1: 78.695023,\r\n x2: 72.372162,\r\n y2: 177.26645,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [3, 4, {\r\n x1: 88.953682,\r\n y1: 167.21274,\r\n x2: 106.51595,\r\n y2: 131.14131,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [3, 5, {\r\n x1: 72.372162,\r\n y1: 177.26645,\r\n x2: 231.58354,\r\n y2: 78.695023,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [3, 6, {\r\n x1: 18.104263,\r\n y1: 246.04858,\r\n x2: 86.896088,\r\n y2: 246.04858,\r\n transform: 'translate(0.92604457,-0.92629337)'\r\n }],\r\n [4, 5, {\r\n x1: 88.953682,\r\n y1: 167.21274,\r\n x2: 106.51595,\r\n y2: 131.14131,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [4, 6, {\r\n x1: 166.3591,\r\n y1: 328.33005,\r\n x2: 323.24637,\r\n y2: 236.90147,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n [5, 6, {\r\n x1: 88.953682,\r\n y1: 167.21274,\r\n x2: 106.51595,\r\n y2: 131.14131,\r\n transform: 'matrix(0.26458333,0,0,0.26458333,0.92604457,190.24036)'\r\n }],\r\n ];\r\n\r\n @Input() categories: Category[] = [\r\n { name: 'Category 1' },\r\n { name: 'Category 2' },\r\n { name: 'Category 3' },\r\n { name: 'Category 4' },\r\n { name: 'Category 5' },\r\n { name: 'Category 6' }\r\n ];\r\n\r\n onChange = (value: (Category | number)[][]) => { };\r\n\r\n onTouched = () => { };\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.value && changes.value.currentValue?.length !== changes.value.previousValue?.length) {\r\n this.adapter().setAdapterConnector(this);\r\n this.selected = this.adapter().transform(changes.value.currentValue);\r\n this.set();\r\n }\r\n\r\n if (changes.disable && changes.disable.currentValue instanceof Array) {\r\n this.adapter().setAdapterConnector(this);\r\n this.disableParts = this.adapter().transform(changes.disable.currentValue);\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n writeValue(categories: Category[][]): void {\r\n this.adapter().setAdapterConnector(this);\r\n this.selected = this.adapter().transform(categories);\r\n this.toSingleCombination();\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n click(category: number[]): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const tag = this.adapter().toTag(category[0], category[1]);\r\n\r\n if (this.disableParts.includes(tag)) {\r\n return;\r\n }\r\n\r\n if (this.selected.includes(tag)) {\r\n this.selected = this.selected.filter(v => v !== tag);\r\n } else {\r\n this.selected.push(tag);\r\n }\r\n\r\n this.set();\r\n }\r\n\r\n toggleAll(category: number): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const cat = `${category}`;\r\n\r\n if (this.selected.filter(v => v.includes(cat)).concat(\r\n this.disableParts.filter(i => i.includes(cat) && !this.selected.includes(i)))?.length >= 5) {\r\n this.selected = this.selected.filter(v => !v.includes(cat) || this.disableParts.includes(v));\r\n } else {\r\n for (let i = 1; i < 7; i++) {\r\n if (i !== category && !this.disableParts.includes(this.adapter().toTag(i, category))) {\r\n const id = this.adapter().toTag(category, i);\r\n if (!this.selected.find(v => id === v)) {\r\n this.selected.push(id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.set();\r\n }\r\n\r\n connectionFill(category: number[]): string | undefined {\r\n if (this.disabled) {\r\n return 'gray';\r\n }\r\n return 'url(#lg-category-' + category[0] + '-' + category[1] + this.suffix + ')';\r\n }\r\n\r\n protected toSingleCombination(): void {\r\n const adapter = new CombineNameAndIndexAdapter(this);\r\n\r\n this.single = adapter.convert().map(v => [\r\n { ...v[0], class: 'category-' + v[0].id },\r\n { ...v[1], class: 'category-' + v[1].id }\r\n ]);\r\n }\r\n\r\n protected set(withEmit: boolean = true): void {\r\n this.adapter().setAdapterConnector(this);\r\n const categories: any[] = this.adapter().convert();\r\n\r\n this.markAsTouched();\r\n this.onChange(categories);\r\n\r\n if (withEmit) {\r\n this.valueChange.emit(categories);\r\n }\r\n\r\n this.toSingleCombination();\r\n }\r\n}\r\n","<svg width=\"100%\" viewBox=\"0 0 97.102081 97.102089\">\r\n @for(c of combine; track $index) {\r\n <linearGradient\r\n [id]=\"'lg-category-' + c[0] + '-' + c[1] + suffix\"\r\n [attr.x1]=\"c[2].x1\"\r\n [attr.x2]=\"c[2].x2\"\r\n [attr.y1]=\"c[2].y1\"\r\n [attr.y2]=\"c[2].y2\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n [attr.gradientTransform]=\"c[2].transform\"\r\n >\r\n <stop style=\"stop-opacity: 1\" offset=\"0\" [class]=\"'category-' + c[0]\" />\r\n <stop style=\"stop-opacity: 1\" offset=\"1\" [class]=\"'category-' + c[1]\" />\r\n </linearGradient>\r\n }\r\n\r\n <g transform=\"translate(-4.7743858,-195.52248)\" style=\"display: inline\">\r\n <g transform=\"translate(53.5, 244) scale(1.1) translate(-53.5, -244)\">\r\n @for (category of [\r\n [1, 2],\r\n [2, 3],\r\n [3, 4],\r\n [4, 5],\r\n [5, 6],\r\n [1, 6]\r\n ]; track $index) {\r\n <path\r\n [class]=\"'connector category-' + category[0] + '-' + category[1]\"\r\n [attr.fill]=\"connectionFill(category)\"\r\n style=\"fill-opacity: 1\"\r\n d=\"m 26.436632,222.81253 a 34.395836,34.395836 0 0 0 -5.754687,10.78022 c 11.994195,2.22393 17.151276,0.50052 5.754687,-10.78022 z\"\r\n [attr.transform]=\"\r\n 'rotate(' + 60 * $index + ', 53.5, 244) translate(0.2, -0.5)'\r\n \"\r\n [class.disabled]=\"\r\n this.disableParts.includes(category[0] + '-' + category[1])\r\n \"\r\n [class.selected]=\"selected.includes(category[0] + '-' + category[1])\"\r\n (click)=\"click(category)\"\r\n />\r\n }\r\n\r\n @for (category of [\r\n [1, 3],\r\n [2, 4],\r\n [3, 5],\r\n [4, 6],\r\n [1, 5],\r\n [2, 6]\r\n ]; track $index) {\r\n <path\r\n style=\"fill-opacity: 1\"\r\n [attr.fill]=\"connectionFill(category)\"\r\n d=\"m 59.834592,210.2996 c -7.94e-4,0.004 -0.0019,0.009 -0.0026,0.0129 -0.04899,0.24617 -0.100481,0.49002 -0.152445,0.73277 -0.01169,0.0546 -0.02278,0.10988 -0.03462,0.16433 -0.05511,0.2534 -0.112152,0.50432 -0.170532,0.75396 -0.0066,0.0284 -0.01294,0.0574 -0.01963,0.0858 -0.0013,0.006 -0.0028,0.0114 -0.0041,0.0171 -0.06045,0.25597 -0.12316,0.50919 -0.187068,0.76119 -0.0062,0.0246 -0.0118,0.0498 -0.0181,0.0744 -0.0016,0.007 -0.0035,0.0135 -0.0052,0.0202 -0.05959,0.23295 -0.121401,0.46345 -0.183967,0.69298 -0.01519,0.0557 -0.03011,0.1119 -0.04548,0.16743 -0.05412,0.19558 -0.110088,0.38932 -0.166396,0.58239 -0.02689,0.0922 -0.05323,0.18485 -0.08062,0.27647 -0.05437,0.1819 -0.110575,0.36193 -0.166915,0.54157 -0.02719,0.0867 -0.054,0.17377 -0.08165,0.25993 -2.580137,8.36713 -8.206653,15.06324 -16.512172,18.09761 -0.240858,0.0863 -0.484521,0.16982 -0.730186,0.25063 -7.94e-4,2.6e-4 -0.0016,7.9e-4 -0.0026,0.001 -1.56e-4,5e-5 -2.65e-4,-5e-5 -5.29e-4,0 -0.245248,0.0806 -0.493057,0.15845 -0.743107,0.23357 -0.0013,2.7e-4 -0.0024,8e-4 -0.0036,10e-4 -2.65e-4,1.1e-4 -7.94e-4,5.3e-4 -0.0011,5.3e-4 -0.251145,0.0754 -0.504677,0.14773 -0.760677,0.21756 -0.256413,0.0699 -0.515398,0.13721 -0.776697,0.20154 -5.400712,1.31054 -11.036022,1.30905 -16.51062,0.70021 -0.01648,-0.002 -0.03312,-0.004 -0.04961,-0.006 -0.691545,-0.0776 -1.392815,-0.16668 -2.104264,-0.26716 -0.45672,1.63712 -0.791467,3.30585 -1.001489,4.99246 0.0014,1.6e-4 0.0027,2.6e-4 0.0041,5.3e-4 0.37656,0.0443 0.751182,0.0856 1.123446,0.12402 0.373636,0.0385 0.744834,0.0739 1.114144,0.10646 0.361867,0.0319 0.721805,0.0612 1.07952,0.0873 6.491773,0.4673 13.118141,0.0715 19.308899,-1.97714 0.03736,-0.0124 0.07434,-0.0252 0.111622,-0.0377 0.245798,-0.0823 0.490318,-0.16625 0.732772,-0.25321 0.0034,-0.001 0.0069,-0.002 0.01035,-0.004 0.01236,-0.004 0.02434,-0.01 0.03669,-0.0139 11.011844,-4.56436 17.14609,-11.46337 21.298958,-22.07927 0.01601,-0.041 0.0316,-0.0824 0.04754,-0.12351 0.100695,-0.25951 0.20042,-0.52087 0.298175,-0.78444 0.02739,-0.0739 0.05397,-0.14855 0.08113,-0.22273 0.09396,-0.25659 0.186822,-0.51422 0.278019,-0.77463 0.01275,-0.0364 0.02556,-0.0731 0.03824,-0.10955 0.102087,-0.29335 0.202676,-0.5886 0.301273,-0.88677 0.0013,-0.004 0.0024,-0.007 0.0036,-0.0109 0.0034,-0.0102 0.0064,-0.0208 0.0098,-0.031 0.104598,-0.31707 0.207849,-0.6366 0.308509,-0.95912 2.65e-4,-0.001 5.3e-4,-0.002 0.0011,-0.004 -1.840982,-0.69934 -3.738623,-1.23927 -5.672005,-1.61386 z\"\r\n [class]=\"'connector category-' + category[0] + '-' + category[1]\"\r\n [attr.transform]=\"\r\n 'rotate(' + 60 * $index + ', 53.5, 244) translate(0.1, -0.6)'\r\n \"\r\n [class.disabled]=\"\r\n this.disableParts.includes(category[0] + '-' + category[1])\r\n \"\r\n [class.selected]=\"selected.includes(category[0] + '-' + category[1])\"\r\n (click)=\"click(category)\"\r\n />\r\n }\r\n\r\n @for (category of [\r\n [1, 4],\r\n [2, 5],\r\n [3, 6]\r\n ]; track $index) {\r\n <path\r\n [class]=\"'connector category-' + category[0] + '-' + category[1]\"\r\n style=\"fill-opacity: 1\"\r\n [attr.fill]=\"connectionFill(category)\"\r\n d=\"m 87.609643,240.60059 c -22.649095,3.2223 -45.753999,3.24643 -68.408745,0.0625 -0.305296,2.96791 -0.195822,5.97594 0.288355,8.9178 22.469383,-3.12806 45.374171,-3.10914 67.837719,0.0631 0.492718,-2.98301 0.674092,-6.03459 0.282671,-9.04338 z\"\r\n [attr.transform]=\"\r\n 'rotate(' + (60 * $index - 1) + ', 53.5, 244) translate(0, -1)'\r\n \"\r\n [class.disabled]=\"\r\n this.disableParts.includes(category[0] + '-' + category[1])\r\n \"\r\n [class.selected]=\"selected.includes(category[0] + '-' + category[1])\"\r\n (click)=\"click(category)\"\r\n />\r\n }\r\n </g>\r\n\r\n <path\r\n d=\"m 17.858991,265.00001 a 40,40 0 0 1 0,-39.99999\"\r\n [id]=\"'text-path-' + suffix\"\r\n style=\"fill: none; stroke: none\"\r\n />\r\n\r\n <path\r\n d=\"m 14.695555,266.75001 a 43.5,43.5 0 0 0 37.672109,21.75\"\r\n [id]=\"'text-path-top-' + suffix\"\r\n style=\"fill: none; stroke: none\"\r\n />\r\n\r\n @for (category of [1, 2, 3, 4, 5, 6]; track $index) {\r\n <g\r\n [class]=\"'header category-' + category\"\r\n (click)=\"toggleAll(category)\"\r\n >\r\n <path\r\n d=\"m 12.145515,220.26747 a 47.624999,47.624999 0 0 0 -6.4450846,23.80629 47.624999,47.624999 0 0 0 6.4032266,23.76755 l 9.986471,-5.76554 a 36.096725,36.096725 0 0 1 -4.861719,-18.00201 36.096725,36.096725 0 0 1 4.878255,-18.05522 z\"\r\n [attr.transform]=\"'rotate(' + 60 * (category - 1) + ', 53.5, 244)'\"\r\n />\r\n\r\n <text\r\n style=\"text-anchor: middle\"\r\n [attr.transform]=\"headers[category - 1].transform\"\r\n >\r\n <textPath\r\n startOffset=\"50%\"\r\n [attr.xlink:href]=\"headers[category - 1].href\"\r\n >\r\n {{ categories[category - 1].name | oblTextFormat: 'ellipsis':14 }}\r\n </textPath>\r\n </text>\r\n </g>\r\n }\r\n </g>\r\n</svg>\r\n\r\n@if (displaySingle() && single.length) {\r\n <div>\r\n @for (combination of single; track combination) {\r\n <obl-single-combination\r\n [categories]=\"combination\"\r\n ></obl-single-combination>\r\n }\r\n </div>\r\n}\r\n","import { CombineNameAdapter } from './../../classes/combine-name-adapter';\r\nimport { AbstractCombineAdapter } from './../../classes/abstract-combine-adapter';\r\nimport { AdapterConnector } from './../../interfaces/adapter-connector';\r\nimport { Component, Input, ElementRef, HostBinding, SimpleChanges, OnChanges, Output, EventEmitter, input } from '@angular/core';\r\nimport { Category, CategoryWithId } from '../../interfaces/category';\r\nimport { CombineNameAndIndexAdapter } from '../../public-api';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'obl-half-matrix-combine-categories',\r\n templateUrl: './half-matrix-combine-categories.component.html',\r\n styleUrls: ['./half-matrix-combine-categories.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: HalfMatrixCombineCategoriesComponent\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n multi: true,\r\n useExisting: HalfMatrixCombineCategoriesComponent\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class HalfMatrixCombineCategoriesComponent implements OnChanges, ControlValueAccessor, AdapterConnector {\r\n protected touched = false;\r\n protected disableParts: string[] = [];\r\n\r\n selected: string[] = [];\r\n single: [CategoryWithId, CategoryWithId][] = [];\r\n\r\n /**\r\n * Categories list used to create combination, minimum 2 maximum 7 however there is no limits\r\n */\r\n @Input()\r\n categories: Category[] = [\r\n { name: 'Monday' },\r\n { name: 'Tuesday' },\r\n { name: 'Wednesday' },\r\n { name: 'Thursday' },\r\n { name: 'Friday' },\r\n { name: 'Saturday' },\r\n { name: 'Sunday' },\r\n ];\r\n\r\n @Input() value: (Category | number)[][] = [];\r\n\r\n @Input() adapter: AbstractCombineAdapter<any> = new CombineNameAdapter(this);\r\n\r\n /**\r\n * Disable whole things\r\n */\r\n @Input()\r\n @HostBinding('class.disabled') disabled: any = false;\r\n\r\n /**\r\n * Disable speciffic combination of categories (format depends on type of adapter used inside)\r\n *\r\n * When the adapter field is instance of CombineNameAdapter then to disable \"Category 1\" i \"Category 2\":\r\n *\r\n * @example\r\n *\r\n * <obl-combine-categories [value]=\"selected\" (valueChaned)=\"changed($event)\"\r\n * [disable]=\"[[{ name: 'Category 1' }, { name: 'Category 2' }]]\"></obl-combine-categories>\r\n */\r\n @Input() disable: (Category | number)[][] = [];\r\n\r\n /**\r\n * Let you display a obl-single-category components that represents single combination with names of\r\n * categories displayed inside.\r\n */\r\n displaySingle = input<boolean>(true);\r\n\r\n /**\r\n * Emit when value changed\r\n */\r\n @Output() valueChanged = new EventEmitter<any[][]>();\r\n\r\n onChange = (value: (Category | number)[][]) => { };\r\n\r\n onTouched = () => { };\r\n\r\n constructor(private readonly elementRef: ElementRef<HTMLElement>) { }\r\n\r\n table(length: number): Array<any> {\r\n return new Array(length);\r\n }\r\n\r\n select(row: number, col: number): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const tag = this.adapter.toTag(row, col, true);\r\n\r\n if (this.disableParts.includes(tag)) {\r\n return;\r\n }\r\n\r\n if (this.selected.includes(tag)) {\r\n this.selected = this.selected.filter(t => t !== tag);\r\n this.selected = this.selected.filter(v => !v.includes(tag));\r\n } else {\r\n this.selected.push(tag);\r\n }\r\n this.toSingleCombination();\r\n\r\n this.set();\r\n }\r\n\r\n toggle(row: number, col: number): void {\r\n this.elementRef.nativeElement.classList.toggle(`highlight-left-${row}`);\r\n this.elementRef.nativeElement.classList.toggle(`highlight-right-${col}`);\r\n }\r\n\r\n toggleAll(categoryId: number): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const combinations = this.categories.length - 1;\r\n const cat = categoryId.toString();\r\n\r\n if (this.selected.filter(v => v.includes(cat)).concat(\r\n this.disableParts.filter(i => i.includes(cat) && !this.selected.includes(i)))?.length >= combinations) {\r\n this.selected = this.selected.filter(v => !v.includes(cat) || this.disableParts.includes(v));\r\n } else {\r\n for (let i = 0; i < combinations + 1; i++) {\r\n if ((i + 1) !== categoryId && !this.disableParts.includes(this.adapter.toTag(i + 1, categoryId, true))) {\r\n const id = this.adapter.toTag(i + 1, categoryId, true);\r\n if (!this.selected.find(v => id === v)) {\r\n this.selected.push(id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.set();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.value && changes.value.currentValue?.length !== changes.value.previousValue?.length) {\r\n this.adapter.setAdapterConnector(this);\r\n this.selected = this.adapter.transform(changes.value.currentValue, true);\r\n this.set();\r\n }\r\n\r\n if (changes.disable && changes.disable.currentValue instanceof Array) {\r\n this.adapter.setAdapterConnector(this);\r\n this.disableParts = this.adapter.transform(changes.disable.currentValue, true);\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n }\r\n\r\n writeValue(categories: Category[][]): void {\r\n this.adapter.setAdapterConnector(this);\r\n this.selected = this.adapter.transform(categories, true);\r\n this.toSingleCombination();\r\n }\r\n\r\n registerOnChange(onChange: any): void {\r\n this.onChange = onChange;\r\n }\r\n\r\n registerOnTouched(onTouched: any): void {\r\n this.onTouched = onTouched;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.disabled = disabled;\r\n }\r\n\r\n markAsTouched(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n protected toSingleCombination(): void {\r\n const adapter = new CombineNameAndIndexAdapter(this);\r\n\r\n this.single = adapter.convert().map(v => [\r\n { ...v[0], class: 'category-' + v[0].id },\r\n { ...v[1], class: 'category-' + v[1].id }\r\n ]);\r\n }\r\n\r\n protected set(withEmit: boolean = true): void {\r\n this.adapter.setAdapterConnector(this);\r\n const categories: any[] = this.adapter.convert();\r\n\r\n this.markAsTouched();\r\n this.onChange(categories);\r\n\r\n if (withEmit) {\r\n this.valueChanged.emit(categories);\r\n }\r\n\r\n this.toSingleCombination();\r\n }\r\n}\r\n","<div class=\"parent\">\r\n <div>\r\n @for (category of categories; track category.name; let row = $index){\r\n @if (row < categories.length - 1) {\r\n <div>\r\n @if(row !== 6) {\r\n <div\r\n [class]=\"'header left clickable category-' + (row + 2)\"\r\n (click)=\"toggleAll(row + 2)\"\r\n >\r\n <p>{{ categories[row + 1].name }}</p>\r\n </div>\r\n @for (j of table(row + 1); track j; let col = $index) {\r\n <div\r\n [class]=\"\r\n 'clickable combination category-' +\r\n adapter.toTag(row + 2, col + 1, true)\r\n \"\r\n [class.selected]=\"\r\n selected.includes(adapter.toTag(row + 2, col + 1, true))\r\n \"\r\n [class.disabled]=\"\r\n this.disableParts.includes(adapter.toTag(row + 2, col + 1, true))\r\n \"\r\n (click)=\"select(row + 2, col + 1)\"\r\n (mouseover)=\"toggle(row + 2, col + 1)\"\r\n (mouseout)=\"toggle(row + 2, col + 1)\"\r\n ></div>\r\n }\r\n }\r\n </div>\r\n }\r\n }\r\n <div class=\"header-right\">\r\n @for (j of table(categories.length - 1); track $index; let row = $index) {\r\n <div\r\n [class]=\"'header right clickable category-' + (row + 1)\"\r\n (click)=\"toggleAll(row + 1)\"\r\n >\r\n <p>{{ categories[row].name }}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if (displaySingle() && single.length) {\r\n <div class=\"single\">\r\n @for (combination of single; track $index) {\r\n <obl-single-combination\r\n [categories]=\"combination\"\r\n ></obl-single-combination>\r\n }\r\n </div>\r\n}\r\n","import { TextPipesModule } from '@obliczeniowo/elementary/text-pipes';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CombineCategoriesComponent } from './components/combine-categories/combine-categories.component';\r\nimport { SingleCombinationComponent } from './components/single-combination/single-combination.component';\r\nimport { HalfMatrixCombineCategoriesComponent } from './components/half-matrix-combine-categories/half-matrix-combine-categories.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CombineCategoriesComponent,\r\n SingleCombinationComponent,\r\n HalfMatrixCombineCategoriesComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n TextPipesModule\r\n ],\r\n exports: [\r\n CombineCategoriesComponent,\r\n SingleCombinationComponent,\r\n HalfMatrixCombineCategoriesComponent\r\n ]\r\n})\r\nexport class CategoriesModule { }\r\n","import { AbstractCombineAdapter } from './abstract-combine-adapter';\r\n\r\nexport class CombineIdAdapter extends AbstractCombineAdapter<number> {\r\n findIndex(data: number): number {\r\n return data;\r\n }\r\n\r\n fromIndex(index: number): number {\r\n return index;\r\n }\r\n\r\n convert(): number[][] {\r\n return this.adapterConnector.selected.map(tag => {\r\n const splitted = tag.split('-');\r\n\r\n return [\r\n this.fromIndex(+splitted[0]),\r\n this.fromIndex(+splitted[1])\r\n ];\r\n });\r\n }\r\n\r\n transform(data: number[][], reversed?: boolean): string[] {\r\n if (!data) {\r\n return [];\r\n }\r\n return data.map(categories => (this.toTag(\r\n categories[0],\r\n categories[1],\r\n reversed)\r\n ));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SingleCombinationComponent"],"mappings":"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S;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,SAAS,EAAE;aACZ,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,EAAE;AACL,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,EAAE,E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"}