如何在dhtmlx甘特图中添加许多属性?

时间:2018-11-19 12:15:04

标签: json dhtmlx gantt-chart

我需要做的是:

  1. 加载json文件。

  2. 让用户拖曳甘特图并更改值。

我知道这一点:

gantt.load()

可以加载json文件并可视化图表上的信息。

但是它仅在我使用test.json时有效:

{
"data":[
    {"id":"1", "text":"Project #2", "start_date":"01-04-2013", "duration":18, 
        "progress":0.4, "open": true},
    {"id":"2", "text":"Task #1", "start_date":"02-04-2013", "duration":8, 
        "progress":0.6, "parent":"1"},
    {"id":"3", "text":"Task #2", "start_date":"11-04-2013", "duration":8, 
        "progress":0.6, "parent":"1"}
],
"links":[
    {"id":"1", "source":"1", "target":"2", "type":"1"},
    {"id":"2", "source":"2", "target":"3", "type":"0"},
    {"id":"3", "source":"3", "target":"4", "type":"0"},
    {"id":"4", "source":"2", "target":"5", "type":"2"}
]}

但是我的json更复杂,它是一个对象数组。

每个对象都有很多项目(例如:OrdetNum,date,start_date ....)

下面是myjson.json:

 {
"orderFormNumber": "1608T01CY",
"orderNumber": "1608T01CY",
"tasks": "C01*01",
"OriginalTasks": "C01",
"partUnitId": 1,
"sharedCode": "NEWABST",
"processNum": 1,
"processSequence": 1,
"initStartTime": "2018-11-18T16:50:00",
"estimatedTime": 10.833333015441895,
"initEndTime": "2018-11-19T03:39:59",
"estStartTime": "2018-11-15T14:10:00",
"estEndTime": "2018-11-17T07:19:59",
"detailSchedule": null,
"detailSchedulefromCo": null,
"qcSchedule": "2018-11-22T16:30:00",
"fifoStartTime": "2018-11-15T15:44:45",
"fifoEndTime": "2018-11-17T09:34:44",
"acoStartTime": null,
"acoEndTime": null,
"realStartTime": null,
"realEndTime": null,
"processType": "M",
"machineGroup": "M",
"machineGroupSelection": "M",
"prePart": null,
"fifoSelectedMachine": "M02",
"acoSelectedMachine": null,
"designChangesNumber": "1608T01CY",
"machineingStates": 0 }

但这只是许多对象之一。

那么我该如何使用gantt.load()可视化我的json文件?

1 个答案:

答案 0 :(得分:0)

对象的结构似乎与甘特图https://docs.dhtmlx.com/gantt/desktop__loading.html#dataproperties的预期数据模型不匹配

我的意思不是自定义属性的数目,而是甘特期望的强制属性的缺失- id 开始日期持续时间(或结束日期) ,文本父级(如果您要嵌套任务)

因此,除非您将数据隐藏为甘特能够解析的内容,否则我不会期望显示任何内容。

如果您无法更改从服务器返回的格式,则必须在客户端转换数据,

1)将json / data对象加载到客户端https://docs.dhtmlx.com/gantt/desktop__server_side.html#customrequestheadersandparameters

2)将其转换为甘特可以理解的对象。 https://docs.dhtmlx.com/gantt/desktop__supported_data_formats.html#json 您的对象必须具有id / start_date / end_date / duration / parent属性,这一点很重要。您可以具有任意数量的其他属性-公共api可以使用它们

3)使用gantt.parse将结果数据集加载到gantt中。 或者,您可以在后端更改格式,然后继续使用gantt.load