{"id":13008,"date":"2024-10-17T17:17:02","date_gmt":"2024-10-17T14:17:02","guid":{"rendered":"https:\/\/dhtmlx.com\/blog\/?p=13008"},"modified":"2026-09-15T14:24:03","modified_gmt":"2026-09-15T11:24:03","slug":"dhtmlx-gantt-9-0","status":"publish","type":"post","link":"https:\/\/dhtmlx.com\/blog\/dhtmlx-gantt-9-0\/","title":{"rendered":"DHTMLX Gantt 9.0 with Overhauled Themes, New Dark Theme, Manually Scheduled Summaries, Built-in Baselines, and Much More"},"content":{"rendered":"<p>After months of meticulous work, we are happy to present DHTMLX Gantt 9.0. This milestone release makes the interface of our <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGantt\/\" rel=\"noopener\" target=\"_blank\">JavaScript Gantt chart<\/a> shine with new colors. Version 9.0 brings overhauled themes and significantly simplifies the look and feel customization of your Gantt charts. We\u2019ve also introduced manually scheduled summary tasks, built-in support for baselines, enhanced visualization of deadlines and constraints, sticky labels, and numerous other improvements to boost web applications based on our Gantt component.<\/p>\n<p><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGantt\/download.shtml\" rel=\"noopener\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Gantt-9.0-_1280x400-2.png\" alt=\"banner - DHTMLX Gantt major update\" width=\"2700\" height=\"840\" class=\"aligncenter size-full wp-image-13017\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Gantt-9.0-_1280x400-2.png 2700w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Gantt-9.0-_1280x400-2-300x93.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Gantt-9.0-_1280x400-2-768x239.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Gantt-9.0-_1280x400-2-1024x319.png 1024w\" sizes=\"auto, (max-width: 2700px) 100vw, 2700px\" \/><\/a><\/p>\n<p>In this post, we&#8217;ll go over the new features and improvements that make DHTMLX Gantt 9.0 a must-have tool in tech stacks used for delivering comprehensive project management apps.<\/p>\n<h5>Customizable Themes and Enhanced UI<\/h5>\n<p>A visually appealing and easily customizable UI is crucial for satisfying the needs of both web developers and end-users. In DHTMLX Gantt 9.0, we&#8217;ve made significant strides in enhancing the UI to provide a more modern and flexible experience.<\/p>\n<h6>Overhauled Themes<\/h6>\n<p>Just like in the latest major update of DHTMLX Scheduler (v7.0), Gantt 9.0 brings a complete overhaul of themes. We&#8217;ve rewritten the core styles, adopting modern design practices to ensure your Gantt charts look fresh and trendy.<\/p>\n<h6>Updated Terrace Theme<\/h6>\n<p>The default <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__skins.html#teracceskin\" rel=\"noopener\" target=\"_blank\">Terrace theme<\/a> has been revamped to align with modern UI standards. It now offers a cleaner, more vibrant appearance that enhances readability and user engagement.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Terrace-theme-pic-1.png\" alt=\"updated default theme\" width=\"1579\" height=\"508\" class=\"aligncenter size-full wp-image-13012\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Terrace-theme-pic-1.png 1579w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Terrace-theme-pic-1-300x97.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Terrace-theme-pic-1-768x247.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Terrace-theme-pic-1-1024x329.png 1024w\" sizes=\"auto, (max-width: 1579px) 100vw, 1579px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/?sample=%2706_skins\/01_default.html%27&#038;filter=%27%27\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h6>New Dark Theme<\/h6>\n<p>The demand for a Dark theme in web apps continues to be high, and there are many reasons for such popularity. Dark themes reduce eye strain and give your applications a sleek, modern look. Using v9.0, you can apply this popular theme to your Gantt projects.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Dark-theme.png\" alt=\"New Dark theme\" width=\"1578\" height=\"510\" class=\"aligncenter size-full wp-image-13013\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Dark-theme.png 1578w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Dark-theme-300x97.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Dark-theme-768x248.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/Dark-theme-1024x331.png 1024w\" sizes=\"auto, (max-width: 1578px) 100vw, 1578px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/?sample=%2706_skins\/10_dark.html%27&#038;filter=%27%27\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h5>Gantt Customization with CSS Variables<\/h5>\n<p>Another standout styling feature included in v9.0 is simplified Gantt customization using CSS variables. These custom properties provide multiple benefits, as reviewed below in more detail.<\/p>\n<h6>Easy Customization and Maintenance<\/h6>\n<p>CSS variables provide an easy and flexible way to modify the Gantt appearance. Web developers can define global style properties such as colors, fonts, and other styling elements, allowing quick updates across the entire Gantt chart with just a few changes.<\/p>\n<p>The following piece of code allows changing the color of scales, tasks, and links in the Gantt chart:<\/p>\n<div class=\"codecolorer-container css default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"css codecolorer\"><span class=\"sy0\">:<\/span><span class=\"kw5\">root<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"coMULTI\">\/* scales *\/<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-scale-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#8E8E8E<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-base-colors-border-light<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#C5C5C5<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-base-colors-border<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#DFE0E1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-scale-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#FFF<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-base-colors-icons<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#00000099<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <br \/>\n&nbsp; <span class=\"coMULTI\">\/* tasks *\/<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-task-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#3db9d3<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-task-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#FFFFFF<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-project-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#6AA84F<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-project-color<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#FFFFFF<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"coMULTI\">\/* links *\/<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-link-background<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#ffa011<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-link-background-hover<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#ffa011<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/customization-with-CSS-variables.png\" alt=\"customization with CSS variables\" width=\"1085\" height=\"207\" class=\"aligncenter size-full wp-image-13014\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/customization-with-CSS-variables.png 1085w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/customization-with-CSS-variables-300x57.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/customization-with-CSS-variables-768x147.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/customization-with-CSS-variables-1024x195.png 1024w\" sizes=\"auto, (max-width: 1085px) 100vw, 1085px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/t59618v5?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>Any change to a variable, such as adjusting a primary color, will apply uniformly across the entire UI, keeping everything in sync. This also reduces the complexity and effort needed to maintain or update the UI over time.<\/p>\n<h6>Theme Customization with CSS Variables<\/h6>\n<p>CSS variables also offer an opportunity to simplify the customization of existing Gantt themes. Thus, the UI becomes more adaptable to theme changes based on user preferences or specific project needs. <\/p>\n<p>Moreover, v9.0 makes it possible for end-users to switch between themes via app settings without the page reloading. Using this <a href=\"https:\/\/snippet.dhtmlx.com\/6v01zuxe?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">sample<\/a>, you can try this feature in action. <\/p>\n<p>The dynamic theme switching is implemented using the <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/api__gantt_setskin.html\" rel=\"noopener\" target=\"_blank\">setSkin()<\/a><\/strong> method.<\/p>\n<p>For those who require extensive Gantt modifications, the v9.0 package includes themes\u2019 source files. It enables deep customization and rebuilding of themes to meet specific requirements.<\/p>\n<p>Learn more about theme customization options in the corresponding <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__custom_skins.html\" rel=\"noopener\" target=\"_blank\">section<\/a> of our documentation.<\/p>\n<h6>Icons Customization<\/h6>\n<p>In the new Gantt version, all icons are built with web fonts or SVG elements. It means you can customize icon styles directly through CSS variables, ensuring consistency across your application.<\/p>\n<p>For instance, here is the way to change the size and color of the \u201cplus\u201d icon used for adding new tasks:<\/p>\n<div class=\"codecolorer-container css default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"css codecolorer\"><span class=\"br0\">&#91;<\/span>data-column-name<span class=\"sy0\">=<\/span><span class=\"st0\">'add'<\/span><span class=\"br0\">&#93;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"re4\">--dhx-gantt-base-colors-icons<\/span><span class=\"sy0\">:<\/span> <span class=\"re0\">#25C79D<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">font-size<\/span><span class=\"sy0\">:<\/span> <span class=\"re3\">18px<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p><a href=\"https:\/\/snippet.dhtmlx.com\/8npt6590?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h6>New Link Styling Option<\/h6>\n<p>We&#8217;ve also improved the way links are displayed between Gantt tasks. Now links can feature rounded borders, adding a smoother and more visually appealing connection between tasks. This is controlled by the new <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/api__gantt_link_radius_config.html\" rel=\"noopener\" target=\"_blank\">gantt.config.link_radius<\/a><\/strong> configuration option, where you can define the needed border radius for the links.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">link_radius<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>By increasing the radius value, the curves of the links become more pronounced. If you prefer the classic straight lines without any rounding, you can disable this feature by setting the radius to 1.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">link_radius<\/span> <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>This novelty allows you to tailor the link styles to better match the application&#8217;s design aesthetics.<\/p>\n<h5>Manually Scheduled Summary Tasks<\/h5>\n<p>Our team always looks for ways to increase flexibility and accuracy in managing projects with Gantt charts. The new Gantt version is enriched with the manual summary (project) tasks scheduling feature. It serves to outline project phases before specifying subtasks details, providing a common project timeline.<\/p>\n<p>By default, summary tasks automatically calculate their dates based on the earliest start and latest end dates of their subtasks. Now, end-users can set fixed start and end dates for summary tasks independently of their subtasks. As a result, the Gantt chart will display both the fixed duration of summary tasks and the duration derived from subtasks.<\/p>\n<p>To activate this feature for a summary task, set the <strong>auto_scheduling<\/strong> property to <em>false<\/em>. The fixed dates are stored in <strong>task.start_date<\/strong> and <strong>task.end_date<\/strong>, while the computed dates from subtasks are available in <strong>task.$auto_start_date<\/strong> and <strong>task.$auto_end_date<\/strong>.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">parse<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; data<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Project Phase 1&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;project&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; start_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-05-01 00:00:00&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; duration<span class=\"sy0\">:<\/span> <span class=\"nu0\">15<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; auto_scheduling<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ ...<\/span><br \/>\n&nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Both the fixed duration of the summary task and the actual duration calculated from its subtasks are displayed in the Gantt chart. If the subtask date range falls outside the assigned dates of the summary task, the summary task will be highlighted in red to indicate a scheduling conflict as in the example below. This visual cue helps end-users quickly identify and address discrepancies in the project timeline.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image8.gif\" alt=\"manually scheduled summary tasks\" width=\"1848\" height=\"528\" class=\"aligncenter size-full wp-image-13015\" \/><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/?sample=%2704_customization\/25_project_dates.html%27&#038;filter=%27%27\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>This feature gives end-users a handy mechanism for ensuring accurate project management even with unplanned schedule changes.<\/p>\n<h5>Built-in Support for Baselines<\/h5>\n<p>In tools like a Gantt chart, baselines give a clear idea of how the actual work progress aligns with the project implementation plan. Previously in DHTMLX Gantt, adding baselines required manual coding via the <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__baselines.html\" rel=\"noopener\" target=\"_blank\">gantt.addTaskLayer<\/a> API. From now on, developers can enjoy built-in support for baseline entities, greatly simplifying the work with this important Gantt item.<br \/>\nBaselines can be loaded directly alongside tasks, streamlining the presentation and management of Gantt data.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">parse<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; tasks<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; start_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-04-04 00:00:00&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; duration<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Task #1&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; progress<span class=\"sy0\">:<\/span> <span class=\"nu0\">0.5<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; parent<span class=\"sy0\">:<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; open<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; end_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-04-06 00:00:00&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Additional tasks...<\/span><br \/>\n&nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; links<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; baselines<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; task_id<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; start_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-04-03 00:00:00&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; duration<span class=\"sy0\">:<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; end_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-04-05 00:00:00&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Additional baselines...<\/span><br \/>\n&nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Once baselines are loaded, Gantt will automatically display them in the timeline without any additional configuration like in this <a href=\"https:\/\/snippet.dhtmlx.com\/m2p5pgua?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">sample<\/a>.<\/p>\n<p>Managing baselines is now more intuitive with the new lightbox control. End-users can easily add, edit, or delete baselines directly from the task edit form.<\/p>\n<p>This new control is specified as follows:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">lightbox<\/span>.<span class=\"me1\">sections<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;description&quot;<\/span><span class=\"sy0\">,<\/span> height<span class=\"sy0\">:<\/span> <span class=\"nu0\">38<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;text&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;textarea&quot;<\/span><span class=\"sy0\">,<\/span> focus<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;time&quot;<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;duration&quot;<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;auto&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> name<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;baselines&quot;<\/span><span class=\"sy0\">,<\/span> height<span class=\"sy0\">:<\/span> <span class=\"nu0\">100<\/span><span class=\"sy0\">,<\/span> type<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;baselines&quot;<\/span><span class=\"sy0\">,<\/span> map_to<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;baselines&quot;<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Find more details on the new baseline capabilities in the <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__inbuilt_baselines.html\" rel=\"noopener\" target=\"_blank\">documentation<\/a>.<\/p>\n<h6>Flexible Baseline Rendering Modes<\/h6>\n<p>We understand that projects differ in workflow visualization needs. The new Gantt v9.0 offers three options for displaying baselines, controlled by the new <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/api__gantt_baselines_config.html\" rel=\"noopener\" target=\"_blank\">gantt.config.baselines.render_mode<\/a><\/strong> configuration:<\/p>\n<ul>\n<li>Displaying baselines on the same row with tasks <\/li>\n<\/ul>\n<p>If it is necessary to show baselines on the same row where there are task bars, this mode is specified as follows:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">baselines<\/span>.<span class=\"me1\">render_mode<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;taskRow&quot;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/bandicam-2024-10-17-17-03-59-162.png\" alt=\"baseline rendering modes -  task row\" width=\"1858\" height=\"431\" class=\"aligncenter size-full wp-image-13018\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/bandicam-2024-10-17-17-03-59-162.png 1858w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/bandicam-2024-10-17-17-03-59-162-300x70.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/bandicam-2024-10-17-17-03-59-162-768x178.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/bandicam-2024-10-17-17-03-59-162-1024x238.png 1024w\" sizes=\"auto, (max-width: 1858px) 100vw, 1858px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/6jjbxb0q?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<ul>\n<li>Displaying baselines on separate subrows below tasks <\/li>\n<\/ul>\n<p>To render all baselines on a single subrow below each task, enable the following mode:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">baselines<\/span>.<span class=\"me1\">render_mode<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;separateRow&quot;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image9.png\" alt=\"baseline rendering - separate row mode\" width=\"1748\" height=\"480\" class=\"aligncenter size-full wp-image-13019\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image9.png 1748w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image9-300x82.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image9-768x211.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image9-1024x281.png 1024w\" sizes=\"auto, (max-width: 1748px) 100vw, 1748px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/5dkvwjsz?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<ul>\n<li>Displaying individual subrows for each baseline<\/li>\n<\/ul>\n<p>If you need a clearer view, individual subrows can be configured for showing baselines:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">baselines<\/span>.<span class=\"me1\">render_mode<\/span> <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;individualRow&quot;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image6.png\" alt=\"baseline rendering modes - individual row\" width=\"1795\" height=\"831\" class=\"aligncenter size-full wp-image-13020\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image6.png 1795w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image6-300x139.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image6-768x356.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image6-1024x474.png 1024w\" sizes=\"auto, (max-width: 1795px) 100vw, 1795px\" \/><a href=\"https:\/\/snippet.dhtmlx.com\/m2p5pgua?tag=gantt&#038;mode=wide\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h6>DataProcessor Support for Baselines<\/h6>\n<p>DHTMLX Gantt v9.0 introduces the <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__server_side.html\" rel=\"noopener\" target=\"_blank\">DataProcessor<\/a> support for baselines. From the technical perspective, when baselines are updated in the Gantt chart, changes are now automatically captured by the DataProcessor, ensuring seamless synchronization with the project&#8217;s backend.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">createDataProcessor<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">function<\/span> <span class=\"br0\">&#40;<\/span>entity<span class=\"sy0\">,<\/span> action<span class=\"sy0\">,<\/span> data<span class=\"sy0\">,<\/span> id<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; <span class=\"kw1\">switch<\/span> <span class=\"br0\">&#40;<\/span>entity<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">case<\/span> <span class=\"st0\">&quot;baseline&quot;<\/span><span class=\"sy0\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Handle baseline updates<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Handle other entities...<\/span><br \/>\n&nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<h5>Built-in Display of Deadlines and Constraints<\/h5>\n<p>Tracking deadlines and understanding task constraints are vital for timely project delivery. DHTMLX Gantt 9.0 comes with built-in visualization for deadlines and constraints, enhancing end-users\u2019 ability to manage project timelines effectively.<\/p>\n<h6>Deadlines Visualization<\/h6>\n<p>In version 9.0, our Gantt component starts to support the <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__inbuilt_baselines.html#deadlinesandconstraints\" rel=\"noopener\" target=\"_blank\">task.deadline<\/a><\/strong> field. When specified, it displays a visual indicator on the chart, thereby simplifying the tracking of task deadlines.<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">parse<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; data<span class=\"sy0\">:<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; id<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; text<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;Task with Deadline&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; start_date<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;2025-04-04&quot;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; duration<span class=\"sy0\">:<\/span> <span class=\"nu0\">5<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; &nbsp; deadline<span class=\"sy0\">:<\/span> <span class=\"kw1\">new<\/span> <span class=\"kw4\">Date<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2025<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">3<\/span><span class=\"sy0\">,<\/span> <span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"co1\">\/\/ April 10, 2025<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Additional tasks...<\/span><br \/>\n&nbsp; <span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image7.png\" alt=\"deadline visualization\" width=\"1843\" height=\"654\" class=\"aligncenter size-full wp-image-13021\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image7.png 1843w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image7-300x106.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image7-768x273.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image7-1024x363.png 1024w\" sizes=\"auto, (max-width: 1843px) 100vw, 1843px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/?sample=%2704_customization\/14_deadline.html%27&#038;filter=%27%27\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<h6>Constraints Visualization in Auto Scheduling Mode<\/h6>\n<p>Starting from v9.0, when the constraint mode of auto-scheduling is enabled, Gantt will display constraint elements directly in the timeline. This feature is aimed at identifying tasks with specific scheduling constraints, ensuring that dependencies and limitations are accounted for during the project planning.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image11.png\" alt=\"v9.0 - constraints visualization\" width=\"1843\" height=\"727\" class=\"aligncenter size-full wp-image-13022\" srcset=\"https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image11.png 1843w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image11-300x118.png 300w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image11-768x303.png 768w, https:\/\/dhtmlx.com\/blog\/wp-content\/uploads\/2024\/10\/image11-1024x404.png 1024w\" sizes=\"auto, (max-width: 1843px) 100vw, 1843px\" \/><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/?sample=%2702_extensions\/19_constraints_scheduling.html%27&#038;filter=%27%27\" rel=\"noopener\" target=\"_blank\">Check the sample ><\/a><\/p>\n<p>Programmatically, this feature is enabled in the following way:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">auto_scheduling<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>It can also be implemented using the extended version of the <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/api__gantt_auto_scheduling_config.html\" rel=\"noopener\" target=\"_blank\">auto_scheduling<\/a><\/strong> config:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">auto_scheduling<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; enabled<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; show_constraints<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>With this addition, end-users can quickly confirm that specified task constraints work properly in the auto-scheduling mode.<\/p>\n<h5>Sticky Labels for Time Scales<\/h5>\n<p>When managing complex workflows within the Gantt timeline, it can be very useful to keep time scales visible. Otherwise, users may get confused and misinterpret deadlines or timeframes when time scale labels move off-screen.<\/p>\n<p>To reduce the risk of such issues, DHTMLX Gantt 9.0 offers sticky labels for time scales, ensuring that labels follow the viewport and stay visible until they naturally scroll off. Sticky labels also ensure better readability and navigation through the Gantt chart.<\/p>\n<p>By default, sticky labels are enabled for all scales where the width of the cell is significantly larger than the width of the label. It is possible to customize this behavior using the <strong><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/desktop__configuring_time_scale.html#stickylabels\" rel=\"noopener\" target=\"_blank\">sticky<\/a><\/strong> property of the <strong>scale<\/strong> object:<\/p>\n<ul>\n<li>Set <strong>sticky: true<\/strong> to always enable sticky labels, regardless of the cell width.<\/li>\n<li>Set <strong>sticky: false<\/strong> to disable this feature for a specific scale.<\/li>\n<\/ul>\n<p>Here\u2019s an example of how sticky labels for time scales can be configured:<\/p>\n<div class=\"codecolorer-container javascript default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"javascript codecolorer\">gantt.<span class=\"me1\">config<\/span>.<span class=\"me1\">scales<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> unit<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;year&quot;<\/span><span class=\"sy0\">,<\/span> step<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> format<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;%Y&quot;<\/span><span class=\"sy0\">,<\/span> sticky<span class=\"sy0\">:<\/span> <span class=\"kw2\">true<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> unit<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;month&quot;<\/span><span class=\"sy0\">,<\/span> step<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> format<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;%F&quot;<\/span><span class=\"sy0\">,<\/span> sticky<span class=\"sy0\">:<\/span> <span class=\"kw2\">false<\/span> <span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"br0\">&#123;<\/span> unit<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;day&quot;<\/span><span class=\"sy0\">,<\/span> step<span class=\"sy0\">:<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span> format<span class=\"sy0\">:<\/span> <span class=\"st0\">&quot;%j&quot;<\/span> <span class=\"br0\">&#125;<\/span> &nbsp;<span class=\"co1\">\/\/ default sticky behavior<\/span><br \/>\n<span class=\"br0\">&#93;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\ngantt.<span class=\"me1\">init<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;gantt_here&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/samples\/08_api\/10_performance_tweaks.html\">Check the sample ><\/a><\/p>\n<p>Overall, sticky labels contribute to better workflow management and task organization in Gantt charts.<\/p>\n<h5>Migration Notes<\/h5>\n<p>Taking into consideration a wide range of theming and styling changes delivered in this major release, you may need to modify your existing code to seamlessly migrate to v9.0. Changes in themes could potentially conflict with any custom styles or overrides you&#8217;ve applied using previous versions of DHTMLX Gantt. For more information on the migration from older Gantt versions, check out this <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/migrating.html#8090\" rel=\"noopener\" target=\"_blank\">section<\/a>.<\/p>\n<p>If you encounter any compatibility issues, please don&#8217;t hesitate to <a href=\"https:\/\/dhtmlx.com\/docs\/contact.shtml\" rel=\"noopener\" target=\"_blank\">contact our tech support team<\/a> for assistance.<\/p>\n<p>That\u2019s it about the new features shipped in DHTMLX Gantt 9.0. You can look through all the novelties one more time by visiting the <a href=\"https:\/\/docs.dhtmlx.com\/gantt\/whatsnew.html#x8288x90x8289x\" rel=\"noopener\" target=\"_blank\">What&#8217;s New<\/a> page.<br \/>\nWe invite you to download a <a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGantt\/download.shtml\" rel=\"noopener\" target=\"_blank\">free 30-day trial version<\/a> of DHTMLX Gantt to try all the new capabilities in your scenarios. Current customers can access the latest version through their <a href=\"https:\/\/dhtmlx.com\/clients\/\" rel=\"noopener\" target=\"_blank\">Client&#8217;s Area<\/a>.<\/p>\n<p>We hope that this update will help you build more visually appealing and user-friendly Gantt charts and elevate your project management apps. We look forward to your feedback on this release. Please share your thoughts and experiences in the comments below.<\/p>\n<h5>Related Materials<\/h5>\n<ul>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/whatsnew.html#x8297x90x8298x\" rel=\"noopener\" target=\"_blank\">What\u2019s New in DHTMLX Gantt 9.0<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Gantt documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.dhtmlx.com\/gantt\/demos\/\" rel=\"noopener\" target=\"_blank\">DHTMLX Gantt samples<\/a><\/li>\n<li><a href=\"https:\/\/dhtmlx.com\/docs\/products\/dhtmlxGantt\/download.shtml\" rel=\"noopener\" target=\"_blank\">DHTMLX Gantt free trial version<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>After months of meticulous work, we are happy to present DHTMLX Gantt 9.0. This milestone release makes the interface of our JavaScript Gantt chart shine with new colors. Version &#8230;<\/p>\n","protected":false},"author":101014,"featured_media":13011,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70],"tags":[33,20],"class_list":["post-13008","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-releases","tag-all-posts","tag-gantt"],"_links":{"self":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/users\/101014"}],"replies":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/comments?post=13008"}],"version-history":[{"count":9,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13008\/revisions"}],"predecessor-version":[{"id":15892,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/posts\/13008\/revisions\/15892"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media\/13011"}],"wp:attachment":[{"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/media?parent=13008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/categories?post=13008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhtmlx.com\/blog\/wp-json\/wp\/v2\/tags?post=13008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}