import { useState, useMemo } from 'react'; import { getData } from '../data'; import { Gantt, Editor, ContextMenu } from '../../src'; import { DatePicker, Field, Checkbox } from '@svar-ui/react-core'; import { Calendar } from '@svar-ui/gantt-store'; import './ProScheduleAll.css'; function ProScheduleAll({ skinSettings }) { const data = useMemo( () => getData('calendar', { splitTasks: true, unscheduledTasks: true, }), [], ); const [api, setApi] = useState(); const [tasks, setTasks] = useState(data.tasks); const calendar = useMemo(() => new Calendar(), []); const [projectStart, setProjectStart] = useState(new Date(2026, 3, 2)); const [projectEnd, setProjectEnd] = useState(new Date(2026, 4, 20)); const [criticalPath, setCriticalPath] = useState({ type: 'flexible' }); const [baselines, setBaselines] = useState(true); const [unscheduledTasks, setUnscheduledTasks] = useState(true); const [splitTasks, setSplitTasks] = useState(true); const [cellHeight, setCellHeight] = useState(44); const markers = useMemo( () => projectStart ? [ { text: 'Start', start: projectStart, }, ] : [], [projectStart], ); function onCriticalPathChange() { setCriticalPath( criticalPath?.type === 'flexible' ? null : { type: 'flexible' }, ); } function onBaselinesChange(ev) { setBaselines(ev.value); setCellHeight(ev.value ? 44 : 38); } function onSplitChange() { setTasks( api.serialize().map((t) => { //recalculate duration if (t.segments) delete t.duration; return t; }), ); } //calculate baselines after summary dates are set function init(ganttApi) { setApi(ganttApi); setTasks( ganttApi.serialize().map((t) => { return { ...t, base_start: t.start, base_end: t.end, base_duration: t.segments ? 0 : t.duration, }; }), ); } /*data.links.push({ source: 2, target: 3, type: "e2s", id: 100, }); data.links.push({ source: 30, target: 4, type: "e2s", id: 101, });*/ return (
setProjectStart(value)} /> setProjectEnd(value)} /> setUnscheduledTasks(value)} /> { setSplitTasks(ev.value); onSplitChange(); }} />
{api && }
); } export default ProScheduleAll;