/* eslint-disable react/jsx-no-target-blank */ import dayjs from "dayjs"; import React from "react"; import ReactDOM from "react-dom"; import GanttElastic from "./GanttElastic"; import "./style.css"; import { GanttElasticTask } from "./types"; // just helper to get current dates function getDate(hours: number) { // const currentDate = new Date(); // const currentYear = currentDate.getFullYear(); // const currentMonth = currentDate.getMonth() + 1; // const currentDay = currentDate.getDate(); // const timeStamp = new Date( // `${currentYear}-${currentMonth}-${currentDay} 00:00:00` // ).getTime(); return ( dayjs() .startOf("day") .valueOf() + hours * 60 * 60 * 1000 ); } const tasks = [ { id: 1, label: "Make some noise", user: 'John Doe', start: getDate(-24 * 5), duration: 5 * 24 * 60 * 60 * 1000, progress: 85, type: "project" }, { id: 2, label: "With great power comes great responsibility", user: 'Peter Parker', parentId: 1, start: getDate(-24 * 4), duration: 4 * 24 * 60 * 60 * 1000, progress: 50, type: "milestone", style: { base: { fill: "#1EBC61", stroke: "#0EAC51" } /*'tree-row-bar': { fill: '#1EBC61', stroke: '#0EAC51' }, 'tree-row-bar-polygon': { stroke: '#0EAC51' }*/ } }, { id: 3, label: "Courage is being scared to death, but saddling up anyway.", user: 'John Wayne', parentId: 2, start: getDate(-24 * 3), duration: 2 * 24 * 60 * 60 * 1000, progress: 100, type: "task" }, { id: 4, label: "Put that toy AWAY!", user: 'Clark Kent', start: getDate(-24 * 2), duration: 2 * 24 * 60 * 60 * 1000, progress: 50, type: "task", dependentOn: [3] }, { id: 5, label: "One billion, gajillion, fafillion... shabadylu...mil...shabady......uh, Yen.", user: 'Austin Powers', parentId: 4, start: getDate(0), duration: 2 * 24 * 60 * 60 * 1000, progress: 10, type: "milestone", style: { base: { fill: "#0287D0", stroke: "#0077C0" } } }, { id: 6, label: "Butch Mario and the Luigi Kid", user: 'Mario Bros', parentId: 5, start: getDate(24), duration: 1 * 24 * 60 * 60 * 1000, progress: 50, type: "task", style: { base: { fill: "#8E44AD", stroke: "#7E349D" } } }, { id: 7, label: "Devon, the old man wanted me, it was his dying request", user: 'Knight Rider', parentId: 2, dependentOn: [6], start: getDate(24 * 2), duration: 4 * 60 * 60 * 1000, progress: 20, type: "task" }, { id: 8, label: "Hey, Baby! Anybody ever tell you I have beautiful eyes?", user: 'Johhny Bravo', parentId: 7, dependentOn: [7], start: getDate(24 * 3), duration: 1 * 24 * 60 * 60 * 1000, progress: 0, type: "task" }, { id: 9, label: "This better be important, woman. You are interrupting my very delicate calculations.", user: 'Dexter\'s Laboratory', parentId: 8, dependentOn: [8, 7], start: getDate(24 * 4), duration: 4 * 60 * 60 * 1000, progress: 20, type: "task", style: { base: { fill: "#8E44AD", stroke: "#7E349D" } } }, { id: 10, label: "current task", user: ( Johnattan Owens ), start: getDate(24 * 5), duration: 24 * 60 * 60 * 1000, progress: 0, type: "task" } ]; // const types = ["project", "milestone", "task"]; // const rows = 200; // for (let i = -rows; i < rows; i++) { // tasks.push({ // id: i + rows + 100, // label: "task " + (i + rows + 1), // user: "test", // start: getDate(24 * i), // duration: 24 * 60 * 60 * 1000, // progress: Math.floor(Math.random() * 100), // type: types[Math.floor(Math.random() * 3)] // }); // } const options = { title: { label: "Your project title as html (link or whatever...)", html: false }, // scope: { // //* // before: 10, // after: 20 // }, times: { timeZoom: 10, firstTime: dayjs("2020/03/10").valueOf() // lastTime: dayjs("2020/03/14").valueOf() }, row: { height: 16 }, taskList: { // display: false, columns: [ { id: 1, label: "ID", value: "id", width: 40 }, { id: 2, label: "Description", value: "label", width: 200, expander: true }, { id: 3, label: "Assigned to", value: "user", width: 130, html: true }, { id: 4, label: "Start", value: (task: GanttElasticTask) => dayjs(task.start).format("YYYY-MM-DD"), width: 78 }, { id: 5, label: "Type", value: "type", width: 68 }, { id: 6, label: "%", value: "progress", width: 35, style: { "task-list-header-label": { textAlign: "center", width: "100%" }, "task-list-item-value-container": { textAlign: "center" } } } ] } // locale: { // code: "en", // Now: "Now", // "X-Scale": "Zoom-X", // "Y-Scale": "Zoom-Y", // "Task list width": "Task list", // "Before/After": "Expand", // "Display task list": "Task list" // } /*locale:{ name: 'pl', // name String weekdays: 'Poniedziałek_Wtorek_Środa_Czwartek_Piątek_Sobota_Niedziela'.split('_'), // weekdays Array weekdaysShort: 'Pon_Wto_Śro_Czw_Pią_Sob_Nie'.split('_'), // OPTIONAL, short weekdays Array, use first three letters if not provided weekdaysMin: 'Pn_Wt_Śr_Cz_Pt_So_Ni'.split('_'), // OPTIONAL, min weekdays Array, use first two letters if not provided months: 'Styczeń_Luty_Marzec_Kwiecień_Maj_Czerwiec_Lipiec_Sierpień_Wrzesień_Październik_Listopad_Grudzień'.split('_'), // months Array monthsShort: 'Sty_Lut_Mar_Kwi_Maj_Cze_Lip_Sie_Wrz_Paź_Lis_Gru'.split('_'), // OPTIONAL, short months Array, use first three letters if not provided ordinal: n => `${n}`, // ordinal Function (number) => return number + output relativeTime: { // relative time format strings, keep %s %d as the same future: 'za %s', // e.g. in 2 hours, %s been replaced with 2hours past: '%s temu', s: 'kilka sekund', m: 'minutę', mm: '%d minut', h: 'godzinę', hh: '%d godzin', // e.g. 2 hours, %d been replaced with 2 d: 'dzień', dd: '%d dni', M: 'miesiąc', MM: '%d miesięcy', y: 'rok', yy: '%d lat' } }*/ }; const ctx = document.createElement("canvas").getContext("2d"); ReactDOM.render( , // // // // // document.getElementById("root") );