import { Observable } from 'rxjs/Observable'; import { TPropertyInfo } from "./TPropertyInfo"; import { TComponentRegistrationInfo } from "./ComponentMapManager"; import { ComponentShell } from "./ComponentShell"; export interface ERegisterDependecy { formName: string; componentName: string; propertyName: string; depFormName: string; depComponentName: string; depPropertyName: string; } export interface EIsDependent { changedPropertyFormKey: string; changedPropertyControlKey: string; changedPropertyName: string; queriedPropertyFormKey: string; queriedPropertyControlKey: string; queriedPropertyName: string; } export interface IComponentMapManager { propertyChangedEventEmitter: Observable; /** * İki component arasındaki bağımlılığı sağlar. */ registerDependecy(componentDependecy: ERegisterDependecy): void; /** * Componenti map içerisine ekler. */ registerComponent(regInfo: TComponentRegistrationInfo): void; /** * Componenti map içerisinden kaldırır. */ unRegisterComponent(componentShell: ComponentShell): void; getRegistedComponents(formName: string): Array | undefined; findComponentByName(formName: string, componentName: string): ComponentShell | undefined; isPropertyDependent(dependcyQuery: EIsDependent): boolean; /** * Componentler bir özelliği değiştiğinde bu fonksiyonu çağırıp diğer * componentlere bunu yayınlarlar. */ propertyChanged(formName: string, componentName: string, propertyName: string): void; reset(): void; }