├── .browserslistrc
├── .devcontainer
└── devcontainer.json
├── .editorconfig
├── .gitignore
├── .npmrc
├── .replit
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── README.md
├── angular.json
├── gantt.png
├── karma.conf.js
├── package-lock.json
├── package.json
├── replit.nix
├── src
├── app
│ ├── app-routing.module.ts
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.spec.ts
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── components
│ │ ├── gantt.component.css
│ │ └── gantt.component.ts
│ ├── models
│ │ ├── link.ts
│ │ └── task.ts
│ └── services
│ │ ├── in-memory-data.service.ts
│ │ ├── link.service.ts
│ │ ├── service-helper.ts
│ │ └── task.service.ts
├── assets
│ └── .gitkeep
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── index.html
├── main.ts
├── polyfills.ts
├── styles.css
└── test.ts
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── yarn.lock
/.browserslistrc:
--------------------------------------------------------------------------------
1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 |
5 | # For the full list of supported browsers by the Angular framework, please see:
6 | # https://angular.io/guide/browser-support
7 |
8 | # You can see what browsers were selected by your queries by running:
9 | # npx browserslist
10 |
11 | last 1 Chrome version
12 | last 1 Firefox version
13 | last 2 Edge major versions
14 | last 2 Safari major versions
15 | last 2 iOS major versions
16 | Firefox ESR
17 |
--------------------------------------------------------------------------------
/.devcontainer/devcontainer.json:
--------------------------------------------------------------------------------
1 | {
2 | "updateContentCommand": "yarn",
3 | "postAttachCommand": "yarn start",
4 | "customizations": {
5 | "codespaces": {
6 | "openFiles": [
7 | "src/app/components/gantt.component.ts"
8 | ]
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = tab
7 | indent_size = tab
8 | tab_size = 4
9 | insert_final_newline = true
10 | trim_trailing_whitespace = true
11 |
12 | [*.ts]
13 | quote_type = single
14 |
15 | [*.md]
16 | max_line_length = off
17 | trim_trailing_whitespace = false
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # profiling files
12 | chrome-profiler-events.json
13 | speed-measure-plugin.json
14 |
15 | # IDEs and editors
16 | /.idea
17 | .project
18 | .classpath
19 | .c9/
20 | *.launch
21 | .settings/
22 | *.sublime-workspace
23 |
24 | # IDE - VSCode
25 | .vscode/*
26 | !.vscode/settings.json
27 | !.vscode/tasks.json
28 | !.vscode/launch.json
29 | !.vscode/extensions.json
30 |
31 | # misc
32 | /.angular/cache
33 | /.sass-cache
34 | /connect.lock
35 | /coverage
36 | /libpeerconnection.log
37 | npm-debug.log
38 | yarn-error.log
39 | testem.log
40 | /typings
41 |
42 | # System Files
43 | .DS_Store
44 | Thumbs.db
45 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | @dhx:registry=https://npm.dhtmlx.com/
--------------------------------------------------------------------------------
/.replit:
--------------------------------------------------------------------------------
1 | modules = ["nodejs-20:v8-20230920-bd784b9"]
2 | hidden = [".config", "package-lock.json"]
3 | run = "npm run start"
4 |
5 | [gitHubImport]
6 | requiredFiles = [".replit", "replit.nix", "package.json", "package-lock.json"]
7 |
8 | [nix]
9 | channel = "stable-23_05"
10 |
11 | [unitTest]
12 | language = "nodejs"
13 |
14 | [deployment]
15 | run = ["sh", "-c", "npm run start"]
16 | deploymentTarget = "cloudrun"
17 | ignorePorts = false
18 |
19 | [[ports]]
20 | localPort = 4200
21 | externalPort = 80
22 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846
3 | "recommendations": ["angular.ng-template"]
4 | }
5 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
3 | "version": "0.2.0",
4 | "configurations": [
5 | {
6 | "name": "ng serve",
7 | "type": "pwa-chrome",
8 | "request": "launch",
9 | "preLaunchTask": "npm: start",
10 | "url": "http://localhost:4200/"
11 | },
12 | {
13 | "name": "ng test",
14 | "type": "chrome",
15 | "request": "launch",
16 | "preLaunchTask": "npm: test",
17 | "url": "http://localhost:9876/debug.html"
18 | }
19 | ]
20 | }
21 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules\\typescript\\lib"
3 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
3 | "version": "2.0.0",
4 | "tasks": [
5 | {
6 | "type": "npm",
7 | "script": "start",
8 | "isBackground": true,
9 | "problemMatcher": {
10 | "owner": "typescript",
11 | "pattern": "$tsc",
12 | "background": {
13 | "activeOnStart": true,
14 | "beginsPattern": {
15 | "regexp": "(.*?)"
16 | },
17 | "endsPattern": {
18 | "regexp": "bundle generation complete"
19 | }
20 | }
21 | }
22 | },
23 | {
24 | "type": "npm",
25 | "script": "test",
26 | "isBackground": true,
27 | "problemMatcher": {
28 | "owner": "typescript",
29 | "pattern": "$tsc",
30 | "background": {
31 | "activeOnStart": true,
32 | "beginsPattern": {
33 | "regexp": "(.*?)"
34 | },
35 | "endsPattern": {
36 | "regexp": "bundle generation complete"
37 | }
38 | }
39 | }
40 | }
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # DHTMLX Gantt with Angular Demo
2 |
3 | [](https://dhtmlx.com/)
4 |
5 | 
6 |
7 | ## How to start
8 |
9 | ### Online
10 |
11 | [](https://codespaces.new/DHTMLX/angular-gantt-demo/)
12 |
13 | ### On the local host
14 |
15 | ```
16 | yarn
17 | yarn start
18 | ```
19 |
20 | You can also use [GitHub Codespaces](https://docs.github.com/en/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository) to run online.
21 |
22 | ## Useful links
23 | - **[Online demo](https://replit.com/@dhtmlx/dhtmlx-gantt-with-react)**
24 | - [Full tutorial](https://dhtmlx.com/blog/dhtmlx-gantt-chart-usage-angularjs-2-framework/)
25 | - [Video Guide](https://www.youtube.com/watch?v=LNVgNVfwzPE)
26 | - [Learn about DHTMLX Gantt](https://dhtmlx.com/docs/products/dhtmlxGantt/)
27 | - [More demos about the DHTMLX Gantt functionality](https://docs.dhtmlx.com/gantt/samples)
28 | - [Technical support ](https://forum.dhtmlx.com/c/gantt)
29 | - [Online documentation](https://docs.dhtmlx.com/gantt/)
30 |
31 | ## Follow us
32 |
33 | - Star our GitHub repo :star:
34 | - Watch our tutorials on [YouTube](https://www.youtube.com/user/dhtmlx/videos) :eyes:
35 | - Read us on [Medium](https://dhtmlx.medium.com) :newspaper:
36 | - Follow us on [Twitter](https://twitter.com/dhtmlx) :feet:
37 | - Like our page on [Facebook](https://www.facebook.com/dhtmlx/) :thumbsup:
38 |
39 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "gantt-angular2": {
7 | "projectType": "application",
8 | "schematics": {
9 | "@schematics/angular:application": {
10 | "strict": true
11 | }
12 | },
13 | "root": "",
14 | "sourceRoot": "src",
15 | "prefix": "app",
16 | "architect": {
17 | "build": {
18 | "builder": "@angular-devkit/build-angular:browser",
19 | "options": {
20 | "outputPath": "dist/gantt-angular2",
21 | "index": "src/index.html",
22 | "main": "src/main.ts",
23 | "polyfills": "src/polyfills.ts",
24 | "tsConfig": "tsconfig.app.json",
25 | "assets": [
26 | "src/favicon.ico",
27 | "src/assets"
28 | ],
29 | "styles": [
30 | "src/styles.css"
31 | ],
32 | "scripts": []
33 | },
34 | "configurations": {
35 | "production": {
36 | "budgets": [
37 | {
38 | "type": "initial",
39 | "maximumWarning": "500kb",
40 | "maximumError": "1mb"
41 | },
42 | {
43 | "type": "anyComponentStyle",
44 | "maximumWarning": "2kb",
45 | "maximumError": "4kb"
46 | }
47 | ],
48 | "fileReplacements": [
49 | {
50 | "replace": "src/environments/environment.ts",
51 | "with": "src/environments/environment.prod.ts"
52 | }
53 | ],
54 | "outputHashing": "all"
55 | },
56 | "development": {
57 | "buildOptimizer": false,
58 | "optimization": false,
59 | "vendorChunk": true,
60 | "extractLicenses": false,
61 | "sourceMap": true,
62 | "namedChunks": true
63 | }
64 | },
65 | "defaultConfiguration": "production"
66 | },
67 | "serve": {
68 | "builder": "@angular-devkit/build-angular:dev-server",
69 | "options": {
70 | "allowedHosts": ["all"]
71 | },
72 | "configurations": {
73 | "production": {
74 | "browserTarget": "gantt-angular2:build:production"
75 | },
76 | "development": {
77 | "browserTarget": "gantt-angular2:build:development"
78 | }
79 | },
80 | "defaultConfiguration": "development"
81 | },
82 | "extract-i18n": {
83 | "builder": "@angular-devkit/build-angular:extract-i18n",
84 | "options": {
85 | "browserTarget": "gantt-angular2:build"
86 | }
87 | },
88 | "test": {
89 | "builder": "@angular-devkit/build-angular:karma",
90 | "options": {
91 | "main": "src/test.ts",
92 | "polyfills": "src/polyfills.ts",
93 | "tsConfig": "tsconfig.spec.json",
94 | "karmaConfig": "karma.conf.js",
95 | "assets": [
96 | "src/favicon.ico",
97 | "src/assets"
98 | ],
99 | "styles": [
100 | "src/styles.css"
101 | ],
102 | "scripts": []
103 | }
104 | }
105 | }
106 | }
107 | },
108 | "defaultProject": "gantt-angular2",
109 | "cli": {
110 | "analytics": false
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/gantt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DHTMLX/angular-gantt-demo/3e11fb8c76d27959ec2b5424bd5d2b31e5f3cb5c/gantt.png
--------------------------------------------------------------------------------
/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | jasmine: {
17 | // you can add configuration options for Jasmine here
18 | // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
19 | // for example, you can disable the random execution with `random: false`
20 | // or set a specific seed with `seed: 4321`
21 | },
22 | clearContext: false // leave Jasmine Spec Runner output visible in browser
23 | },
24 | jasmineHtmlReporter: {
25 | suppressAll: true // removes the duplicated traces
26 | },
27 | coverageReporter: {
28 | dir: require('path').join(__dirname, './coverage/gantt-angular2'),
29 | subdir: '.',
30 | reporters: [
31 | { type: 'html' },
32 | { type: 'text-summary' }
33 | ]
34 | },
35 | reporters: ['progress', 'kjhtml'],
36 | port: 9876,
37 | colors: true,
38 | logLevel: config.LOG_INFO,
39 | autoWatch: true,
40 | browsers: ['Chrome'],
41 | singleRun: false,
42 | restartOnFileChange: true
43 | });
44 | };
45 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "angular-gantt-demo",
3 | "version": "1.0.0",
4 | "scripts": {
5 | "ng": "ng",
6 | "start": "ng serve",
7 | "build": "ng build",
8 | "watch": "ng build --watch --configuration development",
9 | "test": "ng test"
10 | },
11 | "resolutions": {
12 | "jackspeak": "2.1.1"
13 | },
14 | "private": true,
15 | "dependencies": {
16 | "@angular/animations": "^16.0.0",
17 | "@angular/common": "^16.0.0",
18 | "@angular/compiler": "^16.0.0",
19 | "@angular/core": "^16.0.0",
20 | "@angular/forms": "^16.0.0",
21 | "@angular/platform-browser": "^16.0.0",
22 | "@angular/platform-browser-dynamic": "^16.0.0",
23 | "@angular/router": "^16.0.0",
24 | "@dhx/trial-gantt": "^8.0.3",
25 | "angular-in-memory-web-api": "^0.16.0",
26 | "rxjs": "~7.8.0",
27 | "start": "^5.1.0",
28 | "tslib": "^2.3.0",
29 | "zone.js": "~0.13.0"
30 | },
31 | "devDependencies": {
32 | "@angular-devkit/build-angular": "^16.0.0",
33 | "@angular/cli": "~16.0.0",
34 | "@angular/compiler-cli": "^16.0.0",
35 | "@types/jasmine": "~4.3.0",
36 | "jasmine-core": "~4.6.0",
37 | "karma": "~6.4.0",
38 | "karma-chrome-launcher": "~3.2.0",
39 | "karma-coverage": "~2.2.0",
40 | "karma-jasmine": "~5.1.0",
41 | "karma-jasmine-html-reporter": "~2.0.0",
42 | "@types/node": "^18.0.3",
43 | "typescript": "~5.0.2"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/replit.nix:
--------------------------------------------------------------------------------
1 | {pkgs}: {
2 | deps = [ ];
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { RouterModule, Routes } from '@angular/router';
3 |
4 | const routes: Routes = [];
5 |
6 | @NgModule({
7 | imports: [RouterModule.forRoot(routes)],
8 | exports: [RouterModule]
9 | })
10 | export class AppRoutingModule { }
11 |
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/DHTMLX/angular-gantt-demo/3e11fb8c76d27959ec2b5424bd5d2b31e5f3cb5c/src/app/app.component.css
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |