Your search did not match any results.
Gantt

Strip Lines

This demo illustrates how to use strip lines to highlight different times in the DevExtreme HTML5 JavaScript Gantt widget. The Gantt stores strip lines in its stripLines collection. You can specify a title (title) and appearance settings (CssClass) for each strip line.

Use the start option to specify an individual strip line or combine it with the end option to specify a time interval.

Copy to CodeSandBox
Apply
Reset
<dx-gantt taskListWidth="300" height="700" taskTitlePosition="none"> <dxi-strip-line [start]="tasks[0].start" title="Start"> </dxi-strip-line> <dxi-strip-line [start]="tasks[tasks.length - 3].start" [end]="tasks[tasks.length - 1].end" title="Final Phase"> </dxi-strip-line> <dxi-strip-line [start]="currentTime" title="Current Time" cssClass="current-time"> </dxi-strip-line> <dxo-validation [autoUpdateParentTasks]="true"></dxo-validation> <dxo-tasks [dataSource]="tasks"></dxo-tasks> <dxi-column dataField="title" caption="Task" [width]="300"></dxi-column> </dx-gantt>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxGanttModule } from 'devextreme-angular'; import { Service, Task } from './app.service'; if (!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service], preserveWhitespaces: true }) export class AppComponent { tasks: Task[]; currentTime: Date; constructor(service: Service) { this.tasks = service.getTasks(); this.currentTime = new Date(); } } @NgModule({ imports: [ BrowserModule, DxGanttModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
::ng-deep .dx-gantt .dx-gantt-tm.current-time { border-left: 1px solid red; }
import { Injectable } from '@angular/core'; export class Task { id: number; parentId: number; title: string; start: Date; end: Date; progress: number; } const currentDate: Date = new Date(Date.now()); const month: number = currentDate.getMonth(); const year: number = currentDate.getFullYear(); let tasks: Task[] = [{ 'id': 1, 'parentId': 0, 'title': 'Johnson Residence Construction Project', 'start': new Date(year, month - 1, 1), 'end': new Date(year, month - 1, 1), 'progress': 0 }, { 'id': 2, 'parentId': 1, 'title': 'Planning and Pre-Construction Phase', 'start': new Date(year, month - 1, 1), 'end': new Date(year, month - 1, 1), 'progress': 0 }, { 'id': 3, 'parentId': 2, 'title': 'Architectural Design and Site Planning', 'start': new Date(year, month - 1, 1), 'end': new Date(year, month - 1, 15), 'progress': 0 }, { 'id': 4, 'parentId': 2, 'title': 'Engineering and Final Blueprint', 'start': new Date(year, month - 1, 8), 'end': new Date(year, month - 1, 15), 'progress': 0 }, { 'id': 5, 'parentId': 2, 'title': 'City Permits and Contracts', 'start': new Date(year, month - 1, 15), 'end': new Date(year, month - 1, 18), 'progress': 0 }, { 'id': 6, 'parentId': 1, 'title': 'Construction Phase', 'start': new Date(year, month - 1, 18), 'end': new Date(year, month - 1, 18), 'progress': 0 }, { 'id': 7, 'parentId': 6, 'title': 'Grading and Excavation', 'start': new Date(year, month - 1, 18), 'end': new Date(year, month - 1, 22), 'progress': 0 }, { 'id': 8, 'parentId': 6, 'title': 'Demolition and Removal', 'start': new Date(year, month - 1, 19), 'end': new Date(year, month - 1, 23), 'progress': 0 }, { 'id': 9, 'parentId': 6, 'title': 'Foundation and Concrete ', 'start': new Date(year, month - 1, 22), 'end': new Date(year, month - 1, 29), 'progress': 0 }, { 'id': 10, 'parentId': 6, 'title': 'Rough Framing and Carpentery', 'start': new Date(year, month - 1, 25), 'end': new Date(year, month, 5), 'progress': 0 }, { 'id': 11, 'parentId': 6, 'title': 'Inspection (Structure)', 'start': new Date(year, month, 5), 'end': new Date(year, month, 5), 'progress': 0 }, { 'id': 12, 'parentId': 6, 'title': 'Electrical Rough-in', 'start': new Date(year, month, 6), 'end': new Date(year, month, 19), 'progress': 0 }, { 'id': 13, 'parentId': 6, 'title': 'Plumbing Rough-in', 'start': new Date(year, month, 19), 'end': new Date(year, month, 19), 'progress': 0 }, { 'id': 14, 'parentId': 6, 'title': 'Heating and A/C', 'start': new Date(year, month, 19), 'end': new Date(year, month, 26), 'progress': 0 }, { 'id': 15, 'parentId': 6, 'title': 'Drywall', 'start': new Date(year, month, 25), 'end': new Date(year, month + 1, 10), 'progress': 0 }, { 'id': 16, 'parentId': 6, 'title': 'Painting (Exterior)', 'start': new Date(year, month + 1, 7), 'end': new Date(year, month + 1, 21), 'progress': 0 }, { 'id': 17, 'parentId': 6, 'title': 'Interior Carpentery (Interior)', 'start': new Date(year, month + 1, 17), 'end': new Date(year, month + 1, 29), 'progress': 0 }, { 'id': 18, 'parentId': 6, 'title': 'Flooring and Interior Paint', 'start': new Date(year, month + 1, 26), 'end': new Date(year, month + 2, 9), 'progress': 0 }, { 'id': 19, 'parentId': 1, 'title': 'Final Phase', 'start': new Date(year, month + 2, 9), 'end': new Date(year, month + 2, 9), 'progress': 0 }, { 'id': 20, 'parentId': 19, 'title': 'Review-Punch List', 'start': new Date(year, month + 2, 9), 'end': new Date(year, month + 2, 23), 'progress': 0 }, { 'id': 21, 'parentId': 19, 'title': 'Final Inspection', 'start': new Date(year, month + 2, 24), 'end': new Date(year, month + 2, 24), 'progress': 0 }, { 'id': 22, 'parentId': 19, 'title': 'Final Paperwork and Documents', 'start': new Date(year, month + 2, 24), 'end': new Date(year, month + 2, 30), 'progress': 0 }]; @Injectable() export class Service { getTasks(): Task[] { return tasks; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Create_a_DevExtreme_Application/ System.config({ transpiler: 'ts', typescriptOptions: { module: "system", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" }, }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@8.0.0/lib/plugin.js', 'typescript': 'npm:typescript@3.4.5/lib/typescript.js', '@angular': 'npm:@angular', 'tslib': 'npm:tslib/tslib.js', 'rxjs': 'npm:rxjs', 'devextreme': 'npm:devextreme@20.1', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'quill': 'npm:quill@1.3.7/dist/quill.js', 'devexpress-diagram': 'npm:devexpress-diagram@1.0.17', 'devexpress-gantt': 'npm:devexpress-gantt@1.0.10', 'devextreme-angular': 'npm:devextreme-angular@20.1' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme/events/utils': { main: 'index' }, 'devextreme/events': { main: 'index' }, }, packageConfigPaths: [ "npm:*/package.json", "npm:@angular/*/package.json", "npm:@angular/common/*/package.json", "npm:rxjs/operators/package.json", "npm:devextreme-angular@20.1/*/package.json", "npm:devextreme-angular@20.1/ui/*/package.json", ] });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.1.8/css/dx.common.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.1.8/css/dx.light.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/20.1.8/css/dx-gantt.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.10.2/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.21.3/dist/system.js"></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>