从旧版本迁移
9.1 -> 10.0
從 GPL 版本遷移到社群版 Community (MIT)
从 GPL 版迁移到 Community (MIT) 版
自 v10 起,DHTMLX Gantt 的免费版为 Community 版,在 MIT 许可证下分发。它取代了同一 dhtmlx-gantt 包之前的免费 GPL 版本。GPL v2 仍适用于之前的免费版本(v9.x 及更早版本),这些版本仍在 main GitHub repository 的专门分支中可用,但不再 actively maintained。
自 v10 起,DHTMLX Gantt 的免费版为 Community 版,在 MIT 许可证下分发。它取代了同一 dhtmlx-gantt 包之前的免费 GPL 版本。GPL v2 仍适用于之前的免费版本(v9.x 及更早版本),这些版本仍在 main GitHub repository 的专门分支中可用,但不再积极维护。
要将现有项目从 GPL 版迁移到 Community 版:
- 检查软件包版本。
dhtmlx-ganttv10 及更高版本为 Community (MIT) 版;v9.x 及更早为 GPL 版。 - 更新许可证说明,若在项目中引用了 Gantt 的许可证——免费版现在是 MIT,而不是 GPL。
- 在运行时验证许可证值 -
gantt.license对 Community 版返回"mit"(之前的免费版返回的是"gpl") - 测试导出行为。 在线导出服务对免费导出仍然会添加水印;此行为保持不变,与 GPL 许可证不再绑定(导出服务是独立产品)。
- 查看功能差异。 Community 版不是旧 GPL 版的严格超集。它 新增 项目(摘要任务)、里程碑、自定义任务类型,以及每页支持多个 Gantt 实例的能力,但 移除了 撤销/重做、标记、多选、未排程任务、新任务占位行、工作日历和 WBS 码。完整功能对比请参见 Community vs PRO Library Versions。
XSS protection in framework wrappers
自 v10.0 起,React Gantt、Vue Gantt 及 Angular Gantt 封装默认对来自用户提供的模板函数的字符串值进行清理,而不是直接将其作为原始 HTML 插入。这可防止通过模板渲染未经过净化的数据导致的 XSS 漏洞。
它适用于:
- 通过
templates属性传递的函数 config.columns[].template函数config.scales[].format函数
默认情况(htmlTemplatePolicy="basic-sanitize")返回的 HTML 采用白名单净化:保留常见的格式标签(<b>、<span>、<div> 等)、class、受限的一组内联样式、data-* 属性以及具有安全 src 的 <img/>,同时移除 <script>、内联事件处理程序和危险的 URL。返回简单标记的模板仍然可以工作;只有不安全的结构会被删除。
还原以前的 raw-HTML 行为
将 htmlTemplatePolicy 属性设为 "unsafe-html" 以按以前的方式原样渲染模板字符串,无需处理:
<ReactGantt htmlTemplatePolicy="unsafe-html" /* ... */ />
<VueGantt htmlTemplatePolicy="unsafe-html" /* ... */ />
<dhx-gantt htmlTemplatePolicy="unsafe-html" /* ... */></dhx-gantt>
针对单个模板的原始 HTML
用 allowRawHTML 包裹单个模板,以绕过该模板的净化——请自行使用导出的 escapeHTML 助手对任意用户数据进行清理:
import { allowRawHTML, escapeHTML } from "@dhx/react-gantt";
// 或 "@dhx/vue-gantt" / "@dhx/angular-gantt"
<ReactGantt
templates={{
task_text: allowRawHTML((start, end, task) => `<b>${escapeHTML(task.text)}</b>`)
}}
/>
自定义清理器或文本渲染
使用 htmlTemplatePolicy={{ mode: "sanitize", sanitize }} 来接入诸如 DOMPurify 之类的清理器,或使用 "escape" 将模板字符串渲染为纯文本。更多信息请参阅 App security。
Auto-scheduling engine update
v10.0 内置了经过重新设计的自动排程引擎。它修复了若干长期存在的错误,主要集中在松弛时间(Slack)计算以及在启用 move_projects 时对项目(汇总任务)的排程。 公共 API 与可见行为保持不变,除了先前工作不正确的情况。可能影响现有代码的变更如下所列。
新引擎默认为默认引擎。如果在过渡期间需要切换回旧的引擎,请使用如下的退出标志:
gantt.config.auto_scheduling = {
enabled: true,
_engine: "v1", // previous scheduling engine
_analysis_engine: "v1" // previous slack / critical path calculation
};
这些标志是过渡性的,将在 v10.1 中移除,因此请在此之前完成迁移。