import {
	Component,
	EventEmitter,
	Input,
	OnInit
} from '@angular/core';

// Интерфейсы
import { ITreeNode } from '../../interfaces';

// Узел дерева
@Component({
	selector: 'crm-tree-node',
	templateUrl: './crm-tree-node.component.html',
	styleUrls: ['./crm-tree-node.component.scss']
})
export class CrmTreeNodeComponent implements OnInit {

	// Узел дерева
	@Input() public node: ITreeNode;

	// Выбранный узел
	@Input() public selected: ITreeNode;

	// Событие выбора
	@Input() public selectEventEmitter: EventEmitter<ITreeNode>;

	// Флаг, свернут ли узел
	@Input() public isCollapsed: boolean;

	// Инициализация
	public ngOnInit(): void {
		const recursive = (node: ITreeNode): boolean => {
			if (node === this.selected) {
				return true;
			}

			for (const child of (node.childs || [])) {
				if (recursive(child)) {
					return true;
				}
			}

			return false;
		};

		this.isCollapsed = this.isCollapsed == null
			? !recursive(this.node)
			: this.isCollapsed;
	}
}
