<!doctype html> <html lang="en-GB"> <head> <meta charset="UTF-8" /> <meta http-equiv="content-type" content="text/html" charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="description" content="" /> <meta name="keyword" content="" /> <title></title> <script src="dist/project.dist.js"></script> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 10pt; padding: 10px; } .column { float: left; padding: 0px; } .left { width: 50%; } .right { width: 50%; } .row:after { content: ""; display: table; clear: both; } textarea { border-style: solid; border-width: 1px; border-color: #000000; min-height: calc(100vh - 600px); padding: 0px; width: 100%; } </style> </head> <body> <div class="row"> <div class="column left" id="projectPlanner1"> </div> <div class="column right"> <div id="ganttChart1"></div> </div> </div> <div class="row"> <div class="column left"> <p> <textarea id="memoBox1" readonly></textarea> </p> </div> <div class="column right"> <div style="margin-left: 10px;"> <p><b>Demo</b></p> <p> <button onclick="ClearAll()">Clear</button> <button onclick="LoadProjectRand()">Load Project</button> </p> <p><b>Project (Engine)</b></p> <p> <button onclick="Clear()">Clear</button> <button onclick="LoadProject()">Load Project</button> <button onclick="LoadProjectRand()">Load Project (with random tasks)</button> </p> <p> <button onclick="GetTasks()">Get Tasks</button> <button onclick="GetRawTasks()">Get Raw Tasks</button> </p> <p><b>Project Planner</b></p> <p> <button onclick="ClearPlanner()">Clear</button> <button onclick="LoadPlanner()">Load</button> </p> <p><b>Gantt Chart</b></p> <p> <button onclick="ClearGantt()">Clear</button> <button onclick="InvalidateGantt()">Invalidate</button> <button onclick="ToggleDebugGantt()">Toggle Debug</button> </p> </div> </div> </div> <script> Document.ready(async function() { window.project1 = new LiteRyzJS.Project({ Name: "New Project 1" }); window.projectPlanner1 = null; window.ganttChart1 = null; LoadProject(); }); function LogInfo(value) { document.getElementById("memoBox1").value += value + "\n\n"; } function Clear() { window.project1.Clear(); window.ganttChart1.Invalidate(); } function LoadProject() { if (window.project1 == null) { window.project1 = new LiteRyzJS.Project({ Name: "New Project 1" }); } window.project1.Clear(); var tasks = [ {"ID":1,"Name":"Task A","Description":"","Tag":null,"StartDate":"2024-08-11T23:00:00.000Z","StartDelay":0,"Duration":3,"PredecessorTaskID":null,"IsCollated":false,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":2,"Name":"Task B","Description":"","Tag":null,"StartDate":"2024-08-14T23:00:00.000Z","StartDelay":0,"Duration":14,"PredecessorTaskID":1,"IsCollated":false,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":5,"Name":"Task B1","Description":"","Tag":null,"StartDate":"2024-08-29T23:00:00.000Z","StartDelay":1,"Duration":28,"PredecessorTaskID":2,"IsCollated":true,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":25,"Resources":[]}, {"ID":6,"Name":"Task B11","Description":"","Tag":null,"StartDate":"2024-09-02T23:00:00.000Z","StartDelay":4,"Duration":24,"PredecessorTaskID":null,"IsCollated":false,"CollatedTaskID":5,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":7,"Name":"Task B12","Description":"","Tag":null,"StartDate":"2024-08-30T23:00:00.000Z","StartDelay":1,"Duration":26,"PredecessorTaskID":null,"IsCollated":false,"CollatedTaskID":5,"ActuWorkHours":null,"Progress":50,"Resources":[]}, {"ID":8,"Name":"Task E","Description":"","Tag":null,"StartDate":"2024-08-11T23:00:00.000Z","StartDelay":0,"Duration":15,"PredecessorTaskID":null,"IsCollated":true,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":3,"Name":"Task C","Description":"","Tag":null,"StartDate":"2024-08-26T23:00:00.000Z","StartDelay":0,"Duration":18,"PredecessorTaskID":8,"IsCollated":false,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":4,"Name":"Task D","Description":"","Tag":null,"StartDate":"2024-09-14T23:00:00.000Z","StartDelay":1,"Duration":10,"PredecessorTaskID":3,"IsCollated":false,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":9,"Name":"Task E1","Description":"","Tag":null,"StartDate":"2024-08-14T23:00:00.000Z","StartDelay":3,"Duration":12,"PredecessorTaskID":null,"IsCollated":false,"CollatedTaskID":8,"ActuWorkHours":null,"Progress":0,"Resources":[]}, {"ID":10,"Name":"Task C2","Description":"","Tag":null,"StartDate":"2024-08-26T23:00:00.000Z","StartDelay":0,"Duration":18,"PredecessorTaskID":8,"IsCollated":false,"CollatedTaskID":null,"ActuWorkHours":null,"Progress":0,"Resources":[]}, ]; tasks.forEach((e, i) => { window.project1.AddTask(e); }); window.project1.Invalidate(); LogInfo("New Project " + new Date(window.project1.StartDate).toLocaleDateString() + " - " + new Date(window.project1.FinishDate).toLocaleDateString() + " [" + window.project1.Duration + "]"); if (window.projectPlanner1 == null) { window.projectPlanner1 = new LiteRyzJS.ProjectPlanner(document.getElementById("projectPlanner1")); } const taskData = window.project1.ExportTasks(); // LogInfo(taskData); window.projectPlanner1.Load(taskData); if (window.ganttChart1 == null) { window.ganttChart1 = new LiteRyzJS.GanttChart(document.getElementById("ganttChart1"), { AutoSize: true }); } window.ganttChart1.Load(window.project1); } function LoadProjectRand() { if (window.project1 == null) { window.project1 = new LiteRyzJS.Project({ Name: "New Project 1" }); } window.project1.Clear(); var tasks = [ {"ID": 1, "Name": "task a","StartDelay": 0,"Duration": Math.randomN(0, 28),"PredecessorTaskID": null,"IsCollated": false,"CollatedTaskID": null}, {"ID": 2,"Name": "task b","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": 1,"IsCollated": false,"CollatedTaskID": null}, {"ID": 5,"Name": "task b1","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": 2,"IsCollated": true,"CollatedTaskID": null}, {"ID": 6,"Name": "task b11","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": null,"IsCollated": false,"CollatedTaskID": 5}, {"ID": 7,"Name": "task b12","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": null,"IsCollated": false,"CollatedTaskID": 5,progress: 50}, {"ID": 8,"Name": "task e","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": null,"IsCollated": true,"CollatedTaskID": null}, {"ID": 9,"Name": "task e1","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": null,"IsCollated": false,"CollatedTaskID": 8}, {"ID": 3,"Name": "task c","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": 8,"IsCollated": false,"CollatedTaskID": null}, {"ID": 4,"Name": "task d","StartDelay": Math.randomN(0, 5),"Duration": Math.randomN(0, 28),"PredecessorTaskID": 3,"IsCollated": false,"CollatedTaskID": null} ]; tasks.forEach((e, i) => { window.project1.AddTask(e); }); window.project1.Invalidate(); LogInfo("New Project " + new Date(window.project1.StartDate).toLocaleDateString() + " - " + new Date(window.project1.FinishDate).toLocaleDateString() + " [" + window.project1.Duration + "]"); if (window.projectPlanner1 == null) { window.projectPlanner1 = new LiteRyzJS.ProjectPlanner(document.getElementById("projectPlanner1")); } const taskData = window.project1.ExportTasks(); window.projectPlanner1.Load(taskData); if (window.ganttChart1 == null) { window.ganttChart1 = new LiteRyzJS.GanttChart(document.getElementById("ganttChart1"), { AutoSize: true }); } window.ganttChart1.Load(window.project1); } function GetTasks() { const taskData = window.project1.ExportTasks(); LogInfo(JSON.stringify(taskData)); console.log(taskData); } function GetRawTasks() { LogInfo(JSON.stringify(window.project1.Tasks)); console.log(window.project1.Tasks); } function InvalidateGantt() { window.ganttChart1.Invalidate(); } function ToggleDebugGantt() { window.ganttChart1.Debug = !window.ganttChart1.Debug; window.ganttChart1.Invalidate(); } function ClearGantt() { window.ganttChart1.Clear(); } function ClearPlanner() { window.projectPlanner1.Clear(); } function LoadPlanner() { const taskData = window.project1.ExportTasks(); window.projectPlanner1.Load(taskData); } function ClearAll() { window.project1.Clear(); window.ganttChart1.Clear(); window.projectPlanner1.Clear(); } </script> </body> </html>