我需要做的是:
加载json文件。
让用户拖曳甘特图并更改值。
我知道这一点:
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文件?
答案 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