// File: src/ui/index.js

import { createLayout, updateLayoutForProject } from './layout.js';
import { renderGantt } from './gantt.js';
import { renderNetwork } from './network.js';

/**
 * ایجاد و راه‌اندازی UI برای یک نمونه Cpm
 * @param {Object} cpmInstance
 */
export function createUi(cpmInstance) {
    const { rootElement, state, events } = cpmInstance;

    if (!rootElement) {
        throw new Error('CPM UI: rootElement is missing.');
    }

    // 1. ساختار پایه UI
    const uiElements = createLayout(rootElement);

    // 2. لیسنرها برای eventهای اصلی
    events.on('data:projectLoaded', () => {
        // تنظیم layout بر اساس پروژه
        updateLayoutForProject(uiElements, state);
        // رندر اولیه
        renderAll(uiElements, state);
    });

    events.on('ui:refresh', () => {
        renderAll(uiElements, state);
    });

    // در صورت نیاز: دیگر eventها (zoom, selection, ...)
}

/**
 * رندر کامل UI (گانت + شبکه + ...)
 * @param {Object} uiElements
 * @param {Object} state
 */
function renderAll(uiElements, state) {
    // فعلاً فقط گانت و شبکه را صدا می‌زنیم
    renderGantt(uiElements, state);
    renderNetwork(uiElements, state);
}
