格式化器扩展
信息
此功能仅在 PRO 版本中可用。
gantt.ext.formatters 扩展提供了两种格式化数值的方式:
您也可以通过现有格式化器创建自定义格式化器。
持续时间格式化器
gantt.ext.formatters.durationFormatter(config) 方法用于创建新的 DurationFormatter 实例。
###配置参数
- durationFormatter (config): DurationFormatter - 创建一个持续时间格式化器
- config? - (object) - 可选的配置对象,包含以下选项:
- enter? - (string) - 设置 parse 方法在输入缺少单位时的默认格式。默认值为 "day"。
- store? - (string) - 定义在 gantt 中存储持续时间值的格式。这会影响 parse 方法的输出。默认值为 "hour"。
- format? - (string | Array <string>) - 设置输出格式。支持的值包括 "auto"、"minute"、"hour"、"day"、"week"、"month"、"year" 或这些值的数组。"auto" 表示格式化器会根据数值大小自动选择最佳单位(较大的值使用天/月/年,较小的值使用分钟/小时)。
- short? - (boolean) - 启用时间单位的简写标签。默认值为 false。
- minutesPerHour? - (number) - 控制分钟与小时之间的换算。默认值为 60。
- hoursPerDay? - (number) - 控制小时与天之间的换算。默认值为 8。
- hoursPerWeek? - (number) - 控制小时与周之间的换算。默认值为 40。
- daysPerMonth? - (number) - 控制天与月之间的换算。默认值为 30。
- daysPerYear? - (number) - 控制天与年之间的换算。默认值为 365。
- labels? - (object) - 设置不同时间单位的文本标签,用于解析和格式化:
- minute? - (object) - 分钟的标签
- full? - (string) - 分钟的全称标签
- plural? - (string) - 分钟的复数标签
- short? - (string) - 分钟的简写标签
- hour? - (object) - 小时的标签
- full? - (string) - 小时的全称标签
- plural? - (string) - 小时的复数标签
- short? - (string) - 小时的简写标签
- day? - (object) - 天的标签
- full? - (string) - 天的全称标签
- plural? - (string) - 天的复数标签
- short? - (string) - 天的简写标签
- week? - (object) - 周的标签
- full? - (string) - 周的全称标签
- plural? - (string) - 周的复数标签
- short? - (string) - 周的简写标签
- month? - (object) - 月的标签
- full? - (string) - 月的全称标签
- plural? - (string) - 月的复数标签
- short? - (string) - 月的简写标签
- year? - (object) - 年的标签
- full? - (string) - 年的全称标签
- plural? - (string) - 年的复数标签
- short? - (string) - 年的简写标签
- minute? - (object) - 分钟的标签
- config? - (object) - 可选的配置对象,包含以下选项:
示例:
使用默认设置创建一个持续时间格式化器:
const formatter = gantt.ext.formatters.durationFormatter();
// 通过工厂方法创建格式化器实例
- enter:
formatter.parse("1"); // 如果 enter:"day"(默认),解析为 1 天
formatter.parse("1"); // 如果 enter:"hour",解析为 1 小时
- store:
formatter.parse("1 day"); // 如果 store:"hour",存储为 8
formatter.parse("1 day"); // 如果 store:"minute",存储为 480
- format
gantt.ext.formatters.durationFormatter({
format: ["hour", "minute"], /*!*/
store:"minute"
}).format(260); // 输出 "4 hours 20 minutes"
gantt.ext.formatters.durationFormatter({
format: "hour", /*!*/
store:"minute"
}).format(260);// 输出 "4.33 hours"
- short
gantt.ext.formatters.durationFormatter({
format: ["week", "hour", "minute"],
store:"minute",
short: false /*!*/
}).format(10021); //"4 weeks 7 hours 1 minute"
gantt.ext.formatters.durationFormatter({
format: ["week", "hour", "minute"],
store:"minute",
short: true /*!*/
}).format(10021); //"4wk 7h 1min"
完整配置示例:
const formatter = gantt.ext.formatters.durationFormatter({
// 默认值
enter: "day",
store: "hour",
format: "auto",
short: false,
minutesPerHour: 60,
hoursPerDay: 8,
hoursPerWeek: 40,
daysPerMonth: 30,
daysPerYear: 365,
labels: {
minute: {
full: "minute",
plural: "minutes",
short: "min"
},
hour: {
full: "hour",
plural: "hours",
short: "h"
},
day: {
full: "day",
plural: "days",
short: "d"
},
week: {
full: "week",
plural: "weeks",
short: "wk"
},
month: {
full: "month",
plural: "months",
short: "mon"
},
year: {
full: "year",
plural: "years",
short: "y"
}
}
});
###API
DurationFormatter 实例提供以下方法:
- canParse (value): boolean - 检查字符串是否可以被解析为持续时间值;如果可以则返回 true,否则返回 false
- value - (string) - 要检查的字符串
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.canParse("1 day"));
// true
console.log(formatter.canParse("abc"));
// false
- format (value): string - 将持续时间值转换为格式化字符串
- value - (number) - 要转换的持续时间值
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.format(24));
// 输出: 3 days
- parse (value): number - 将字符串解析为持续时间值,若无法解析则返回 'null'
- value - (string) - 要解析的字符串
const formatter = gantt.ext.formatters.durationFormatter();
console.log(formatter.parse("1 day"));
// 输出: 8
关于 durationFormatter 的更多细节可参见 작업 시간 계산 文章。
链接格式化器
gantt.ext.formatters.linkFormatter(config) 方法用于创建新的 LinkFormatter 实例。它与持续时间格式化器共享部分方法和配置。
###配置参数
- linkFormatter (config): LinkFormatter - 创建一个链接格式化器
- config? - (object) - 可选的配置对象,包含以下选项:
- durationFormatter? - (DurationFormatter) - 由 gantt.ext.formatters.durationFormatter() 创建的实例,影响滞后/提前值的解析与格式化方式。
- labels? - (object) - 不同链接类型的标签:
- finish_to_start? - (string) - 完成到开始类型链接的标签
- start_to_start? - (string) - 开始到开始类型链接的标签
- finish_to_finish? - (string) - 完成到完成类型链接的标签
- start_to_finish? - (string) - 开始到完成类型链接的标签
- config? - (object) - 可选的配置对象,包含以下选项:
示例:
使用默认设置创建一个链接格式化器:
const formatter = gantt.ext.formatters.linkFormatter();
// 通过工厂方法创建格式化器实例
- short:
gantt.ext.formatters.linkFormatter()
.format({id:1, type:"1", source: 1, target: 2, lag: 5});
// 输出: "1SS+5 days"
var durationFormatter = gantt.ext.formatters.durationFormatter({
short: true
});
gantt.ext.formatters.linkFormatter({durationFormatter: durationFormatter})
.format({id:1, type:"2", source: 1, target: 2, lag: -1});
// 输出: "1FF-1d"
- labels:
const formatter = gantt.ext.formatters.linkFormatter({
// 默认值
durationFormatter: gantt.ext.formatters.durationFormatter(),
labels: {
finish_to_start: "FS",
start_to_start: "SS",
finish_to_finish: "FF",
start_to_finish: "SF"
}
});
###API
LinkFormatter 实例提供以下方法:
- canParse (value): boolean - 检查字符串是否可以被解析为链接对象;如果可以则返回 true