@anglr/dynamic 1.0.0-beta.20230126082913 → 1.0.0-beta.20230127080258
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es2015/relations/src/services/relationsProcessor/relationsProcessor.service.js +2 -0
- package/es2015/relations/src/services/relationsProcessor/relationsProcessor.service.js.map +1 -1
- package/es2020/relations/src/services/relationsProcessor/relationsProcessor.service.js +2 -0
- package/es2020/relations/src/services/relationsProcessor/relationsProcessor.service.js.map +1 -1
- package/package.json +1 -1
- package/relations/src/services/relationsProcessor/relationsProcessor.service.d.ts.map +1 -1
- package/version.bak +1 -1
|
@@ -514,12 +514,14 @@ export class RelationsProcessor {
|
|
|
514
514
|
for (const comp of components) {
|
|
515
515
|
if (!comp.ɵɵRelationsOptionsInitialized) {
|
|
516
516
|
comp.relationsOptions = meta.metadataOptions;
|
|
517
|
+
comp.ɵɵRelationsOptionsInitialized = true;
|
|
517
518
|
}
|
|
518
519
|
}
|
|
519
520
|
}
|
|
520
521
|
else {
|
|
521
522
|
if (!components.ɵɵRelationsOptionsInitialized) {
|
|
522
523
|
components.relationsOptions = meta.metadataOptions;
|
|
524
|
+
components.ɵɵRelationsOptionsInitialized = true;
|
|
523
525
|
}
|
|
524
526
|
}
|
|
525
527
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationsProcessor.service.js","sourceRoot":"","sources":["../../../../../relations/src/services/relationsProcessor/relationsProcessor.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {inject, Inject, Injectable, Injector, OnDestroy, Optional, SimpleChanges} from '@angular/core';\nimport {LOGGER, Logger} from '@anglr/common';\nimport {DynamicItemLoader} from '@anglr/dynamic';\nimport {Dictionary, isBlank, noop, NoopAction} from '@jscrpt/common';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {RelationsComponent, RelationsComponentMetadata, RelationsComponentType} from '../../interfaces';\nimport {RelationsComponentManager} from '../relationsComponentManager/relationsComponentManager.service';\nimport {RelationsManager} from '../relationsManager/relationsManager.service';\nimport {RelationsDataTransferInstruction, RelationsProcessorComponentData, RelationsProcessorInputOutputData} from './relationsProcessor.interface';\nimport {RELATIONS_COMPONENTS_LOADER, RELATIONS_PROCESSOR_SKIP_INIT} from '../../misc/tokens';\nimport {RelationsComponentDef, RelationsProcessorComponent} from '../../misc/types';\nimport {RelationsDataTransferInstructionImpl} from './relationsDataTransferInstruction';\nimport {isAssigned, isSkipInit} from '../../misc/utils';\nimport {RelationsChangeDetector} from '../relationsChangeDetector/relationsChangeDetector.service';\n\n/**\n * Processor that applies relations to registered components\n */\n@Injectable()\nexport class RelationsProcessor implements OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Promise used for indication that processor was initialized\n */\n protected ɵInitialized: Promise<void> = Promise.resolve();\n\n /**\n * Relations metadata\n */\n protected ɵRelations: Dictionary<RelationsProcessorComponentData> = {};\n\n /**\n * Array of backward relations, relations that are used for obtaining data for inputs\n */\n protected ɵBackwardRelations: Dictionary<RelationsProcessorInputOutputData[]> = {};\n\n /**\n * Resolves initialized\n */\n protected resolveInitialized: NoopAction = noop;\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n /**\n * Gets or sets relations metadata\n */\n protected get relations(): Dictionary<RelationsProcessorComponentData>\n {\n if(this.parent)\n {\n return this.parent.relations;\n }\n\n return this.ɵRelations;\n }\n protected set relations(value: Dictionary<RelationsProcessorComponentData>)\n {\n this.ɵRelations = value;\n }\n\n /**\n * Gets or sets array of backward relations, relations that are used for obtaining data for inputs\n */\n protected get backwardRelations(): Dictionary<RelationsProcessorInputOutputData[]>\n {\n if(this.parent)\n {\n return this.parent.backwardRelations;\n }\n\n return this.ɵBackwardRelations;\n }\n protected set backwardRelations(value: Dictionary<RelationsProcessorInputOutputData[]>)\n {\n this.ɵBackwardRelations = value;\n }\n\n /**\n * Instance of parent relations processor\n */\n protected parent: RelationsProcessor|null = null;\n\n /**\n * Id of scope\n */\n protected scopeId: string|null = null;\n\n /**\n * Injected relations change detector\n */\n protected relationsChangeDetector: RelationsChangeDetector = inject(RelationsChangeDetector);\n\n //######################### public properties #########################\n\n /**\n * Gets promise that completes when processor was initialized\n */\n public get initialized(): Promise<void>\n {\n return this.ɵInitialized;\n }\n\n //######################### constructor #########################\n constructor(protected relationsManager: RelationsManager,\n protected componentManager: RelationsComponentManager,\n protected injector: Injector,\n @Inject(RELATIONS_COMPONENTS_LOADER) protected loader: DynamicItemLoader<RelationsComponentDef>,\n @Inject(LOGGER) @Optional() protected logger?: Logger,\n @Inject(RELATIONS_PROCESSOR_SKIP_INIT) @Optional() skipInit?: boolean,)\n {\n if(!skipInit)\n {\n this.initSubscriptions.add(this.relationsManager.relationsChange.subscribe(() => this.initializeRelations()));\n\n this.initializeRelations();\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.initSubscriptions.unsubscribe();\n\n this.destroyRelations();\n }\n\n //######################### public methods #########################\n\n /**\n * Updates relations\n * @param id - Id of component to be registered\n */\n public updateRelations(id: string): void\n {\n this.logger?.debug('RelationsProcessor: Updating relations for {@id}', {id});\n\n const relations: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n let components = this.componentManager.get(id);\n\n //this component has no relations\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return;\n }\n\n this.initOptions(components, relations);\n\n //initialize default value from connection to this\n if(backwardRelations?.length)\n {\n backwardRelations.forEach(inputOutput =>\n {\n this.initBackwardRelation(inputOutput);\n });\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const outputComponent of components)\n {\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions = [];\n\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n this.logger?.verbose('RelationsProcessor: processing input outputs {@data} ', {id, inputOutput, inputComponents, components});\n\n const outputObservable = (outputComponent as any)[`${inputOutput.outputName}Change`] as Observable<any>;\n\n //check whether is observable output\n if(!(outputObservable instanceof Observable))\n {\n this.logger?.warn('RelationsProcessor: Output on component {@data} is not observable', inputOutput);\n\n continue;\n }\n\n //set listening for output changes\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions.push(outputObservable.subscribe(() =>\n {\n let inputs = this.componentManager.get(inputOutput.inputComponentId);\n\n if(!inputs)\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data} on output change', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputs))\n {\n inputs = [inputs];\n }\n\n for(const input of inputs)\n {\n this.transferData(outputComponent, inputOutput.outputName, input, inputOutput.inputName, false);\n }\n }));\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n for(const inputComponent of inputComponents)\n {\n const id = `${inputComponent.ɵɵRelationsComponentId}-${outputComponent.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputComponent, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputComponent, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputComponent, inputOutput.outputName, inputComponent, inputOutput.inputName, true);\n }\n }\n }\n }\n }\n }\n\n /**\n * Method used for destroying component\n */\n public destroyComponent(id: string): void\n {\n const metadata: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n\n //uninitialize backward relations\n if(backwardRelations)\n {\n for(const relation of backwardRelations)\n {\n relation.initialized = {};\n }\n }\n\n //destroy relations\n if(metadata)\n {\n let components = this.componentManager.get(id);\n\n if(components)\n {\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const cmp of components)\n {\n cmp.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n cmp.ɵɵRelationsOutputsChangeSubscriptions = [];\n cmp.ɵɵRelationsOptionsInitialized = false;\n }\n }\n\n if(metadata.inputOutputs && Array.isArray(metadata.inputOutputs))\n {\n for(const inputOutput of metadata.inputOutputs)\n {\n inputOutput.initialized = {};\n }\n }\n\n //destroy auto created components and unregister them\n if(metadata.autoCreated)\n {\n let components = this.componentManager.get(id);\n\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n this.componentManager.unregisterComponent(id);\n\n for(const cmp of components)\n {\n cmp.ngOnDestroy?.();\n }\n }\n }\n }\n\n /**\n * Opens new scope of relations processor\n * @param id - Id of newly created scope\n * @param componentManager - Scoped instance of component manager\n * @param injector - Injector for current scope\n */\n public openScope(id: string,\n componentManager: RelationsComponentManager,\n injector: Injector,): RelationsProcessor\n {\n const processor = new RelationsProcessor(this.relationsManager, componentManager, injector, this.loader, this.logger, true);\n processor.scopeId = id;\n processor.parent = this;\n\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === id && relationsDef.componentType)\n {\n const instance = new relationsDef.componentType(injector);\n componentManager.registerComponent(componentId, instance);\n processor.updateRelations(componentId);\n }\n }\n\n return processor;\n }\n\n /**\n * Destroyes opened scope itself\n */\n public destroyScope(): void\n {\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === this.scopeId)\n {\n this.destroyComponent(componentId);\n }\n }\n }\n\n /**\n * Transfers data for specified component using its output relations, all data are transfered in single change set per component\n * @param id - Id of component whose outputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns dictionary with data transfer instructions per components\n */\n public transferOutputsData(id: string, delayed: true): Dictionary<RelationsDataTransferInstruction>\n public transferOutputsData(id: string, delayed: false): null\n public transferOutputsData(id: string, delayed: boolean = false): null|Dictionary<RelationsDataTransferInstruction>\n {\n const transfers: Dictionary<RelationsDataTransferInstructionImpl> = {};\n const relations: RelationsProcessorComponentData = this.relations[id];\n let components = this.componentManager.get(id);\n\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return delayed ? transfers : null;\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n //for each component containing outputs\n for(const outputComponent of components)\n {\n //for each relation\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n transfers[inputOutput.inputComponentId] ??= new RelationsDataTransferInstructionImpl(inputComponents);\n\n //for each input component\n for(const inputComponent of inputComponents)\n {\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[inputOutput.inputName];\n const currentValue = (outputComponent as any)[inputOutput.outputName];\n\n transfers[inputOutput.inputComponentId].changes[inputOutput.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n }\n }\n\n if(!delayed)\n {\n //transfers data\n for(const key in transfers)\n {\n const transfer = transfers[key];\n\n transfer.applyChanges();\n }\n }\n }\n\n return delayed ? transfers : null;\n }\n\n /**\n * Transfers data for specified component using its inputs relations, all data are transfered in single change\n * @param id - Id of component whose inputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns transfer instructions\n */\n public transferInputsData(id: string, delayed: true): RelationsDataTransferInstruction\n public transferInputsData(id: string, delayed: false): null\n public transferInputsData(id: string, delayed: boolean = false): null|RelationsDataTransferInstruction\n {\n const backwardRelations = this.backwardRelations[id];\n const inputComponent = this.componentManager.get(id);\n\n if(!backwardRelations)\n {\n this.logger?.warn('RelationsProcessor: No backward relations for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(!inputComponent)\n {\n this.logger?.warn('RelationsProcessor: Missing input components for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(Array.isArray(inputComponent))\n {\n this.logger?.error('RelationsProcessor: Only one component must be available for id {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n const transfer: RelationsDataTransferInstructionImpl = new RelationsDataTransferInstructionImpl([inputComponent]);\n\n //for each backward relation\n for(const backwardRelation of backwardRelations)\n {\n const outputComponent = this.componentManager.get(backwardRelation.outputComponentId);\n\n if((Array.isArray(outputComponent)))\n {\n this.logger?.error('RelationsProcessor: Only one output component must be available for id {@id}', {id});\n\n continue;\n }\n\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[backwardRelation.inputName];\n const currentValue = (outputComponent as any)[backwardRelation.outputName];\n\n transfer.changes[backwardRelation.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n\n if(!delayed)\n {\n transfer.applyChanges();\n }\n\n return delayed ? transfer : null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Initialize relations from metadata\n */\n protected async initializeRelations(): Promise<void>\n {\n await this.destroyRelations();\n this.setInitializePromise();\n\n this.logger?.debug('RelationsProcessor: initializing relations');\n\n //empty relations\n if(!this.relationsManager.relations.length)\n {\n this.resolveInitialized();\n\n return;\n }\n\n for(const meta of this.relationsManager.relations)\n {\n const outputs: RelationsProcessorInputOutputData[] = [];\n\n //no outputs metadata\n if(!meta.outputs)\n {\n continue;\n }\n\n for(const output of meta.outputs)\n {\n //no inputs metadata\n if(!output.inputs)\n {\n continue;\n }\n\n for(const input of output.inputs)\n {\n const inputOutput: RelationsProcessorInputOutputData =\n {\n inputComponentId: input.id,\n outputComponentId: meta.id,\n inputName: input.inputName,\n outputName: output.outputName,\n initialized: {},\n };\n\n outputs.push(inputOutput);\n\n if(!this.backwardRelations[input.id])\n {\n this.backwardRelations[input.id] = [];\n }\n\n this.backwardRelations[input.id].push(inputOutput);\n }\n }\n\n //sets options for relations component\n await this.initComponent(meta, outputs);\n }\n\n this.relationsChangeDetector.initialize(this.relations);\n this.resolveInitialized();\n }\n\n /**\n * Initialize backward relations\n * @param inputOutput - Data for input and output\n */\n protected initBackwardRelation(inputOutput: RelationsProcessorInputOutputData): void\n {\n let outputComponents = this.componentManager.get(inputOutput.outputComponentId);\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if((isBlank(outputComponents) || Array.isArray(outputComponents) && !outputComponents.length) ||\n (isBlank(inputComponents) || Array.isArray(inputComponents) && !inputComponents.length))\n {\n this.logger?.warn('RelationsProcessor: missing metadata for backward relations {@data}', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!Array.isArray(outputComponents))\n {\n outputComponents = [outputComponents];\n }\n\n for(const inputCmp of inputComponents)\n {\n for(const outputCmp of outputComponents)\n {\n const id = `${inputCmp.ɵɵRelationsComponentId}-${outputCmp.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputCmp, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputCmp, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputCmp, inputOutput.outputName, inputCmp, inputOutput.inputName, true);\n }\n }\n }\n }\n\n /**\n * Transfers data from source property to target property\n * @param source Instance of source object containing source property with data\n * @param sourceProperty Name of source property with data that are transfered\n * @param target Instance of target object containing target property for data\n * @param targetProperty Name of target property which will be filled with data\n * @param initial Indication whether is transfer of data initial, or on event\n */\n protected transferData(source: RelationsComponent, sourceProperty: string, target: RelationsComponent, targetProperty: string, initial: boolean): boolean\n {\n if(!source || !target)\n {\n return false;\n }\n\n const previousValue = (target as any)[targetProperty];\n const currentValue = (source as any)[sourceProperty];\n (target as any)[targetProperty] = (source as any)[sourceProperty];\n const changes: SimpleChanges = {};\n\n changes[targetProperty] =\n {\n previousValue,\n currentValue,\n firstChange: initial,\n isFirstChange: () => initial\n };\n\n target.ngOnChanges?.(changes);\n target.invalidateVisuals();\n\n return true;\n }\n\n /**\n * Initialize relation component\n * @param meta - Metadata for relations component\n * @param outputs - Array of outputs data for relations component\n */\n protected async initComponent(meta: RelationsComponentMetadata, outputs: RelationsProcessorInputOutputData[]): Promise<void>\n {\n const component = this.componentManager.get(meta.id);\n\n if(component)\n {\n this.initRelation(false, meta, outputs, null, null);\n this.updateRelations(meta.id);\n\n return;\n }\n\n const componentMeta = await this.loader.loadItem(meta);\n\n if(!componentMeta)\n {\n this.initRelation(false, meta, outputs, null, null);\n\n this.logger?.warn('RelationsProcessor: Unable to load relations component! {@meta}', {package: meta.package, name: meta.name});\n\n return;\n }\n\n if(!meta.scope)\n {\n const instance = new componentMeta.data(this.injector);\n this.componentManager.registerComponent(meta.id, instance);\n }\n\n this.initRelation(true, meta, outputs, meta.scope ?? null, meta.scope ? componentMeta.data : null);\n this.updateRelations(meta.id);\n }\n\n /**\n * Initialize relation for metadata and component\n * @param autoCreated - Indication whether was component auto created or not\n * @param meta - Metadata for relations component\n * @param inputOutputs - Array of outputs data for relations\n * @param scope - Current scope used for this relations component\n * @param componentType - Type used for creation of relations component (only for scoped ones)\n */\n protected initRelation(autoCreated: boolean, meta: RelationsComponentMetadata, inputOutputs: RelationsProcessorInputOutputData[], scope: string|null, componentType: RelationsComponentType|null): void\n {\n this.relations[meta.id] =\n {\n autoCreated,\n inputOutputs,\n metadataOptions: meta.relationsOptions,\n componentType,\n scope,\n };\n }\n\n /**\n * Initialize relations component options\n * @param components - Components which options should be initialized\n * @param meta - Metadata containing options for initialization\n */\n protected initOptions(components: RelationsProcessorComponent|RelationsProcessorComponent[], meta: RelationsProcessorComponentData): void\n {\n if(Array.isArray(components))\n {\n for(const comp of components)\n {\n if(!comp.ɵɵRelationsOptionsInitialized)\n {\n comp.relationsOptions = meta.metadataOptions;\n }\n }\n }\n else\n {\n if(!components.ɵɵRelationsOptionsInitialized)\n {\n components.relationsOptions = meta.metadataOptions;\n }\n }\n }\n\n /**\n * Sets initialized promise\n */\n protected setInitializePromise(): void\n {\n this.ɵInitialized = new Promise(resolve => this.resolveInitialized = resolve);\n }\n\n /**\n * Destroys initialized relations\n */\n protected async destroyRelations(): Promise<void>\n {\n await this.ɵInitialized;\n\n Object.keys(this.relations).forEach(id => this.destroyComponent(id));\n\n this.relations = {};\n this.backwardRelations = {};\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"relationsProcessor.service.js","sourceRoot":"","sources":["../../../../../relations/src/services/relationsProcessor/relationsProcessor.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {inject, Inject, Injectable, Injector, OnDestroy, Optional, SimpleChanges} from '@angular/core';\nimport {LOGGER, Logger} from '@anglr/common';\nimport {DynamicItemLoader} from '@anglr/dynamic';\nimport {Dictionary, isBlank, noop, NoopAction} from '@jscrpt/common';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {RelationsComponent, RelationsComponentMetadata, RelationsComponentType} from '../../interfaces';\nimport {RelationsComponentManager} from '../relationsComponentManager/relationsComponentManager.service';\nimport {RelationsManager} from '../relationsManager/relationsManager.service';\nimport {RelationsDataTransferInstruction, RelationsProcessorComponentData, RelationsProcessorInputOutputData} from './relationsProcessor.interface';\nimport {RELATIONS_COMPONENTS_LOADER, RELATIONS_PROCESSOR_SKIP_INIT} from '../../misc/tokens';\nimport {RelationsComponentDef, RelationsProcessorComponent} from '../../misc/types';\nimport {RelationsDataTransferInstructionImpl} from './relationsDataTransferInstruction';\nimport {isAssigned, isSkipInit} from '../../misc/utils';\nimport {RelationsChangeDetector} from '../relationsChangeDetector/relationsChangeDetector.service';\n\n/**\n * Processor that applies relations to registered components\n */\n@Injectable()\nexport class RelationsProcessor implements OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Promise used for indication that processor was initialized\n */\n protected ɵInitialized: Promise<void> = Promise.resolve();\n\n /**\n * Relations metadata\n */\n protected ɵRelations: Dictionary<RelationsProcessorComponentData> = {};\n\n /**\n * Array of backward relations, relations that are used for obtaining data for inputs\n */\n protected ɵBackwardRelations: Dictionary<RelationsProcessorInputOutputData[]> = {};\n\n /**\n * Resolves initialized\n */\n protected resolveInitialized: NoopAction = noop;\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n /**\n * Gets or sets relations metadata\n */\n protected get relations(): Dictionary<RelationsProcessorComponentData>\n {\n if(this.parent)\n {\n return this.parent.relations;\n }\n\n return this.ɵRelations;\n }\n protected set relations(value: Dictionary<RelationsProcessorComponentData>)\n {\n this.ɵRelations = value;\n }\n\n /**\n * Gets or sets array of backward relations, relations that are used for obtaining data for inputs\n */\n protected get backwardRelations(): Dictionary<RelationsProcessorInputOutputData[]>\n {\n if(this.parent)\n {\n return this.parent.backwardRelations;\n }\n\n return this.ɵBackwardRelations;\n }\n protected set backwardRelations(value: Dictionary<RelationsProcessorInputOutputData[]>)\n {\n this.ɵBackwardRelations = value;\n }\n\n /**\n * Instance of parent relations processor\n */\n protected parent: RelationsProcessor|null = null;\n\n /**\n * Id of scope\n */\n protected scopeId: string|null = null;\n\n /**\n * Injected relations change detector\n */\n protected relationsChangeDetector: RelationsChangeDetector = inject(RelationsChangeDetector);\n\n //######################### public properties #########################\n\n /**\n * Gets promise that completes when processor was initialized\n */\n public get initialized(): Promise<void>\n {\n return this.ɵInitialized;\n }\n\n //######################### constructor #########################\n constructor(protected relationsManager: RelationsManager,\n protected componentManager: RelationsComponentManager,\n protected injector: Injector,\n @Inject(RELATIONS_COMPONENTS_LOADER) protected loader: DynamicItemLoader<RelationsComponentDef>,\n @Inject(LOGGER) @Optional() protected logger?: Logger,\n @Inject(RELATIONS_PROCESSOR_SKIP_INIT) @Optional() skipInit?: boolean,)\n {\n if(!skipInit)\n {\n this.initSubscriptions.add(this.relationsManager.relationsChange.subscribe(() => this.initializeRelations()));\n\n this.initializeRelations();\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.initSubscriptions.unsubscribe();\n\n this.destroyRelations();\n }\n\n //######################### public methods #########################\n\n /**\n * Updates relations\n * @param id - Id of component to be registered\n */\n public updateRelations(id: string): void\n {\n this.logger?.debug('RelationsProcessor: Updating relations for {@id}', {id});\n\n const relations: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n let components = this.componentManager.get(id);\n\n //this component has no relations\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return;\n }\n\n this.initOptions(components, relations);\n\n //initialize default value from connection to this\n if(backwardRelations?.length)\n {\n backwardRelations.forEach(inputOutput =>\n {\n this.initBackwardRelation(inputOutput);\n });\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const outputComponent of components)\n {\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions = [];\n\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n this.logger?.verbose('RelationsProcessor: processing input outputs {@data} ', {id, inputOutput, inputComponents, components});\n\n const outputObservable = (outputComponent as any)[`${inputOutput.outputName}Change`] as Observable<any>;\n\n //check whether is observable output\n if(!(outputObservable instanceof Observable))\n {\n this.logger?.warn('RelationsProcessor: Output on component {@data} is not observable', inputOutput);\n\n continue;\n }\n\n //set listening for output changes\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions.push(outputObservable.subscribe(() =>\n {\n let inputs = this.componentManager.get(inputOutput.inputComponentId);\n\n if(!inputs)\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data} on output change', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputs))\n {\n inputs = [inputs];\n }\n\n for(const input of inputs)\n {\n this.transferData(outputComponent, inputOutput.outputName, input, inputOutput.inputName, false);\n }\n }));\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n for(const inputComponent of inputComponents)\n {\n const id = `${inputComponent.ɵɵRelationsComponentId}-${outputComponent.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputComponent, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputComponent, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputComponent, inputOutput.outputName, inputComponent, inputOutput.inputName, true);\n }\n }\n }\n }\n }\n }\n\n /**\n * Method used for destroying component\n */\n public destroyComponent(id: string): void\n {\n const metadata: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n\n //uninitialize backward relations\n if(backwardRelations)\n {\n for(const relation of backwardRelations)\n {\n relation.initialized = {};\n }\n }\n\n //destroy relations\n if(metadata)\n {\n let components = this.componentManager.get(id);\n\n if(components)\n {\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const cmp of components)\n {\n cmp.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n cmp.ɵɵRelationsOutputsChangeSubscriptions = [];\n cmp.ɵɵRelationsOptionsInitialized = false;\n }\n }\n\n if(metadata.inputOutputs && Array.isArray(metadata.inputOutputs))\n {\n for(const inputOutput of metadata.inputOutputs)\n {\n inputOutput.initialized = {};\n }\n }\n\n //destroy auto created components and unregister them\n if(metadata.autoCreated)\n {\n let components = this.componentManager.get(id);\n\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n this.componentManager.unregisterComponent(id);\n\n for(const cmp of components)\n {\n cmp.ngOnDestroy?.();\n }\n }\n }\n }\n\n /**\n * Opens new scope of relations processor\n * @param id - Id of newly created scope\n * @param componentManager - Scoped instance of component manager\n * @param injector - Injector for current scope\n */\n public openScope(id: string,\n componentManager: RelationsComponentManager,\n injector: Injector,): RelationsProcessor\n {\n const processor = new RelationsProcessor(this.relationsManager, componentManager, injector, this.loader, this.logger, true);\n processor.scopeId = id;\n processor.parent = this;\n\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === id && relationsDef.componentType)\n {\n const instance = new relationsDef.componentType(injector);\n componentManager.registerComponent(componentId, instance);\n processor.updateRelations(componentId);\n }\n }\n\n return processor;\n }\n\n /**\n * Destroyes opened scope itself\n */\n public destroyScope(): void\n {\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === this.scopeId)\n {\n this.destroyComponent(componentId);\n }\n }\n }\n\n /**\n * Transfers data for specified component using its output relations, all data are transfered in single change set per component\n * @param id - Id of component whose outputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns dictionary with data transfer instructions per components\n */\n public transferOutputsData(id: string, delayed: true): Dictionary<RelationsDataTransferInstruction>\n public transferOutputsData(id: string, delayed: false): null\n public transferOutputsData(id: string, delayed: boolean = false): null|Dictionary<RelationsDataTransferInstruction>\n {\n const transfers: Dictionary<RelationsDataTransferInstructionImpl> = {};\n const relations: RelationsProcessorComponentData = this.relations[id];\n let components = this.componentManager.get(id);\n\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return delayed ? transfers : null;\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n //for each component containing outputs\n for(const outputComponent of components)\n {\n //for each relation\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n transfers[inputOutput.inputComponentId] ??= new RelationsDataTransferInstructionImpl(inputComponents);\n\n //for each input component\n for(const inputComponent of inputComponents)\n {\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[inputOutput.inputName];\n const currentValue = (outputComponent as any)[inputOutput.outputName];\n\n transfers[inputOutput.inputComponentId].changes[inputOutput.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n }\n }\n\n if(!delayed)\n {\n //transfers data\n for(const key in transfers)\n {\n const transfer = transfers[key];\n\n transfer.applyChanges();\n }\n }\n }\n\n return delayed ? transfers : null;\n }\n\n /**\n * Transfers data for specified component using its inputs relations, all data are transfered in single change\n * @param id - Id of component whose inputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns transfer instructions\n */\n public transferInputsData(id: string, delayed: true): RelationsDataTransferInstruction\n public transferInputsData(id: string, delayed: false): null\n public transferInputsData(id: string, delayed: boolean = false): null|RelationsDataTransferInstruction\n {\n const backwardRelations = this.backwardRelations[id];\n const inputComponent = this.componentManager.get(id);\n\n if(!backwardRelations)\n {\n this.logger?.warn('RelationsProcessor: No backward relations for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(!inputComponent)\n {\n this.logger?.warn('RelationsProcessor: Missing input components for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(Array.isArray(inputComponent))\n {\n this.logger?.error('RelationsProcessor: Only one component must be available for id {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n const transfer: RelationsDataTransferInstructionImpl = new RelationsDataTransferInstructionImpl([inputComponent]);\n\n //for each backward relation\n for(const backwardRelation of backwardRelations)\n {\n const outputComponent = this.componentManager.get(backwardRelation.outputComponentId);\n\n if((Array.isArray(outputComponent)))\n {\n this.logger?.error('RelationsProcessor: Only one output component must be available for id {@id}', {id});\n\n continue;\n }\n\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[backwardRelation.inputName];\n const currentValue = (outputComponent as any)[backwardRelation.outputName];\n\n transfer.changes[backwardRelation.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n\n if(!delayed)\n {\n transfer.applyChanges();\n }\n\n return delayed ? transfer : null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Initialize relations from metadata\n */\n protected async initializeRelations(): Promise<void>\n {\n await this.destroyRelations();\n this.setInitializePromise();\n\n this.logger?.debug('RelationsProcessor: initializing relations');\n\n //empty relations\n if(!this.relationsManager.relations.length)\n {\n this.resolveInitialized();\n\n return;\n }\n\n for(const meta of this.relationsManager.relations)\n {\n const outputs: RelationsProcessorInputOutputData[] = [];\n\n //no outputs metadata\n if(!meta.outputs)\n {\n continue;\n }\n\n for(const output of meta.outputs)\n {\n //no inputs metadata\n if(!output.inputs)\n {\n continue;\n }\n\n for(const input of output.inputs)\n {\n const inputOutput: RelationsProcessorInputOutputData =\n {\n inputComponentId: input.id,\n outputComponentId: meta.id,\n inputName: input.inputName,\n outputName: output.outputName,\n initialized: {},\n };\n\n outputs.push(inputOutput);\n\n if(!this.backwardRelations[input.id])\n {\n this.backwardRelations[input.id] = [];\n }\n\n this.backwardRelations[input.id].push(inputOutput);\n }\n }\n\n //sets options for relations component\n await this.initComponent(meta, outputs);\n }\n\n this.relationsChangeDetector.initialize(this.relations);\n this.resolveInitialized();\n }\n\n /**\n * Initialize backward relations\n * @param inputOutput - Data for input and output\n */\n protected initBackwardRelation(inputOutput: RelationsProcessorInputOutputData): void\n {\n let outputComponents = this.componentManager.get(inputOutput.outputComponentId);\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if((isBlank(outputComponents) || Array.isArray(outputComponents) && !outputComponents.length) ||\n (isBlank(inputComponents) || Array.isArray(inputComponents) && !inputComponents.length))\n {\n this.logger?.warn('RelationsProcessor: missing metadata for backward relations {@data}', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!Array.isArray(outputComponents))\n {\n outputComponents = [outputComponents];\n }\n\n for(const inputCmp of inputComponents)\n {\n for(const outputCmp of outputComponents)\n {\n const id = `${inputCmp.ɵɵRelationsComponentId}-${outputCmp.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputCmp, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputCmp, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputCmp, inputOutput.outputName, inputCmp, inputOutput.inputName, true);\n }\n }\n }\n }\n\n /**\n * Transfers data from source property to target property\n * @param source Instance of source object containing source property with data\n * @param sourceProperty Name of source property with data that are transfered\n * @param target Instance of target object containing target property for data\n * @param targetProperty Name of target property which will be filled with data\n * @param initial Indication whether is transfer of data initial, or on event\n */\n protected transferData(source: RelationsComponent, sourceProperty: string, target: RelationsComponent, targetProperty: string, initial: boolean): boolean\n {\n if(!source || !target)\n {\n return false;\n }\n\n const previousValue = (target as any)[targetProperty];\n const currentValue = (source as any)[sourceProperty];\n (target as any)[targetProperty] = (source as any)[sourceProperty];\n const changes: SimpleChanges = {};\n\n changes[targetProperty] =\n {\n previousValue,\n currentValue,\n firstChange: initial,\n isFirstChange: () => initial\n };\n\n target.ngOnChanges?.(changes);\n target.invalidateVisuals();\n\n return true;\n }\n\n /**\n * Initialize relation component\n * @param meta - Metadata for relations component\n * @param outputs - Array of outputs data for relations component\n */\n protected async initComponent(meta: RelationsComponentMetadata, outputs: RelationsProcessorInputOutputData[]): Promise<void>\n {\n const component = this.componentManager.get(meta.id);\n\n if(component)\n {\n this.initRelation(false, meta, outputs, null, null);\n this.updateRelations(meta.id);\n\n return;\n }\n\n const componentMeta = await this.loader.loadItem(meta);\n\n if(!componentMeta)\n {\n this.initRelation(false, meta, outputs, null, null);\n\n this.logger?.warn('RelationsProcessor: Unable to load relations component! {@meta}', {package: meta.package, name: meta.name});\n\n return;\n }\n\n if(!meta.scope)\n {\n const instance = new componentMeta.data(this.injector);\n this.componentManager.registerComponent(meta.id, instance);\n }\n\n this.initRelation(true, meta, outputs, meta.scope ?? null, meta.scope ? componentMeta.data : null);\n this.updateRelations(meta.id);\n }\n\n /**\n * Initialize relation for metadata and component\n * @param autoCreated - Indication whether was component auto created or not\n * @param meta - Metadata for relations component\n * @param inputOutputs - Array of outputs data for relations\n * @param scope - Current scope used for this relations component\n * @param componentType - Type used for creation of relations component (only for scoped ones)\n */\n protected initRelation(autoCreated: boolean, meta: RelationsComponentMetadata, inputOutputs: RelationsProcessorInputOutputData[], scope: string|null, componentType: RelationsComponentType|null): void\n {\n this.relations[meta.id] =\n {\n autoCreated,\n inputOutputs,\n metadataOptions: meta.relationsOptions,\n componentType,\n scope,\n };\n }\n\n /**\n * Initialize relations component options\n * @param components - Components which options should be initialized\n * @param meta - Metadata containing options for initialization\n */\n protected initOptions(components: RelationsProcessorComponent|RelationsProcessorComponent[], meta: RelationsProcessorComponentData): void\n {\n if(Array.isArray(components))\n {\n for(const comp of components)\n {\n if(!comp.ɵɵRelationsOptionsInitialized)\n {\n comp.relationsOptions = meta.metadataOptions;\n comp.ɵɵRelationsOptionsInitialized = true;\n }\n }\n }\n else\n {\n if(!components.ɵɵRelationsOptionsInitialized)\n {\n components.relationsOptions = meta.metadataOptions;\n components.ɵɵRelationsOptionsInitialized = true;\n }\n }\n }\n\n /**\n * Sets initialized promise\n */\n protected setInitializePromise(): void\n {\n this.ɵInitialized = new Promise(resolve => this.resolveInitialized = resolve);\n }\n\n /**\n * Destroys initialized relations\n */\n protected async destroyRelations(): Promise<void>\n {\n await this.ɵInitialized;\n\n Object.keys(this.relations).forEach(id => this.destroyComponent(id));\n\n this.relations = {};\n this.backwardRelations = {};\n }\n}"]}
|
|
@@ -500,12 +500,14 @@ export class RelationsProcessor {
|
|
|
500
500
|
for (const comp of components) {
|
|
501
501
|
if (!comp.ɵɵRelationsOptionsInitialized) {
|
|
502
502
|
comp.relationsOptions = meta.metadataOptions;
|
|
503
|
+
comp.ɵɵRelationsOptionsInitialized = true;
|
|
503
504
|
}
|
|
504
505
|
}
|
|
505
506
|
}
|
|
506
507
|
else {
|
|
507
508
|
if (!components.ɵɵRelationsOptionsInitialized) {
|
|
508
509
|
components.relationsOptions = meta.metadataOptions;
|
|
510
|
+
components.ɵɵRelationsOptionsInitialized = true;
|
|
509
511
|
}
|
|
510
512
|
}
|
|
511
513
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationsProcessor.service.js","sourceRoot":"","sources":["../../../../../relations/src/services/relationsProcessor/relationsProcessor.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {inject, Inject, Injectable, Injector, OnDestroy, Optional, SimpleChanges} from '@angular/core';\nimport {LOGGER, Logger} from '@anglr/common';\nimport {DynamicItemLoader} from '@anglr/dynamic';\nimport {Dictionary, isBlank, noop, NoopAction} from '@jscrpt/common';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {RelationsComponent, RelationsComponentMetadata, RelationsComponentType} from '../../interfaces';\nimport {RelationsComponentManager} from '../relationsComponentManager/relationsComponentManager.service';\nimport {RelationsManager} from '../relationsManager/relationsManager.service';\nimport {RelationsDataTransferInstruction, RelationsProcessorComponentData, RelationsProcessorInputOutputData} from './relationsProcessor.interface';\nimport {RELATIONS_COMPONENTS_LOADER, RELATIONS_PROCESSOR_SKIP_INIT} from '../../misc/tokens';\nimport {RelationsComponentDef, RelationsProcessorComponent} from '../../misc/types';\nimport {RelationsDataTransferInstructionImpl} from './relationsDataTransferInstruction';\nimport {isAssigned, isSkipInit} from '../../misc/utils';\nimport {RelationsChangeDetector} from '../relationsChangeDetector/relationsChangeDetector.service';\n\n/**\n * Processor that applies relations to registered components\n */\n@Injectable()\nexport class RelationsProcessor implements OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Promise used for indication that processor was initialized\n */\n protected ɵInitialized: Promise<void> = Promise.resolve();\n\n /**\n * Relations metadata\n */\n protected ɵRelations: Dictionary<RelationsProcessorComponentData> = {};\n\n /**\n * Array of backward relations, relations that are used for obtaining data for inputs\n */\n protected ɵBackwardRelations: Dictionary<RelationsProcessorInputOutputData[]> = {};\n\n /**\n * Resolves initialized\n */\n protected resolveInitialized: NoopAction = noop;\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n /**\n * Gets or sets relations metadata\n */\n protected get relations(): Dictionary<RelationsProcessorComponentData>\n {\n if(this.parent)\n {\n return this.parent.relations;\n }\n\n return this.ɵRelations;\n }\n protected set relations(value: Dictionary<RelationsProcessorComponentData>)\n {\n this.ɵRelations = value;\n }\n\n /**\n * Gets or sets array of backward relations, relations that are used for obtaining data for inputs\n */\n protected get backwardRelations(): Dictionary<RelationsProcessorInputOutputData[]>\n {\n if(this.parent)\n {\n return this.parent.backwardRelations;\n }\n\n return this.ɵBackwardRelations;\n }\n protected set backwardRelations(value: Dictionary<RelationsProcessorInputOutputData[]>)\n {\n this.ɵBackwardRelations = value;\n }\n\n /**\n * Instance of parent relations processor\n */\n protected parent: RelationsProcessor|null = null;\n\n /**\n * Id of scope\n */\n protected scopeId: string|null = null;\n\n /**\n * Injected relations change detector\n */\n protected relationsChangeDetector: RelationsChangeDetector = inject(RelationsChangeDetector);\n\n //######################### public properties #########################\n\n /**\n * Gets promise that completes when processor was initialized\n */\n public get initialized(): Promise<void>\n {\n return this.ɵInitialized;\n }\n\n //######################### constructor #########################\n constructor(protected relationsManager: RelationsManager,\n protected componentManager: RelationsComponentManager,\n protected injector: Injector,\n @Inject(RELATIONS_COMPONENTS_LOADER) protected loader: DynamicItemLoader<RelationsComponentDef>,\n @Inject(LOGGER) @Optional() protected logger?: Logger,\n @Inject(RELATIONS_PROCESSOR_SKIP_INIT) @Optional() skipInit?: boolean,)\n {\n if(!skipInit)\n {\n this.initSubscriptions.add(this.relationsManager.relationsChange.subscribe(() => this.initializeRelations()));\n\n this.initializeRelations();\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.initSubscriptions.unsubscribe();\n\n this.destroyRelations();\n }\n\n //######################### public methods #########################\n\n /**\n * Updates relations\n * @param id - Id of component to be registered\n */\n public updateRelations(id: string): void\n {\n this.logger?.debug('RelationsProcessor: Updating relations for {@id}', {id});\n\n const relations: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n let components = this.componentManager.get(id);\n\n //this component has no relations\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return;\n }\n\n this.initOptions(components, relations);\n\n //initialize default value from connection to this\n if(backwardRelations?.length)\n {\n backwardRelations.forEach(inputOutput =>\n {\n this.initBackwardRelation(inputOutput);\n });\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const outputComponent of components)\n {\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions = [];\n\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n this.logger?.verbose('RelationsProcessor: processing input outputs {@data} ', {id, inputOutput, inputComponents, components});\n\n const outputObservable = (outputComponent as any)[`${inputOutput.outputName}Change`] as Observable<any>;\n\n //check whether is observable output\n if(!(outputObservable instanceof Observable))\n {\n this.logger?.warn('RelationsProcessor: Output on component {@data} is not observable', inputOutput);\n\n continue;\n }\n\n //set listening for output changes\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions.push(outputObservable.subscribe(() =>\n {\n let inputs = this.componentManager.get(inputOutput.inputComponentId);\n\n if(!inputs)\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data} on output change', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputs))\n {\n inputs = [inputs];\n }\n\n for(const input of inputs)\n {\n this.transferData(outputComponent, inputOutput.outputName, input, inputOutput.inputName, false);\n }\n }));\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n for(const inputComponent of inputComponents)\n {\n const id = `${inputComponent.ɵɵRelationsComponentId}-${outputComponent.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputComponent, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputComponent, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputComponent, inputOutput.outputName, inputComponent, inputOutput.inputName, true);\n }\n }\n }\n }\n }\n }\n\n /**\n * Method used for destroying component\n */\n public destroyComponent(id: string): void\n {\n const metadata: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n\n //uninitialize backward relations\n if(backwardRelations)\n {\n for(const relation of backwardRelations)\n {\n relation.initialized = {};\n }\n }\n\n //destroy relations\n if(metadata)\n {\n let components = this.componentManager.get(id);\n\n if(components)\n {\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const cmp of components)\n {\n cmp.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n cmp.ɵɵRelationsOutputsChangeSubscriptions = [];\n cmp.ɵɵRelationsOptionsInitialized = false;\n }\n }\n\n if(metadata.inputOutputs && Array.isArray(metadata.inputOutputs))\n {\n for(const inputOutput of metadata.inputOutputs)\n {\n inputOutput.initialized = {};\n }\n }\n\n //destroy auto created components and unregister them\n if(metadata.autoCreated)\n {\n let components = this.componentManager.get(id);\n\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n this.componentManager.unregisterComponent(id);\n\n for(const cmp of components)\n {\n cmp.ngOnDestroy?.();\n }\n }\n }\n }\n\n /**\n * Opens new scope of relations processor\n * @param id - Id of newly created scope\n * @param componentManager - Scoped instance of component manager\n * @param injector - Injector for current scope\n */\n public openScope(id: string,\n componentManager: RelationsComponentManager,\n injector: Injector,): RelationsProcessor\n {\n const processor = new RelationsProcessor(this.relationsManager, componentManager, injector, this.loader, this.logger, true);\n processor.scopeId = id;\n processor.parent = this;\n\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === id && relationsDef.componentType)\n {\n const instance = new relationsDef.componentType(injector);\n componentManager.registerComponent(componentId, instance);\n processor.updateRelations(componentId);\n }\n }\n\n return processor;\n }\n\n /**\n * Destroyes opened scope itself\n */\n public destroyScope(): void\n {\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === this.scopeId)\n {\n this.destroyComponent(componentId);\n }\n }\n }\n\n /**\n * Transfers data for specified component using its output relations, all data are transfered in single change set per component\n * @param id - Id of component whose outputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns dictionary with data transfer instructions per components\n */\n public transferOutputsData(id: string, delayed: true): Dictionary<RelationsDataTransferInstruction>\n public transferOutputsData(id: string, delayed: false): null\n public transferOutputsData(id: string, delayed: boolean = false): null|Dictionary<RelationsDataTransferInstruction>\n {\n const transfers: Dictionary<RelationsDataTransferInstructionImpl> = {};\n const relations: RelationsProcessorComponentData = this.relations[id];\n let components = this.componentManager.get(id);\n\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return delayed ? transfers : null;\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n //for each component containing outputs\n for(const outputComponent of components)\n {\n //for each relation\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n transfers[inputOutput.inputComponentId] ??= new RelationsDataTransferInstructionImpl(inputComponents);\n\n //for each input component\n for(const inputComponent of inputComponents)\n {\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[inputOutput.inputName];\n const currentValue = (outputComponent as any)[inputOutput.outputName];\n\n transfers[inputOutput.inputComponentId].changes[inputOutput.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n }\n }\n\n if(!delayed)\n {\n //transfers data\n for(const key in transfers)\n {\n const transfer = transfers[key];\n\n transfer.applyChanges();\n }\n }\n }\n\n return delayed ? transfers : null;\n }\n\n /**\n * Transfers data for specified component using its inputs relations, all data are transfered in single change\n * @param id - Id of component whose inputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns transfer instructions\n */\n public transferInputsData(id: string, delayed: true): RelationsDataTransferInstruction\n public transferInputsData(id: string, delayed: false): null\n public transferInputsData(id: string, delayed: boolean = false): null|RelationsDataTransferInstruction\n {\n const backwardRelations = this.backwardRelations[id];\n const inputComponent = this.componentManager.get(id);\n\n if(!backwardRelations)\n {\n this.logger?.warn('RelationsProcessor: No backward relations for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(!inputComponent)\n {\n this.logger?.warn('RelationsProcessor: Missing input components for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(Array.isArray(inputComponent))\n {\n this.logger?.error('RelationsProcessor: Only one component must be available for id {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n const transfer: RelationsDataTransferInstructionImpl = new RelationsDataTransferInstructionImpl([inputComponent]);\n\n //for each backward relation\n for(const backwardRelation of backwardRelations)\n {\n const outputComponent = this.componentManager.get(backwardRelation.outputComponentId);\n\n if((Array.isArray(outputComponent)))\n {\n this.logger?.error('RelationsProcessor: Only one output component must be available for id {@id}', {id});\n\n continue;\n }\n\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[backwardRelation.inputName];\n const currentValue = (outputComponent as any)[backwardRelation.outputName];\n\n transfer.changes[backwardRelation.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n\n if(!delayed)\n {\n transfer.applyChanges();\n }\n\n return delayed ? transfer : null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Initialize relations from metadata\n */\n protected async initializeRelations(): Promise<void>\n {\n await this.destroyRelations();\n this.setInitializePromise();\n\n this.logger?.debug('RelationsProcessor: initializing relations');\n\n //empty relations\n if(!this.relationsManager.relations.length)\n {\n this.resolveInitialized();\n\n return;\n }\n\n for(const meta of this.relationsManager.relations)\n {\n const outputs: RelationsProcessorInputOutputData[] = [];\n\n //no outputs metadata\n if(!meta.outputs)\n {\n continue;\n }\n\n for(const output of meta.outputs)\n {\n //no inputs metadata\n if(!output.inputs)\n {\n continue;\n }\n\n for(const input of output.inputs)\n {\n const inputOutput: RelationsProcessorInputOutputData =\n {\n inputComponentId: input.id,\n outputComponentId: meta.id,\n inputName: input.inputName,\n outputName: output.outputName,\n initialized: {},\n };\n\n outputs.push(inputOutput);\n\n if(!this.backwardRelations[input.id])\n {\n this.backwardRelations[input.id] = [];\n }\n\n this.backwardRelations[input.id].push(inputOutput);\n }\n }\n\n //sets options for relations component\n await this.initComponent(meta, outputs);\n }\n\n this.relationsChangeDetector.initialize(this.relations);\n this.resolveInitialized();\n }\n\n /**\n * Initialize backward relations\n * @param inputOutput - Data for input and output\n */\n protected initBackwardRelation(inputOutput: RelationsProcessorInputOutputData): void\n {\n let outputComponents = this.componentManager.get(inputOutput.outputComponentId);\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if((isBlank(outputComponents) || Array.isArray(outputComponents) && !outputComponents.length) ||\n (isBlank(inputComponents) || Array.isArray(inputComponents) && !inputComponents.length))\n {\n this.logger?.warn('RelationsProcessor: missing metadata for backward relations {@data}', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!Array.isArray(outputComponents))\n {\n outputComponents = [outputComponents];\n }\n\n for(const inputCmp of inputComponents)\n {\n for(const outputCmp of outputComponents)\n {\n const id = `${inputCmp.ɵɵRelationsComponentId}-${outputCmp.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputCmp, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputCmp, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputCmp, inputOutput.outputName, inputCmp, inputOutput.inputName, true);\n }\n }\n }\n }\n\n /**\n * Transfers data from source property to target property\n * @param source Instance of source object containing source property with data\n * @param sourceProperty Name of source property with data that are transfered\n * @param target Instance of target object containing target property for data\n * @param targetProperty Name of target property which will be filled with data\n * @param initial Indication whether is transfer of data initial, or on event\n */\n protected transferData(source: RelationsComponent, sourceProperty: string, target: RelationsComponent, targetProperty: string, initial: boolean): boolean\n {\n if(!source || !target)\n {\n return false;\n }\n\n const previousValue = (target as any)[targetProperty];\n const currentValue = (source as any)[sourceProperty];\n (target as any)[targetProperty] = (source as any)[sourceProperty];\n const changes: SimpleChanges = {};\n\n changes[targetProperty] =\n {\n previousValue,\n currentValue,\n firstChange: initial,\n isFirstChange: () => initial\n };\n\n target.ngOnChanges?.(changes);\n target.invalidateVisuals();\n\n return true;\n }\n\n /**\n * Initialize relation component\n * @param meta - Metadata for relations component\n * @param outputs - Array of outputs data for relations component\n */\n protected async initComponent(meta: RelationsComponentMetadata, outputs: RelationsProcessorInputOutputData[]): Promise<void>\n {\n const component = this.componentManager.get(meta.id);\n\n if(component)\n {\n this.initRelation(false, meta, outputs, null, null);\n this.updateRelations(meta.id);\n\n return;\n }\n\n const componentMeta = await this.loader.loadItem(meta);\n\n if(!componentMeta)\n {\n this.initRelation(false, meta, outputs, null, null);\n\n this.logger?.warn('RelationsProcessor: Unable to load relations component! {@meta}', {package: meta.package, name: meta.name});\n\n return;\n }\n\n if(!meta.scope)\n {\n const instance = new componentMeta.data(this.injector);\n this.componentManager.registerComponent(meta.id, instance);\n }\n\n this.initRelation(true, meta, outputs, meta.scope ?? null, meta.scope ? componentMeta.data : null);\n this.updateRelations(meta.id);\n }\n\n /**\n * Initialize relation for metadata and component\n * @param autoCreated - Indication whether was component auto created or not\n * @param meta - Metadata for relations component\n * @param inputOutputs - Array of outputs data for relations\n * @param scope - Current scope used for this relations component\n * @param componentType - Type used for creation of relations component (only for scoped ones)\n */\n protected initRelation(autoCreated: boolean, meta: RelationsComponentMetadata, inputOutputs: RelationsProcessorInputOutputData[], scope: string|null, componentType: RelationsComponentType|null): void\n {\n this.relations[meta.id] =\n {\n autoCreated,\n inputOutputs,\n metadataOptions: meta.relationsOptions,\n componentType,\n scope,\n };\n }\n\n /**\n * Initialize relations component options\n * @param components - Components which options should be initialized\n * @param meta - Metadata containing options for initialization\n */\n protected initOptions(components: RelationsProcessorComponent|RelationsProcessorComponent[], meta: RelationsProcessorComponentData): void\n {\n if(Array.isArray(components))\n {\n for(const comp of components)\n {\n if(!comp.ɵɵRelationsOptionsInitialized)\n {\n comp.relationsOptions = meta.metadataOptions;\n }\n }\n }\n else\n {\n if(!components.ɵɵRelationsOptionsInitialized)\n {\n components.relationsOptions = meta.metadataOptions;\n }\n }\n }\n\n /**\n * Sets initialized promise\n */\n protected setInitializePromise(): void\n {\n this.ɵInitialized = new Promise(resolve => this.resolveInitialized = resolve);\n }\n\n /**\n * Destroys initialized relations\n */\n protected async destroyRelations(): Promise<void>\n {\n await this.ɵInitialized;\n\n Object.keys(this.relations).forEach(id => this.destroyComponent(id));\n\n this.relations = {};\n this.backwardRelations = {};\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"relationsProcessor.service.js","sourceRoot":"","sources":["../../../../../relations/src/services/relationsProcessor/relationsProcessor.service.ts"],"names":[],"mappings":"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","sourcesContent":["import {inject, Inject, Injectable, Injector, OnDestroy, Optional, SimpleChanges} from '@angular/core';\nimport {LOGGER, Logger} from '@anglr/common';\nimport {DynamicItemLoader} from '@anglr/dynamic';\nimport {Dictionary, isBlank, noop, NoopAction} from '@jscrpt/common';\nimport {Observable, Subscription} from 'rxjs';\n\nimport {RelationsComponent, RelationsComponentMetadata, RelationsComponentType} from '../../interfaces';\nimport {RelationsComponentManager} from '../relationsComponentManager/relationsComponentManager.service';\nimport {RelationsManager} from '../relationsManager/relationsManager.service';\nimport {RelationsDataTransferInstruction, RelationsProcessorComponentData, RelationsProcessorInputOutputData} from './relationsProcessor.interface';\nimport {RELATIONS_COMPONENTS_LOADER, RELATIONS_PROCESSOR_SKIP_INIT} from '../../misc/tokens';\nimport {RelationsComponentDef, RelationsProcessorComponent} from '../../misc/types';\nimport {RelationsDataTransferInstructionImpl} from './relationsDataTransferInstruction';\nimport {isAssigned, isSkipInit} from '../../misc/utils';\nimport {RelationsChangeDetector} from '../relationsChangeDetector/relationsChangeDetector.service';\n\n/**\n * Processor that applies relations to registered components\n */\n@Injectable()\nexport class RelationsProcessor implements OnDestroy\n{\n //######################### protected fields #########################\n\n /**\n * Promise used for indication that processor was initialized\n */\n protected ɵInitialized: Promise<void> = Promise.resolve();\n\n /**\n * Relations metadata\n */\n protected ɵRelations: Dictionary<RelationsProcessorComponentData> = {};\n\n /**\n * Array of backward relations, relations that are used for obtaining data for inputs\n */\n protected ɵBackwardRelations: Dictionary<RelationsProcessorInputOutputData[]> = {};\n\n /**\n * Resolves initialized\n */\n protected resolveInitialized: NoopAction = noop;\n\n /**\n * Subscriptions created during initialization\n */\n protected initSubscriptions: Subscription = new Subscription();\n\n /**\n * Gets or sets relations metadata\n */\n protected get relations(): Dictionary<RelationsProcessorComponentData>\n {\n if(this.parent)\n {\n return this.parent.relations;\n }\n\n return this.ɵRelations;\n }\n protected set relations(value: Dictionary<RelationsProcessorComponentData>)\n {\n this.ɵRelations = value;\n }\n\n /**\n * Gets or sets array of backward relations, relations that are used for obtaining data for inputs\n */\n protected get backwardRelations(): Dictionary<RelationsProcessorInputOutputData[]>\n {\n if(this.parent)\n {\n return this.parent.backwardRelations;\n }\n\n return this.ɵBackwardRelations;\n }\n protected set backwardRelations(value: Dictionary<RelationsProcessorInputOutputData[]>)\n {\n this.ɵBackwardRelations = value;\n }\n\n /**\n * Instance of parent relations processor\n */\n protected parent: RelationsProcessor|null = null;\n\n /**\n * Id of scope\n */\n protected scopeId: string|null = null;\n\n /**\n * Injected relations change detector\n */\n protected relationsChangeDetector: RelationsChangeDetector = inject(RelationsChangeDetector);\n\n //######################### public properties #########################\n\n /**\n * Gets promise that completes when processor was initialized\n */\n public get initialized(): Promise<void>\n {\n return this.ɵInitialized;\n }\n\n //######################### constructor #########################\n constructor(protected relationsManager: RelationsManager,\n protected componentManager: RelationsComponentManager,\n protected injector: Injector,\n @Inject(RELATIONS_COMPONENTS_LOADER) protected loader: DynamicItemLoader<RelationsComponentDef>,\n @Inject(LOGGER) @Optional() protected logger?: Logger,\n @Inject(RELATIONS_PROCESSOR_SKIP_INIT) @Optional() skipInit?: boolean,)\n {\n if(!skipInit)\n {\n this.initSubscriptions.add(this.relationsManager.relationsChange.subscribe(() => this.initializeRelations()));\n\n this.initializeRelations();\n }\n }\n\n //######################### public methods - implementation of OnDestroy #########################\n\n /**\n * Called when component is destroyed\n */\n public ngOnDestroy(): void\n {\n this.initSubscriptions.unsubscribe();\n\n this.destroyRelations();\n }\n\n //######################### public methods #########################\n\n /**\n * Updates relations\n * @param id - Id of component to be registered\n */\n public updateRelations(id: string): void\n {\n this.logger?.debug('RelationsProcessor: Updating relations for {@id}', {id});\n\n const relations: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n let components = this.componentManager.get(id);\n\n //this component has no relations\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return;\n }\n\n this.initOptions(components, relations);\n\n //initialize default value from connection to this\n if(backwardRelations?.length)\n {\n backwardRelations.forEach(inputOutput =>\n {\n this.initBackwardRelation(inputOutput);\n });\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const outputComponent of components)\n {\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions = [];\n\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n this.logger?.verbose('RelationsProcessor: processing input outputs {@data} ', {id, inputOutput, inputComponents, components});\n\n const outputObservable = (outputComponent as any)[`${inputOutput.outputName}Change`] as Observable<any>;\n\n //check whether is observable output\n if(!(outputObservable instanceof Observable))\n {\n this.logger?.warn('RelationsProcessor: Output on component {@data} is not observable', inputOutput);\n\n continue;\n }\n\n //set listening for output changes\n outputComponent.ɵɵRelationsOutputsChangeSubscriptions.push(outputObservable.subscribe(() =>\n {\n let inputs = this.componentManager.get(inputOutput.inputComponentId);\n\n if(!inputs)\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data} on output change', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputs))\n {\n inputs = [inputs];\n }\n\n for(const input of inputs)\n {\n this.transferData(outputComponent, inputOutput.outputName, input, inputOutput.inputName, false);\n }\n }));\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n for(const inputComponent of inputComponents)\n {\n const id = `${inputComponent.ɵɵRelationsComponentId}-${outputComponent.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputComponent, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputComponent, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputComponent, inputOutput.outputName, inputComponent, inputOutput.inputName, true);\n }\n }\n }\n }\n }\n }\n\n /**\n * Method used for destroying component\n */\n public destroyComponent(id: string): void\n {\n const metadata: RelationsProcessorComponentData = this.relations[id];\n const backwardRelations = this.backwardRelations[id];\n\n //uninitialize backward relations\n if(backwardRelations)\n {\n for(const relation of backwardRelations)\n {\n relation.initialized = {};\n }\n }\n\n //destroy relations\n if(metadata)\n {\n let components = this.componentManager.get(id);\n\n if(components)\n {\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n for(const cmp of components)\n {\n cmp.ɵɵRelationsOutputsChangeSubscriptions?.forEach(subscription => subscription.unsubscribe());\n cmp.ɵɵRelationsOutputsChangeSubscriptions = [];\n cmp.ɵɵRelationsOptionsInitialized = false;\n }\n }\n\n if(metadata.inputOutputs && Array.isArray(metadata.inputOutputs))\n {\n for(const inputOutput of metadata.inputOutputs)\n {\n inputOutput.initialized = {};\n }\n }\n\n //destroy auto created components and unregister them\n if(metadata.autoCreated)\n {\n let components = this.componentManager.get(id);\n\n if(!components)\n {\n return;\n }\n\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n this.componentManager.unregisterComponent(id);\n\n for(const cmp of components)\n {\n cmp.ngOnDestroy?.();\n }\n }\n }\n }\n\n /**\n * Opens new scope of relations processor\n * @param id - Id of newly created scope\n * @param componentManager - Scoped instance of component manager\n * @param injector - Injector for current scope\n */\n public openScope(id: string,\n componentManager: RelationsComponentManager,\n injector: Injector,): RelationsProcessor\n {\n const processor = new RelationsProcessor(this.relationsManager, componentManager, injector, this.loader, this.logger, true);\n processor.scopeId = id;\n processor.parent = this;\n\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === id && relationsDef.componentType)\n {\n const instance = new relationsDef.componentType(injector);\n componentManager.registerComponent(componentId, instance);\n processor.updateRelations(componentId);\n }\n }\n\n return processor;\n }\n\n /**\n * Destroyes opened scope itself\n */\n public destroyScope(): void\n {\n for(const componentId in this.relations)\n {\n const relationsDef = this.relations[componentId];\n\n //Same scope initialize\n if(relationsDef.scope === this.scopeId)\n {\n this.destroyComponent(componentId);\n }\n }\n }\n\n /**\n * Transfers data for specified component using its output relations, all data are transfered in single change set per component\n * @param id - Id of component whose outputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns dictionary with data transfer instructions per components\n */\n public transferOutputsData(id: string, delayed: true): Dictionary<RelationsDataTransferInstruction>\n public transferOutputsData(id: string, delayed: false): null\n public transferOutputsData(id: string, delayed: boolean = false): null|Dictionary<RelationsDataTransferInstruction>\n {\n const transfers: Dictionary<RelationsDataTransferInstructionImpl> = {};\n const relations: RelationsProcessorComponentData = this.relations[id];\n let components = this.componentManager.get(id);\n\n if(!relations || !components)\n {\n this.logger?.warn('RelationsProcessor: No relations for {@id}', {id});\n\n return delayed ? transfers : null;\n }\n\n if(relations?.inputOutputs)\n {\n if(!Array.isArray(components))\n {\n components = [components];\n }\n\n //for each component containing outputs\n for(const outputComponent of components)\n {\n //for each relation\n for(const inputOutput of relations.inputOutputs)\n {\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if(inputComponents && !Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!inputComponents || !Array.isArray(inputComponents))\n {\n this.logger?.warn('RelationsProcessor: Missing input components {@data}', inputOutput);\n\n continue;\n }\n\n transfers[inputOutput.inputComponentId] ??= new RelationsDataTransferInstructionImpl(inputComponents);\n\n //for each input component\n for(const inputComponent of inputComponents)\n {\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[inputOutput.inputName];\n const currentValue = (outputComponent as any)[inputOutput.outputName];\n\n transfers[inputOutput.inputComponentId].changes[inputOutput.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n }\n }\n\n if(!delayed)\n {\n //transfers data\n for(const key in transfers)\n {\n const transfer = transfers[key];\n\n transfer.applyChanges();\n }\n }\n }\n\n return delayed ? transfers : null;\n }\n\n /**\n * Transfers data for specified component using its inputs relations, all data are transfered in single change\n * @param id - Id of component whose inputs relations should be applied to transfer data\n * @param delayed - Indication whether delay data transfer and only generate instructions, if true returns transfer instructions\n */\n public transferInputsData(id: string, delayed: true): RelationsDataTransferInstruction\n public transferInputsData(id: string, delayed: false): null\n public transferInputsData(id: string, delayed: boolean = false): null|RelationsDataTransferInstruction\n {\n const backwardRelations = this.backwardRelations[id];\n const inputComponent = this.componentManager.get(id);\n\n if(!backwardRelations)\n {\n this.logger?.warn('RelationsProcessor: No backward relations for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(!inputComponent)\n {\n this.logger?.warn('RelationsProcessor: Missing input components for {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n if(Array.isArray(inputComponent))\n {\n this.logger?.error('RelationsProcessor: Only one component must be available for id {@id}', {id});\n\n return delayed ? new RelationsDataTransferInstructionImpl([]) : null;\n }\n\n const transfer: RelationsDataTransferInstructionImpl = new RelationsDataTransferInstructionImpl([inputComponent]);\n\n //for each backward relation\n for(const backwardRelation of backwardRelations)\n {\n const outputComponent = this.componentManager.get(backwardRelation.outputComponentId);\n\n if((Array.isArray(outputComponent)))\n {\n this.logger?.error('RelationsProcessor: Only one output component must be available for id {@id}', {id});\n\n continue;\n }\n\n if(!outputComponent || !inputComponent)\n {\n continue;\n }\n\n const previousValue = (inputComponent as any)[backwardRelation.inputName];\n const currentValue = (outputComponent as any)[backwardRelation.outputName];\n\n transfer.changes[backwardRelation.inputName] =\n {\n previousValue,\n currentValue,\n firstChange: false,\n isFirstChange: () => false,\n };\n }\n\n if(!delayed)\n {\n transfer.applyChanges();\n }\n\n return delayed ? transfer : null;\n }\n\n //######################### protected methods #########################\n\n /**\n * Initialize relations from metadata\n */\n protected async initializeRelations(): Promise<void>\n {\n await this.destroyRelations();\n this.setInitializePromise();\n\n this.logger?.debug('RelationsProcessor: initializing relations');\n\n //empty relations\n if(!this.relationsManager.relations.length)\n {\n this.resolveInitialized();\n\n return;\n }\n\n for(const meta of this.relationsManager.relations)\n {\n const outputs: RelationsProcessorInputOutputData[] = [];\n\n //no outputs metadata\n if(!meta.outputs)\n {\n continue;\n }\n\n for(const output of meta.outputs)\n {\n //no inputs metadata\n if(!output.inputs)\n {\n continue;\n }\n\n for(const input of output.inputs)\n {\n const inputOutput: RelationsProcessorInputOutputData =\n {\n inputComponentId: input.id,\n outputComponentId: meta.id,\n inputName: input.inputName,\n outputName: output.outputName,\n initialized: {},\n };\n\n outputs.push(inputOutput);\n\n if(!this.backwardRelations[input.id])\n {\n this.backwardRelations[input.id] = [];\n }\n\n this.backwardRelations[input.id].push(inputOutput);\n }\n }\n\n //sets options for relations component\n await this.initComponent(meta, outputs);\n }\n\n this.relationsChangeDetector.initialize(this.relations);\n this.resolveInitialized();\n }\n\n /**\n * Initialize backward relations\n * @param inputOutput - Data for input and output\n */\n protected initBackwardRelation(inputOutput: RelationsProcessorInputOutputData): void\n {\n let outputComponents = this.componentManager.get(inputOutput.outputComponentId);\n let inputComponents = this.componentManager.get(inputOutput.inputComponentId);\n\n if((isBlank(outputComponents) || Array.isArray(outputComponents) && !outputComponents.length) ||\n (isBlank(inputComponents) || Array.isArray(inputComponents) && !inputComponents.length))\n {\n this.logger?.warn('RelationsProcessor: missing metadata for backward relations {@data}', inputOutput);\n\n return;\n }\n\n if(!Array.isArray(inputComponents))\n {\n inputComponents = [inputComponents];\n }\n\n if(!Array.isArray(outputComponents))\n {\n outputComponents = [outputComponents];\n }\n\n for(const inputCmp of inputComponents)\n {\n for(const outputCmp of outputComponents)\n {\n const id = `${inputCmp.ɵɵRelationsComponentId}-${outputCmp.ɵɵRelationsComponentId}`;\n\n //init data transfer only if not marked as skip init and was not initialized and was already at least once assigned\n if(!isSkipInit(outputCmp, inputOutput.outputName) && !inputOutput.initialized[id] && isAssigned(outputCmp, inputOutput.outputName))\n {\n inputOutput.initialized[id] = this.transferData(outputCmp, inputOutput.outputName, inputCmp, inputOutput.inputName, true);\n }\n }\n }\n }\n\n /**\n * Transfers data from source property to target property\n * @param source Instance of source object containing source property with data\n * @param sourceProperty Name of source property with data that are transfered\n * @param target Instance of target object containing target property for data\n * @param targetProperty Name of target property which will be filled with data\n * @param initial Indication whether is transfer of data initial, or on event\n */\n protected transferData(source: RelationsComponent, sourceProperty: string, target: RelationsComponent, targetProperty: string, initial: boolean): boolean\n {\n if(!source || !target)\n {\n return false;\n }\n\n const previousValue = (target as any)[targetProperty];\n const currentValue = (source as any)[sourceProperty];\n (target as any)[targetProperty] = (source as any)[sourceProperty];\n const changes: SimpleChanges = {};\n\n changes[targetProperty] =\n {\n previousValue,\n currentValue,\n firstChange: initial,\n isFirstChange: () => initial\n };\n\n target.ngOnChanges?.(changes);\n target.invalidateVisuals();\n\n return true;\n }\n\n /**\n * Initialize relation component\n * @param meta - Metadata for relations component\n * @param outputs - Array of outputs data for relations component\n */\n protected async initComponent(meta: RelationsComponentMetadata, outputs: RelationsProcessorInputOutputData[]): Promise<void>\n {\n const component = this.componentManager.get(meta.id);\n\n if(component)\n {\n this.initRelation(false, meta, outputs, null, null);\n this.updateRelations(meta.id);\n\n return;\n }\n\n const componentMeta = await this.loader.loadItem(meta);\n\n if(!componentMeta)\n {\n this.initRelation(false, meta, outputs, null, null);\n\n this.logger?.warn('RelationsProcessor: Unable to load relations component! {@meta}', {package: meta.package, name: meta.name});\n\n return;\n }\n\n if(!meta.scope)\n {\n const instance = new componentMeta.data(this.injector);\n this.componentManager.registerComponent(meta.id, instance);\n }\n\n this.initRelation(true, meta, outputs, meta.scope ?? null, meta.scope ? componentMeta.data : null);\n this.updateRelations(meta.id);\n }\n\n /**\n * Initialize relation for metadata and component\n * @param autoCreated - Indication whether was component auto created or not\n * @param meta - Metadata for relations component\n * @param inputOutputs - Array of outputs data for relations\n * @param scope - Current scope used for this relations component\n * @param componentType - Type used for creation of relations component (only for scoped ones)\n */\n protected initRelation(autoCreated: boolean, meta: RelationsComponentMetadata, inputOutputs: RelationsProcessorInputOutputData[], scope: string|null, componentType: RelationsComponentType|null): void\n {\n this.relations[meta.id] =\n {\n autoCreated,\n inputOutputs,\n metadataOptions: meta.relationsOptions,\n componentType,\n scope,\n };\n }\n\n /**\n * Initialize relations component options\n * @param components - Components which options should be initialized\n * @param meta - Metadata containing options for initialization\n */\n protected initOptions(components: RelationsProcessorComponent|RelationsProcessorComponent[], meta: RelationsProcessorComponentData): void\n {\n if(Array.isArray(components))\n {\n for(const comp of components)\n {\n if(!comp.ɵɵRelationsOptionsInitialized)\n {\n comp.relationsOptions = meta.metadataOptions;\n comp.ɵɵRelationsOptionsInitialized = true;\n }\n }\n }\n else\n {\n if(!components.ɵɵRelationsOptionsInitialized)\n {\n components.relationsOptions = meta.metadataOptions;\n components.ɵɵRelationsOptionsInitialized = true;\n }\n }\n }\n\n /**\n * Sets initialized promise\n */\n protected setInitializePromise(): void\n {\n this.ɵInitialized = new Promise(resolve => this.resolveInitialized = resolve);\n }\n\n /**\n * Destroys initialized relations\n */\n protected async destroyRelations(): Promise<void>\n {\n await this.ɵInitialized;\n\n Object.keys(this.relations).forEach(id => this.destroyComponent(id));\n\n this.relations = {};\n this.backwardRelations = {};\n }\n}"]}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationsProcessor.service.d.ts","sourceRoot":"","sources":["relationsProcessor.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"relationsProcessor.service.d.ts","sourceRoot":"","sources":["relationsProcessor.service.ts"],"names":[],"mappings":"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"}
|
package/version.bak
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.0-beta.
|
|
1
|
+
1.0.0-beta.20230127080258
|