Your search did not match any results.

Gantt - Chart Appearance

This demo illustrates the DevExtreme JavaScript Gantt component's appearance settings.

Use the properties in the demo to see how they affect the Gantt's behavior and appearance.

Backend API
@using DevExtreme.MVC.Demos.Models.SampleData @using DevExtreme.MVC.Demos.Models.Gantt <div class="options"> <div class="caption">Options</div> <div class="column"> <div class="option"> <div class="label">Scale Type:</div> <div class="value"> @(Html.DevExtreme().SelectBox() .ID("scaleType") .InputAttr("aria-label", "Scale Type") .DataSource(d => d.Array().Data(SampleData.GanttScaleTypes)) .Value("months") .OnValueChanged("ganttScaleType_valueChanged") ) </div> </div> <div class="option"> <div class="label">Title Position:</div> <div class="value"> @(Html.DevExtreme().SelectBox() .ID("titlePosition") .InputAttr("aria-label", "Title Position") .DataSource(new[] { "inside", "outside", "none" }) .Value("outside") .OnValueChanged("ganttTitlePosition_valueChanged") ) </div> </div> <div class="option"> <div class="label">Show Resources:</div> <div class="value"> @(Html.DevExtreme().CheckBox() .Value(true) .OnValueChanged("ganttShowResources_changed") ) </div> </div> <div class="option"> <div class="label">Show Dependencies:</div> <div class="value"> @(Html.DevExtreme().CheckBox() .Value(true) .OnValueChanged("ganttShowDependencies_changed") ) </div> </div> </div> <div class="column"> <div class="option"> <div class="label">Start Date Range:</div> <div class="value"> @(Html.DevExtreme().DateBox() .InputAttr("aria-label", "Start Date") .Type(DateBoxType.Date) .Value(new DateTime(2018, 12, 1)) .OnValueChanged("ganttStartDateRange_changed") ) </div> </div> <div class="option"> <div class="label">End Date Range:</div> <div class="value"> @(Html.DevExtreme().DateBox() .InputAttr("aria-label", "End Date") .Type(DateBoxType.Date) .Value(new DateTime(2019, 12, 1)) .OnValueChanged("ganttEndDateRange_changed") ) </div> </div> <div class="option"> <div class="label">Customize Task Tooltip:</div> <div class="value"> @(Html.DevExtreme().CheckBox() .Value(true) .OnValueChanged("ganttShowCustomTaskTooltip_changed") ) </div> </div> </div> </div> @(Html.DevExtreme().Gantt<Task>() .ID("gantt") .TaskTitlePosition(GanttTaskTitlePosition.Outside) .ScaleType(GanttScaleType.Months) .StartDateRange(new DateTime(2018, 12, 1)) .EndDateRange(new DateTime(2019, 12, 1)) .Tasks(t => t .DataSource(ds => ds.Array().Data(SampleData.GanttTasks).Key("ID")) .KeyExpr("ID") .TitleExpr("Title") .ParentIdExpr("ParentId") .StartExpr("Start") .EndExpr("End") .ProgressExpr("Progress") ) .Dependencies(d => d .DataSource(ds => ds.Array().Data(SampleData.GanttDependencies).Key("ID")) .KeyExpr("ID") .PredecessorIdExpr("PredecessorId") .SuccessorIdExpr("SuccessorId") .TypeExpr("Type") ) .Resources(r => r .DataSource(ds => ds.Array().Data(SampleData.GanttResources).Key("ID")) .KeyExpr("ID") .TextExpr("Text") ) .ResourceAssignments(ra => ra .DataSource(ds => ds.Array().Data(SampleData.GanttResourceAssignments).Key("ID")) .KeyExpr("ID") .TaskIdExpr("TaskId") .ResourceIdExpr("ResourceId") ) .Editing(e => e.Enabled(true)) .Columns(columns => { columns.AddFor(m => m.Title) .Caption("Subject") .Width(300); columns.AddFor(m => m.Start) .Caption("Start Date"); columns.AddFor(m => m.End) .Caption("End Date"); }) .TaskListWidth(500) .TaskTooltipContentTemplate(new JS("getTaskTooltipContentTemplate")) .TaskTimeTooltipContentTemplate(new JS("getTaskTimeTooltipContentTemplate")) .TaskProgressTooltipContentTemplate(new JS("getTaskProgressTooltipContentTemplate")) ) <script> function getTaskTooltipContentTemplate(task, container) { var timeEstimate = Math.abs(task.Start - task.End) / 36e5; var timeLeft = Math.floor((100 - task.Progress) / 100 * timeEstimate); var $customTooltip = $(document.createElement("div")) .addClass("custom-task-edit-tooltip"); $(document.createElement("div")) .addClass("custom-tooltip-title") .text(task.Title) .appendTo($customTooltip); $(document.createElement("div")) .addClass("custom-tooltip-row") .text("Estimate: " + timeEstimate + " hours") .appendTo($customTooltip); $(document.createElement("div")) .addClass("custom-tooltip-row") .text("Left: " + timeLeft + " hours") .appendTo($customTooltip); return $customTooltip; } function getTaskTimeTooltipContentTemplate(task, container) { var start = task.start.toLocaleString(); var end = task.end.toLocaleString(); var $customTooltip = $(document.createElement("div")) .addClass("custom-task-edit-tooltip"); $(document.createElement("div")) .addClass("custom-tooltip-title") .text("Start: " + start) .appendTo($customTooltip); $(document.createElement("div")) .addClass("custom-tooltip-title") .text("End: " + end) .appendTo($customTooltip); return $customTooltip; } function getTaskProgressTooltipContentTemplate(task, container) { var $customTooltip = $(document.createElement("div")) .addClass("custom-task-edit-tooltip"); $(document.createElement("div")) .addClass("custom-tooltip-title") .text(task.progress + "%") .appendTo($customTooltip); return $customTooltip; } function getGanttInstance() { return $("#gantt").dxGantt("instance"); } function ganttScaleType_valueChanged(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("scaleType", e.value); } function ganttTitlePosition_valueChanged(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("taskTitlePosition", e.value); } function ganttShowResources_changed(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("showResources", e.value); } function ganttShowDependencies_changed(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("showDependencies", e.value); } function ganttShowCustomTaskTooltip_changed(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("taskTooltipContentTemplate", e.value ? getTaskTooltipContentTemplate : undefined); ganttInstance.option("taskTimeTooltipContentTemplate", e.value ? getTaskTimeTooltipContentTemplate : undefined); ganttInstance.option("taskProgressTooltipContentTemplate", e.value ? getTaskProgressTooltipContentTemplate : undefined); } function ganttStartDateRange_changed(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("startDateRange", e.value); } function ganttEndDateRange_changed(e) { var ganttInstance = getGanttInstance(); ganttInstance.option("endDateRange", e.value); } </script>
using System.Web.Mvc; namespace DevExtreme.MVC.Demos.Controllers { public class GanttController : Controller { public ActionResult ChartAppearance() { return View(); } } }
using System; namespace DevExtreme.MVC.Demos.Models.Gantt { public class Dependency { public int ID { get; set; } public int PredecessorId { get; set; } public int SuccessorId { get; set; } public int Type { get; set; } } }
using DevExtreme.MVC.Demos.Models.Gantt; using System; using System.Collections.Generic; namespace DevExtreme.MVC.Demos.Models.SampleData { public partial class SampleData { private static readonly DateTime currentDate = DateTime.Now; private static readonly int month = currentDate.Month; private static readonly int year = currentDate.Year; public static readonly IEnumerable<Task> GanttTasks = new[] { new Task { ID = 1, ParentId = 0, Title = "Software Development", Start = DateTime.Parse("2019-02-21T05:00:00.000Z"), End = DateTime.Parse("2019-07-04T12:00:00.000Z"), Progress = 31 }, new Task { ID = 2, ParentId = 1, Title = "Scope", Start = DateTime.Parse("2019-02-21T05:00:00.000Z"), End = DateTime.Parse("2019-02-26T09:00:00.000Z"), Progress = 60 }, new Task { ID = 3, ParentId = 2, Title = "Determine project scope", Start = DateTime.Parse("2019-02-21T05:00:00.000Z"), End = DateTime.Parse("2019-02-21T09:00:00.000Z"), Progress = 100 }, new Task { ID = 4, ParentId = 2, Title = "Secure project sponsorship", Start = DateTime.Parse("2019-02-21T10:00:00.000Z"), End = DateTime.Parse("2019-02-22T09:00:00.000Z"), Progress = 100 }, new Task { ID = 5, ParentId = 2, Title = "Define preliminary resources", Start = DateTime.Parse("2019-02-22T10:00:00.000Z"), End = DateTime.Parse("2019-02-25T09:00:00.000Z"), Progress = 60 }, new Task { ID = 6, ParentId = 2, Title = "Secure core resources", Start = DateTime.Parse("2019-02-25T10:00:00.000Z"), End = DateTime.Parse("2019-02-26T09:00:00.000Z"), Progress = 0 }, new Task { ID = 7, ParentId = 2, Title = "Scope complete", Start = DateTime.Parse("2019-02-26T09:00:00.000Z"), End = DateTime.Parse("2019-02-26T09:00:00.000Z"), Progress = 0 }, new Task { ID = 8, ParentId = 1, Title = "Analysis/Software Requirements", Start = DateTime.Parse("2019-02-26T10:00:00.000Z"), End = DateTime.Parse("2019-03-18T09:00:00.000Z"), Progress = 80 }, new Task { ID = 9, ParentId = 8, Title = "Conduct needs analysis", Start = DateTime.Parse("2019-02-26T10:00:00.000Z"), End = DateTime.Parse("2019-03-05T09:00:00.000Z"), Progress = 100 }, new Task { ID = 10, ParentId = 8, Title = "Draft preliminary software specifications", Start = DateTime.Parse("2019-03-05T10:00:00.000Z"), End = DateTime.Parse("2019-03-08T09:00:00.000Z"), Progress = 100 }, new Task { ID = 11, ParentId = 8, Title = "Develop preliminary budget", Start = DateTime.Parse("2019-03-08T10:00:00.000Z"), End = DateTime.Parse("2019-03-12T09:00:00.000Z"), Progress = 100 }, new Task { ID = 12, ParentId = 8, Title = "Review software specifications/budget with team", Start = DateTime.Parse("2019-03-12T10:00:00.000Z"), End = DateTime.Parse("2019-03-12T14:00:00.000Z"), Progress = 100 }, new Task { ID = 13, ParentId = 8, Title = "Incorporate feedback on software specifications", Start = DateTime.Parse("2019-03-13T05:00:00.000Z"), End = DateTime.Parse("2019-03-13T14:00:00.000Z"), Progress = 70 }, new Task { ID = 14, ParentId = 8, Title = "Develop delivery timeline", Start = DateTime.Parse("2019-03-14T05:00:00.000Z"), End = DateTime.Parse("2019-03-14T14:00:00.000Z"), Progress = 0 }, new Task { ID = 15, ParentId = 8, Title = "Obtain approvals to proceed (concept, timeline, budget)", Start = DateTime.Parse("2019-03-15T05:00:00.000Z"), End = DateTime.Parse("2019-03-15T09:00:00.000Z"), Progress = 0 }, new Task { ID = 16, ParentId = 8, Title = "Secure required resources", Start = DateTime.Parse("2019-03-15T10:00:00.000Z"), End = DateTime.Parse("2019-03-18T09:00:00.000Z"), Progress = 0 }, new Task { ID = 17, ParentId = 8, Title = "Analysis complete", Start = DateTime.Parse("2019-03-18T09:00:00.000Z"), End = DateTime.Parse("2019-03-18T09:00:00.000Z"), Progress = 0 }, new Task { ID = 18, ParentId = 1, Title = "Design", Start = DateTime.Parse("2019-03-18T10:00:00.000Z"), End = DateTime.Parse("2019-04-05T14:00:00.000Z"), Progress = 80 }, new Task { ID = 19, ParentId = 18, Title = "Review preliminary software specifications", Start = DateTime.Parse("2019-03-18T10:00:00.000Z"), End = DateTime.Parse("2019-03-20T09:00:00.000Z"), Progress = 100 }, new Task { ID = 20, ParentId = 18, Title = "Develop functional specifications", Start = DateTime.Parse("2019-03-20T10:00:00.000Z"), End = DateTime.Parse("2019-03-27T09:00:00.000Z"), Progress = 100 }, new Task { ID = 21, ParentId = 18, Title = "Develop prototype based on functional specifications", Start = DateTime.Parse("2019-03-27T10:00:00.000Z"), End = DateTime.Parse("2019-04-02T09:00:00.000Z"), Progress = 100 }, new Task { ID = 22, ParentId = 18, Title = "Review functional specifications", Start = DateTime.Parse("2019-04-02T10:00:00.000Z"), End = DateTime.Parse("2019-04-04T09:00:00.000Z"), Progress = 30 }, new Task { ID = 23, ParentId = 18, Title = "Incorporate feedback into functional specifications", Start = DateTime.Parse("2019-04-04T10:00:00.000Z"), End = DateTime.Parse("2019-04-05T09:00:00.000Z"), Progress = 0 }, new Task { ID = 24, ParentId = 18, Title = "Obtain approval to proceed", Start = DateTime.Parse("2019-04-05T10:00:00.000Z"), End = DateTime.Parse("2019-04-05T14:00:00.000Z"), Progress = 0 }, new Task { ID = 25, ParentId = 18, Title = "Design complete", Start = DateTime.Parse("2019-04-05T14:00:00.000Z"), End = DateTime.Parse("2019-04-05T14:00:00.000Z"), Progress = 0 }, new Task { ID = 26, ParentId = 1, Title = "Development", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-05-07T12:00:00.000Z"), Progress = 42 }, new Task { ID = 27, ParentId = 26, Title = "Review functional specifications", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-08T14:00:00.000Z"), Progress = 100 }, new Task { ID = 28, ParentId = 26, Title = "Identify modular/tiered design parameters", Start = DateTime.Parse("2019-04-09T05:00:00.000Z"), End = DateTime.Parse("2019-04-09T14:00:00.000Z"), Progress = 100 }, new Task { ID = 29, ParentId = 26, Title = "Assign development staff", Start = DateTime.Parse("2019-04-10T05:00:00.000Z"), End = DateTime.Parse("2019-04-10T14:00:00.000Z"), Progress = 100 }, new Task { ID = 30, ParentId = 26, Title = "Develop code", Start = DateTime.Parse("2019-04-11T05:00:00.000Z"), End = DateTime.Parse("2019-05-01T14:00:00.000Z"), Progress = 49 }, new Task { ID = 31, ParentId = 26, Title = "Developer testing (primary debugging)", Start = DateTime.Parse("2019-04-16T12:00:00.000Z"), End = DateTime.Parse("2019-05-07T12:00:00.000Z"), Progress = 24 }, new Task { ID = 32, ParentId = 26, Title = "Development complete", Start = DateTime.Parse("2019-05-07T12:00:00.000Z"), End = DateTime.Parse("2019-05-07T12:00:00.000Z"), Progress = 0 }, new Task { ID = 33, ParentId = 1, Title = "Testing", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-06-13T12:00:00.000Z"), Progress = 23 }, new Task { ID = 34, ParentId = 33, Title = "Develop unit test plans using product specifications", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-11T14:00:00.000Z"), Progress = 100 }, new Task { ID = 35, ParentId = 33, Title = "Develop integration test plans using product specifications", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-11T14:00:00.000Z"), Progress = 100 }, new Task { ID = 36, ParentId = 33, Title = "Unit Testing", Start = DateTime.Parse("2019-05-07T12:00:00.000Z"), End = DateTime.Parse("2019-05-28T12:00:00.000Z"), Progress = 0 }, new Task { ID = 37, ParentId = 36, Title = "Review modular code", Start = DateTime.Parse("2019-05-07T12:00:00.000Z"), End = DateTime.Parse("2019-05-14T12:00:00.000Z"), Progress = 0 }, new Task { ID = 38, ParentId = 36, Title = "Test component modules to product specifications", Start = DateTime.Parse("2019-05-14T12:00:00.000Z"), End = DateTime.Parse("2019-05-16T12:00:00.000Z"), Progress = 0 }, new Task { ID = 39, ParentId = 36, Title = "Identify anomalies to product specifications", Start = DateTime.Parse("2019-05-16T12:00:00.000Z"), End = DateTime.Parse("2019-05-21T12:00:00.000Z"), Progress = 0 }, new Task { ID = 40, ParentId = 36, Title = "Modify code", Start = DateTime.Parse("2019-05-21T12:00:00.000Z"), End = DateTime.Parse("2019-05-24T12:00:00.000Z"), Progress = 0 }, new Task { ID = 41, ParentId = 36, Title = "Re-test modified code", Start = DateTime.Parse("2019-05-24T12:00:00.000Z"), End = DateTime.Parse("2019-05-28T12:00:00.000Z"), Progress = 0 }, new Task { ID = 42, ParentId = 36, Title = "Unit testing complete", Start = DateTime.Parse("2019-05-28T12:00:00.000Z"), End = DateTime.Parse("2019-05-28T12:00:00.000Z"), Progress = 0 }, new Task { ID = 43, ParentId = 33, Title = "Integration Testing", Start = DateTime.Parse("2019-05-28T12:00:00.000Z"), End = DateTime.Parse("2019-06-13T12:00:00.000Z"), Progress = 0 }, new Task { ID = 44, ParentId = 43, Title = "Test module integration", Start = DateTime.Parse("2019-05-28T12:00:00.000Z"), End = DateTime.Parse("2019-06-04T12:00:00.000Z"), Progress = 0 }, new Task { ID = 45, ParentId = 43, Title = "Identify anomalies to specifications", Start = DateTime.Parse("2019-06-04T12:00:00.000Z"), End = DateTime.Parse("2019-06-06T12:00:00.000Z"), Progress = 0 }, new Task { ID = 46, ParentId = 43, Title = "Modify code", Start = DateTime.Parse("2019-06-06T12:00:00.000Z"), End = DateTime.Parse("2019-06-11T12:00:00.000Z"), Progress = 0 }, new Task { ID = 47, ParentId = 43, Title = "Re-test modified code", Start = DateTime.Parse("2019-06-11T12:00:00.000Z"), End = DateTime.Parse("2019-06-13T12:00:00.000Z"), Progress = 0 }, new Task { ID = 48, ParentId = 43, Title = "Integration testing complete", Start = DateTime.Parse("2019-06-13T12:00:00.000Z"), End = DateTime.Parse("2019-06-13T12:00:00.000Z"), Progress = 0 }, new Task { ID = 49, ParentId = 1, Title = "Training", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-06-10T12:00:00.000Z"), Progress = 25 }, new Task { ID = 50, ParentId = 49, Title = "Develop training specifications for end users", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-10T14:00:00.000Z"), Progress = 100 }, new Task { ID = 51, ParentId = 49, Title = "Develop training specifications for helpdesk support staff", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-10T14:00:00.000Z"), Progress = 100 }, new Task { ID = 52, ParentId = 49, Title = "Identify training delivery methodology (computer based training, classroom, etc.)", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-09T14:00:00.000Z"), Progress = 100 }, new Task { ID = 53, ParentId = 49, Title = "Develop training materials", Start = DateTime.Parse("2019-05-07T12:00:00.000Z"), End = DateTime.Parse("2019-05-28T12:00:00.000Z"), Progress = 0 }, new Task { ID = 54, ParentId = 49, Title = "Conduct training usability study", Start = DateTime.Parse("2019-05-28T12:00:00.000Z"), End = DateTime.Parse("2019-06-03T12:00:00.000Z"), Progress = 0 }, new Task { ID = 55, ParentId = 49, Title = "Finalize training materials", Start = DateTime.Parse("2019-06-03T12:00:00.000Z"), End = DateTime.Parse("2019-06-06T12:00:00.000Z"), Progress = 0 }, new Task { ID = 56, ParentId = 49, Title = "Develop training delivery mechanism", Start = DateTime.Parse("2019-06-06T12:00:00.000Z"), End = DateTime.Parse("2019-06-10T12:00:00.000Z"), Progress = 0 }, new Task { ID = 57, ParentId = 49, Title = "Training materials complete", Start = DateTime.Parse("2019-06-10T12:00:00.000Z"), End = DateTime.Parse("2019-06-10T12:00:00.000Z"), Progress = 0 }, new Task { ID = 58, ParentId = 1, Title = "Documentation", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-05-20T09:00:00.000Z"), Progress = 0 }, new Task { ID = 59, ParentId = 58, Title = "Develop Help specification", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-08T14:00:00.000Z"), Progress = 80 }, new Task { ID = 60, ParentId = 58, Title = "Develop Help system", Start = DateTime.Parse("2019-04-22T10:00:00.000Z"), End = DateTime.Parse("2019-05-13T09:00:00.000Z"), Progress = 0 }, new Task { ID = 61, ParentId = 58, Title = "Review Help documentation", Start = DateTime.Parse("2019-05-13T10:00:00.000Z"), End = DateTime.Parse("2019-05-16T09:00:00.000Z"), Progress = 0 }, new Task { ID = 62, ParentId = 58, Title = "Incorporate Help documentation feedback", Start = DateTime.Parse("2019-05-16T10:00:00.000Z"), End = DateTime.Parse("2019-05-20T09:00:00.000Z"), Progress = 0 }, new Task { ID = 63, ParentId = 58, Title = "Develop user manuals specifications", Start = DateTime.Parse("2019-04-08T05:00:00.000Z"), End = DateTime.Parse("2019-04-09T14:00:00.000Z"), Progress = 65 }, new Task { ID = 64, ParentId = 58, Title = "Develop user manuals", Start = DateTime.Parse("2019-04-22T10:00:00.000Z"), End = DateTime.Parse("2019-05-13T09:00:00.000Z"), Progress = 0 }, new Task { ID = 65, ParentId = 58, Title = "Review all user documentation", Start = DateTime.Parse("2019-05-13T10:00:00.000Z"), End = DateTime.Parse("2019-05-15T09:00:00.000Z"), Progress = 0 }, new Task { ID = 66, ParentId = 58, Title = "Incorporate user documentation feedback", Start = DateTime.Parse("2019-05-15T10:00:00.000Z"), End = DateTime.Parse("2019-05-17T09:00:00.000Z"), Progress = 0 }, new Task { ID = 67, ParentId = 58, Title = "Documentation complete", Start = DateTime.Parse("2019-05-20T09:00:00.000Z"), End = DateTime.Parse("2019-05-20T09:00:00.000Z"), Progress = 0 }, new Task { ID = 68, ParentId = 1, Title = "Pilot", Start = DateTime.Parse("2019-03-18T10:00:00.000Z"), End = DateTime.Parse("2019-06-24T12:00:00.000Z"), Progress = 22 }, new Task { ID = 69, ParentId = 68, Title = "Identify test group", Start = DateTime.Parse("2019-03-18T10:00:00.000Z"), End = DateTime.Parse("2019-03-19T09:00:00.000Z"), Progress = 100 }, new Task { ID = 70, ParentId = 68, Title = "Develop software delivery mechanism", Start = DateTime.Parse("2019-03-19T10:00:00.000Z"), End = DateTime.Parse("2019-03-20T09:00:00.000Z"), Progress = 100 }, new Task { ID = 71, ParentId = 68, Title = "Install/deploy software", Start = DateTime.Parse("2019-06-13T12:00:00.000Z"), End = DateTime.Parse("2019-06-14T12:00:00.000Z"), Progress = 0 }, new Task { ID = 72, ParentId = 68, Title = "Obtain user feedback", Start = DateTime.Parse("2019-06-14T12:00:00.000Z"), End = DateTime.Parse("2019-06-21T12:00:00.000Z"), Progress = 0 }, new Task { ID = 73, ParentId = 68, Title = "Evaluate testing information", Start = DateTime.Parse("2019-06-21T12:00:00.000Z"), End = DateTime.Parse("2019-06-24T12:00:00.000Z"), Progress = 0 }, new Task { ID = 74, ParentId = 68, Title = "Pilot complete", Start = DateTime.Parse("2019-06-24T12:00:00.000Z"), End = DateTime.Parse("2019-06-24T12:00:00.000Z"), Progress = 0 }, new Task { ID = 75, ParentId = 1, Title = "Deployment", Start = DateTime.Parse("2019-06-24T12:00:00.000Z"), End = DateTime.Parse("2019-07-01T12:00:00.000Z"), Progress = 0 }, new Task { ID = 76, ParentId = 75, Title = "Determine final deployment strategy", Start = DateTime.Parse("2019-06-24T12:00:00.000Z"), End = DateTime.Parse("2019-06-25T12:00:00.000Z"), Progress = 0 }, new Task { ID = 77, ParentId = 75, Title = "Develop deployment methodology", Start = DateTime.Parse("2019-06-25T12:00:00.000Z"), End = DateTime.Parse("2019-06-26T12:00:00.000Z"), Progress = 0 }, new Task { ID = 78, ParentId = 75, Title = "Secure deployment resources", Start = DateTime.Parse("2019-06-26T12:00:00.000Z"), End = DateTime.Parse("2019-06-27T12:00:00.000Z"), Progress = 0 }, new Task { ID = 79, ParentId = 75, Title = "Train support staff", Start = DateTime.Parse("2019-06-27T12:00:00.000Z"), End = DateTime.Parse("2019-06-28T12:00:00.000Z"), Progress = 0 }, new Task { ID = 80, ParentId = 75, Title = "Deploy software", Start = DateTime.Parse("2019-06-28T12:00:00.000Z"), End = DateTime.Parse("2019-07-01T12:00:00.000Z"), Progress = 0 }, new Task { ID = 81, ParentId = 75, Title = "Deployment complete", Start = DateTime.Parse("2019-07-01T12:00:00.000Z"), End = DateTime.Parse("2019-07-01T12:00:00.000Z"), Progress = 0 }, new Task { ID = 82, ParentId = 1, Title = "Post Implementation Review", Start = DateTime.Parse("2019-07-01T12:00:00.000Z"), End = DateTime.Parse("2019-07-04T12:00:00.000Z"), Progress = 0 }, new Task { ID = 83, ParentId = 82, Title = "Document lessons learned", Start = DateTime.Parse("2019-07-01T12:00:00.000Z"), End = DateTime.Parse("2019-07-02T12:00:00.000Z"), Progress = 0 }, new Task { ID = 84, ParentId = 82, Title = "Distribute to team members", Start = DateTime.Parse("2019-07-02T12:00:00.000Z"), End = DateTime.Parse("2019-07-03T12:00:00.000Z"), Progress = 0 }, new Task { ID = 85, ParentId = 82, Title = "Create software maintenance team", Start = DateTime.Parse("2019-07-03T12:00:00.000Z"), End = DateTime.Parse("2019-07-04T12:00:00.000Z"), Progress = 0 }, new Task { ID = 86, ParentId = 82, Title = "Post implementation review complete", Start = DateTime.Parse("2019-07-04T12:00:00.000Z"), End = DateTime.Parse("2019-07-04T12:00:00.000Z"), Progress = 0 }, new Task { ID = 87, ParentId = 1, Title = "Software development template complete", Start = DateTime.Parse("2019-07-04T12:00:00.000Z"), End = DateTime.Parse("2019-07-04T12:00:00.000Z"), Progress = 0 } }; public static readonly IEnumerable<Dependency> GanttDependencies = new[] { new Dependency { ID = 1, PredecessorId = 3, SuccessorId = 4, Type = 0 }, new Dependency { ID = 2, PredecessorId = 4, SuccessorId = 5, Type = 0 }, new Dependency { ID = 3, PredecessorId = 5, SuccessorId = 6, Type = 0 }, new Dependency { ID = 4, PredecessorId = 6, SuccessorId = 7, Type = 0 }, new Dependency { ID = 5, PredecessorId = 7, SuccessorId = 9, Type = 0 }, new Dependency { ID = 6, PredecessorId = 9, SuccessorId = 10, Type = 0 }, new Dependency { ID = 7, PredecessorId = 10, SuccessorId = 11, Type = 0 }, new Dependency { ID = 8, PredecessorId = 11, SuccessorId = 12, Type = 0 }, new Dependency { ID = 9, PredecessorId = 12, SuccessorId = 13, Type = 0 }, new Dependency { ID = 10, PredecessorId = 13, SuccessorId = 14, Type = 0 }, new Dependency { ID = 11, PredecessorId = 14, SuccessorId = 15, Type = 0 }, new Dependency { ID = 12, PredecessorId = 15, SuccessorId = 16, Type = 0 }, new Dependency { ID = 13, PredecessorId = 16, SuccessorId = 17, Type = 0 }, new Dependency { ID = 14, PredecessorId = 17, SuccessorId = 19, Type = 0 }, new Dependency { ID = 15, PredecessorId = 19, SuccessorId = 20, Type = 0 }, new Dependency { ID = 16, PredecessorId = 20, SuccessorId = 21, Type = 0 }, new Dependency { ID = 17, PredecessorId = 21, SuccessorId = 22, Type = 0 }, new Dependency { ID = 18, PredecessorId = 22, SuccessorId = 23, Type = 0 }, new Dependency { ID = 19, PredecessorId = 23, SuccessorId = 24, Type = 0 }, new Dependency { ID = 20, PredecessorId = 24, SuccessorId = 25, Type = 0 }, new Dependency { ID = 21, PredecessorId = 25, SuccessorId = 27, Type = 0 }, new Dependency { ID = 22, PredecessorId = 27, SuccessorId = 28, Type = 0 }, new Dependency { ID = 23, PredecessorId = 28, SuccessorId = 29, Type = 0 }, new Dependency { ID = 24, PredecessorId = 29, SuccessorId = 30, Type = 0 }, new Dependency { ID = 25, PredecessorId = 31, SuccessorId = 32, Type = 0 }, new Dependency { ID = 26, PredecessorId = 37, SuccessorId = 38, Type = 0 }, new Dependency { ID = 27, PredecessorId = 38, SuccessorId = 39, Type = 0 }, new Dependency { ID = 28, PredecessorId = 39, SuccessorId = 40, Type = 0 }, new Dependency { ID = 29, PredecessorId = 40, SuccessorId = 41, Type = 0 }, new Dependency { ID = 30, PredecessorId = 41, SuccessorId = 42, Type = 0 }, new Dependency { ID = 31, PredecessorId = 42, SuccessorId = 44, Type = 0 }, new Dependency { ID = 32, PredecessorId = 44, SuccessorId = 45, Type = 0 }, new Dependency { ID = 33, PredecessorId = 45, SuccessorId = 46, Type = 0 }, new Dependency { ID = 34, PredecessorId = 46, SuccessorId = 47, Type = 0 }, new Dependency { ID = 35, PredecessorId = 47, SuccessorId = 48, Type = 0 }, new Dependency { ID = 36, PredecessorId = 53, SuccessorId = 54, Type = 0 }, new Dependency { ID = 37, PredecessorId = 54, SuccessorId = 55, Type = 0 }, new Dependency { ID = 38, PredecessorId = 55, SuccessorId = 56, Type = 0 }, new Dependency { ID = 39, PredecessorId = 56, SuccessorId = 57, Type = 0 }, new Dependency { ID = 40, PredecessorId = 59, SuccessorId = 60, Type = 0 }, new Dependency { ID = 41, PredecessorId = 60, SuccessorId = 61, Type = 0 }, new Dependency { ID = 42, PredecessorId = 61, SuccessorId = 62, Type = 0 }, new Dependency { ID = 43, PredecessorId = 63, SuccessorId = 64, Type = 0 }, new Dependency { ID = 44, PredecessorId = 64, SuccessorId = 65, Type = 0 }, new Dependency { ID = 45, PredecessorId = 65, SuccessorId = 66, Type = 0 }, new Dependency { ID = 46, PredecessorId = 66, SuccessorId = 67, Type = 0 }, new Dependency { ID = 47, PredecessorId = 69, SuccessorId = 70, Type = 0 }, new Dependency { ID = 48, PredecessorId = 70, SuccessorId = 71, Type = 0 }, new Dependency { ID = 49, PredecessorId = 71, SuccessorId = 72, Type = 0 }, new Dependency { ID = 50, PredecessorId = 72, SuccessorId = 73, Type = 0 }, new Dependency { ID = 51, PredecessorId = 73, SuccessorId = 74, Type = 0 }, new Dependency { ID = 52, PredecessorId = 74, SuccessorId = 76, Type = 0 }, new Dependency { ID = 53, PredecessorId = 76, SuccessorId = 77, Type = 0 }, new Dependency { ID = 54, PredecessorId = 77, SuccessorId = 78, Type = 0 }, new Dependency { ID = 55, PredecessorId = 78, SuccessorId = 79, Type = 0 }, new Dependency { ID = 56, PredecessorId = 79, SuccessorId = 80, Type = 0 }, new Dependency { ID = 57, PredecessorId = 80, SuccessorId = 81, Type = 0 }, new Dependency { ID = 58, PredecessorId = 81, SuccessorId = 83, Type = 0 }, new Dependency { ID = 59, PredecessorId = 83, SuccessorId = 84, Type = 0 }, new Dependency { ID = 60, PredecessorId = 84, SuccessorId = 85, Type = 0 }, new Dependency { ID = 61, PredecessorId = 85, SuccessorId = 86, Type = 0 }, new Dependency { ID = 62, PredecessorId = 86, SuccessorId = 87, Type = 0 } }; public static readonly IEnumerable<Resource> GanttResources = new[] { new Resource { ID = 1, Text = "Management" }, new Resource { ID = 2, Text = "Project Manager" }, new Resource { ID = 3, Text = "Analyst" }, new Resource { ID = 4, Text = "Developer" }, new Resource { ID = 5, Text = "Testers" }, new Resource { ID = 6, Text = "Trainers" }, new Resource { ID = 7, Text = "Technical Communicators" }, new Resource { ID = 8, Text = "Deployment Team" } }; public static readonly IEnumerable<ResourceAssignment> GanttResourceAssignments = new[] { new ResourceAssignment { ID = 0, TaskId = 3, ResourceId = 1 }, new ResourceAssignment { ID = 1, TaskId = 4, ResourceId = 1 }, new ResourceAssignment { ID = 2, TaskId = 5, ResourceId = 2 }, new ResourceAssignment { ID = 3, TaskId = 6, ResourceId = 2 }, new ResourceAssignment { ID = 4, TaskId = 9, ResourceId = 3 }, new ResourceAssignment { ID = 5, TaskId = 10, ResourceId = 3 }, new ResourceAssignment { ID = 6, TaskId = 11, ResourceId = 2 }, new ResourceAssignment { ID = 7, TaskId = 12, ResourceId = 2 }, new ResourceAssignment { ID = 8, TaskId = 12, ResourceId = 3 }, new ResourceAssignment { ID = 9, TaskId = 13, ResourceId = 3 }, new ResourceAssignment { ID = 10, TaskId = 14, ResourceId = 2 }, new ResourceAssignment { ID = 11, TaskId = 15, ResourceId = 1 }, new ResourceAssignment { ID = 12, TaskId = 15, ResourceId = 2 }, new ResourceAssignment { ID = 13, TaskId = 16, ResourceId = 2 }, new ResourceAssignment { ID = 14, TaskId = 19, ResourceId = 3 }, new ResourceAssignment { ID = 15, TaskId = 20, ResourceId = 3 }, new ResourceAssignment { ID = 16, TaskId = 21, ResourceId = 3 }, new ResourceAssignment { ID = 17, TaskId = 22, ResourceId = 1 }, new ResourceAssignment { ID = 18, TaskId = 23, ResourceId = 1 }, new ResourceAssignment { ID = 19, TaskId = 24, ResourceId = 1 }, new ResourceAssignment { ID = 20, TaskId = 24, ResourceId = 2 }, new ResourceAssignment { ID = 21, TaskId = 27, ResourceId = 4 }, new ResourceAssignment { ID = 22, TaskId = 28, ResourceId = 4 }, new ResourceAssignment { ID = 23, TaskId = 29, ResourceId = 4 }, new ResourceAssignment { ID = 24, TaskId = 30, ResourceId = 4 }, new ResourceAssignment { ID = 25, TaskId = 31, ResourceId = 4 }, new ResourceAssignment { ID = 26, TaskId = 34, ResourceId = 5 }, new ResourceAssignment { ID = 27, TaskId = 35, ResourceId = 5 }, new ResourceAssignment { ID = 28, TaskId = 37, ResourceId = 5 }, new ResourceAssignment { ID = 29, TaskId = 38, ResourceId = 5 }, new ResourceAssignment { ID = 30, TaskId = 39, ResourceId = 5 }, new ResourceAssignment { ID = 31, TaskId = 40, ResourceId = 5 }, new ResourceAssignment { ID = 32, TaskId = 41, ResourceId = 5 }, new ResourceAssignment { ID = 33, TaskId = 44, ResourceId = 5 }, new ResourceAssignment { ID = 34, TaskId = 45, ResourceId = 5 }, new ResourceAssignment { ID = 35, TaskId = 46, ResourceId = 5 }, new ResourceAssignment { ID = 36, TaskId = 47, ResourceId = 5 }, new ResourceAssignment { ID = 37, TaskId = 50, ResourceId = 6 }, new ResourceAssignment { ID = 38, TaskId = 51, ResourceId = 6 }, new ResourceAssignment { ID = 39, TaskId = 52, ResourceId = 6 }, new ResourceAssignment { ID = 40, TaskId = 53, ResourceId = 6 }, new ResourceAssignment { ID = 41, TaskId = 54, ResourceId = 6 }, new ResourceAssignment { ID = 42, TaskId = 55, ResourceId = 6 }, new ResourceAssignment { ID = 43, TaskId = 56, ResourceId = 6 }, new ResourceAssignment { ID = 44, TaskId = 59, ResourceId = 7 }, new ResourceAssignment { ID = 45, TaskId = 60, ResourceId = 7 }, new ResourceAssignment { ID = 46, TaskId = 61, ResourceId = 7 }, new ResourceAssignment { ID = 47, TaskId = 62, ResourceId = 7 }, new ResourceAssignment { ID = 48, TaskId = 63, ResourceId = 7 }, new ResourceAssignment { ID = 49, TaskId = 64, ResourceId = 7 }, new ResourceAssignment { ID = 50, TaskId = 65, ResourceId = 7 }, new ResourceAssignment { ID = 51, TaskId = 66, ResourceId = 7 }, new ResourceAssignment { ID = 52, TaskId = 69, ResourceId = 2 }, new ResourceAssignment { ID = 53, TaskId = 71, ResourceId = 8 }, new ResourceAssignment { ID = 54, TaskId = 72, ResourceId = 8 }, new ResourceAssignment { ID = 55, TaskId = 73, ResourceId = 8 }, new ResourceAssignment { ID = 56, TaskId = 76, ResourceId = 8 }, new ResourceAssignment { ID = 57, TaskId = 77, ResourceId = 8 }, new ResourceAssignment { ID = 58, TaskId = 78, ResourceId = 8 }, new ResourceAssignment { ID = 59, TaskId = 79, ResourceId = 8 }, new ResourceAssignment { ID = 60, TaskId = 80, ResourceId = 8 }, new ResourceAssignment { ID = 61, TaskId = 83, ResourceId = 2 }, new ResourceAssignment { ID = 62, TaskId = 84, ResourceId = 2 }, new ResourceAssignment { ID = 63, TaskId = 85, ResourceId = 2 } }; public static readonly IEnumerable<Task> GanttTasksJohnsonResidence = new[] { new Task { ID = 1, ParentId = 0, Title = "Johnson Residence Construction Project", Start = new DateTime(year, month, 1).AddMonths(-1), End = new DateTime(year, month, 1).AddMonths(-1), Progress = 0 }, new Task { ID = 2, ParentId = 1, Title = "Planning and Pre-Construction Phase", Start = new DateTime(year, month, 1).AddMonths(-1), End = new DateTime(year, month, 1).AddMonths(-1), Progress = 0 }, new Task { ID = 3, ParentId = 2, Title = "Architectural Design and Site Planning", Start = new DateTime(year, month, 1).AddMonths(-1), End = new DateTime(year, month, 15).AddMonths(-1), Progress = 0 }, new Task { ID = 4, ParentId = 2, Title = "Engineering and Final Blueprint", Start = new DateTime(year, month, 8).AddMonths(-1), End = new DateTime(year, month, 15).AddMonths(-1), Progress = 0 }, new Task { ID = 5, ParentId = 2, Title = "City Permits and Contracts", Start = new DateTime(year, month, 15).AddMonths(-1), End = new DateTime(year, month, 18).AddMonths(-1), Progress = 0 }, new Task { ID = 6, ParentId = 1, Title = "Construction Phase", Start = new DateTime(year, month, 18).AddMonths(-1), End = new DateTime(year, month, 18).AddMonths(-1), Progress = 0 }, new Task { ID = 7, ParentId = 6, Title = "Grading and Excavation", Start = new DateTime(year, month, 18).AddMonths(-1), End = new DateTime(year, month, 22).AddMonths(-1), Progress = 0 }, new Task { ID = 8, ParentId = 6, Title = "Demolition and Removal", Start = new DateTime(year, month, 19).AddMonths(-1), End = new DateTime(year, month, 23).AddMonths(-1), Progress = 0 }, new Task { ID = 9, ParentId = 6, Title = "Foundation and Concrete ", Start = new DateTime(year, month, 22).AddMonths(-1), End = new DateTime(year, month, 28).AddMonths(-1), Progress = 0 }, new Task { ID = 10, ParentId = 6, Title = "Rough Framing and Carpentery", Start = new DateTime(year, month, 25).AddMonths(-1), End = new DateTime(year, month, 5), Progress = 0 }, new Task { ID = 11, ParentId = 6, Title = "Inspection (Structure)", Start = new DateTime(year, month, 5), End = new DateTime(year, month, 5), Progress = 0 }, new Task { ID = 12, ParentId = 6, Title = "Electrical Rough-in", Start = new DateTime(year, month, 6), End = new DateTime(year, month, 19), Progress = 0 }, new Task { ID = 13, ParentId = 6, Title = "Plumbing Rough-in", Start = new DateTime(year, month, 19), End = new DateTime(year, month, 19), Progress = 0 }, new Task { ID = 14, ParentId = 6, Title = "Heating and A/C", Start = new DateTime(year, month, 19), End = new DateTime(year, month, 26), Progress = 0 }, new Task { ID = 15, ParentId = 6, Title = "Drywall", Start = new DateTime(year, month, 25), End = new DateTime(year, month, 10).AddMonths(1), Progress = 0 }, new Task { ID = 16, ParentId = 6, Title = "Painting (Exterior)", Start = new DateTime(year, month, 7).AddMonths(1), End = new DateTime(year, month, 21).AddMonths(1), Progress = 0 }, new Task { ID = 17, ParentId = 6, Title = "Interior Carpentery (Interior)", Start = new DateTime(year, month, 17).AddMonths(1), End = new DateTime(year, month, 28).AddMonths(1), Progress = 0 }, new Task { ID = 18, ParentId = 6, Title = "Flooring and Interior Paint", Start = new DateTime(year, month, 26).AddMonths(1), End = new DateTime(year, month, 9).AddMonths(2), Progress = 0 }, new Task { ID = 19, ParentId = 1, Title = "Final Phase", Start = new DateTime(year, month, 9).AddMonths(2), End = new DateTime(year, month, 9).AddMonths(2), Progress = 0 }, new Task { ID = 20, ParentId = 19, Title = "Review-Punch List", Start = new DateTime(year, month, 9).AddMonths(2), End = new DateTime(year, month, 23).AddMonths(2), Progress = 0 }, new Task { ID = 21, ParentId = 19, Title = "Final Inspection", Start = new DateTime(year, month, 24).AddMonths(2), End = new DateTime(year, month, 24).AddMonths(2), Progress = 0 }, new Task { ID = 22, ParentId = 19, Title = "Final Paperwork and Documents", Start = new DateTime(year, month, 24).AddMonths(2), End = new DateTime(year, month, 28).AddMonths(2), Progress = 0 } }; public static readonly IEnumerable<Dependency> GanttDependenciesJohnsonResidence = new[] { new Dependency { ID = 1, PredecessorId = 4, SuccessorId = 5, Type = 0}, new Dependency { ID = 2, PredecessorId = 5, SuccessorId = 7, Type = 0}, new Dependency { ID = 3, PredecessorId = 12, SuccessorId = 13, Type = 0}, new Dependency { ID = 4, PredecessorId = 13, SuccessorId = 14, Type = 0}, new Dependency { ID = 5, PredecessorId = 18, SuccessorId = 20, Type = 0}, new Dependency { ID = 6, PredecessorId = 21, SuccessorId = 22, Type = 0} }; public static readonly IEnumerable<Task> GanttTasksRequirements = new[] { new Task { ID = 1, ParentId = 0, Title = "Analysis/Software Requirements", Start = new DateTime(year, month, 1), End = new DateTime(year, month, 28), Progress = 31 }, new Task { ID = 2, ParentId = 1, Title = "Conduct needs analysis", Start = new DateTime(year, month, 1), End = new DateTime(year, month, 3), Progress = 15, }, new Task { ID = 3, ParentId = 1, Title = "Draft preliminary software specifications", Start = new DateTime(year, month, 3), End = new DateTime(year, month, 5), Progress = 30, }, new Task { ID = 4, ParentId = 1, Title = "Review software specifications/budget with team", Start = new DateTime(year, month, 4), End = new DateTime(year, month, 6), Progress = 60, }, new Task { ID = 5, ParentId = 1, Title = "Incorporate feedback on software specifications", Start = new DateTime(year, month, 6), End = new DateTime(year, month, 8), Progress = 45, }, new Task { ID = 6, ParentId = 1, Title = "Develop delivery timeline", Start = new DateTime(year, month, 8), End = new DateTime(year, month, 14), Progress = 15, }, new Task { ID = 7, ParentId = 1, Title = "Obtain approvals to proceed (concept, timeline, budget)", Start = new DateTime(year, month, 14), End = new DateTime(year, month, 20), Progress = 15, }, new Task { ID = 8, ParentId = 1, Title = "Draft preliminary software specifications", Start = new DateTime(year, month, 20), End = new DateTime(year, month, 25), Progress = 0, }, new Task { ID = 9, ParentId = 1, Title = "Secure required resources", Start = new DateTime(year, month , 25), End = new DateTime(year, month, 28), Progress = 0, }}; public static readonly IEnumerable<Dependency> GanttDependenciesRequirements = new[] { new Dependency { ID = 1, PredecessorId = 2, SuccessorId = 3, Type = 0 }, new Dependency { ID = 2, PredecessorId = 3, SuccessorId = 4, Type = 0 }, new Dependency { ID = 3, PredecessorId = 4, SuccessorId = 5, Type = 0 }, new Dependency { ID = 4, PredecessorId = 5, SuccessorId = 6, Type = 0 }, new Dependency { ID = 5, PredecessorId = 6, SuccessorId = 7, Type = 0 }, new Dependency { ID = 6, PredecessorId = 7, SuccessorId = 8, Type = 0 }, new Dependency { ID = 7, PredecessorId = 8, SuccessorId = 9, Type = 0 } }; public static readonly IEnumerable<Resource> GanttResourcesRequirements = new[] { new Resource { ID = 1, Text = "John Heart" }, new Resource { ID = 2, Text = "Paul Peyton" }, new Resource { ID = 3, Text = "Robert Reagan" }, new Resource { ID = 4, Text = "Greta Sims" }, new Resource { ID = 5, Text = "Brett Wade" }, new Resource { ID = 6, Text = "Sandra Johnson" }, new Resource { ID = 7, Text = "Kevin Carter" }, new Resource { ID = 8, Text = "Cynthia Stanwick" }, new Resource { ID = 9, Text = "Olivia Samuelson" } }; public static readonly IEnumerable<ResourceAssignment> GanttResourceAssignmentsRequirements = new[] { new ResourceAssignment { ID = 0, TaskId = 1, ResourceId = 1 }, new ResourceAssignment { ID = 1, TaskId = 2, ResourceId = 2 }, new ResourceAssignment { ID = 2, TaskId = 3, ResourceId = 3 }, new ResourceAssignment { ID = 3, TaskId = 4, ResourceId = 4 }, new ResourceAssignment { ID = 4, TaskId = 5, ResourceId = 5 }, new ResourceAssignment { ID = 5, TaskId = 6, ResourceId = 6 }, new ResourceAssignment { ID = 6, TaskId = 7, ResourceId = 7 }, new ResourceAssignment { ID = 7, TaskId = 8, ResourceId = 8 }, new ResourceAssignment { ID = 8, TaskId = 9, ResourceId = 9 } }; public static readonly IEnumerable<String> GanttScaleTypes = new[] { "auto", "minutes", "hours", "days", "weeks", "months", "quarters", "years" }; } }
using System; namespace DevExtreme.MVC.Demos.Models.Gantt { public class Resource { public int ID { get; set; } public string Text { get; set; } } }
using System; namespace DevExtreme.MVC.Demos.Models.Gantt { public class ResourceAssignment { public int ID { get; set; } public int TaskId { get; set; } public int ResourceId { get; set; } } }
using System; namespace DevExtreme.MVC.Demos.Models.Gantt { public class Task { public int ID { get; set; } public int ParentId { get; set; } public string Title { get; set; } public DateTime Start { get; set; } public DateTime End { get; set; } public int Progress { get; set; } } }
#gantt { height: 700px; } .options { margin-bottom: 20px; background-color: rgba(191, 191, 191, 0.15); } .caption { font-size: 18px; font-weight: 500; } .column { width: 40%; display: inline-block; margin: 15px 3%; text-align: left; vertical-align: top; } .option { padding: 5px 0; } .label, .value { display: inline-block; vertical-align: middle; } .label { width: 180px; } .value { width: 45%; } .custom-task-edit-tooltip { background-color: white; color: black; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); padding: 10px 12px 12px 12px; border-radius: 3px; } .custom-task-edit-tooltip::before { border-top-color: white; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } .custom-task-edit-tooltip::after { border-bottom-color: white; } .custom-tooltip-title { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 13px; font-weight: 600; padding-bottom: 6px; } .custom-tooltip-row { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; font-size: 12px; font-weight: 600; }