Как добавить много свойств в диаграмму dhtmlx?

что мне нужно сделать, это:

  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?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
195
1

Ответы 1

Структура вашего объекта, похоже, не соответствует ожидаемой модели данных ганта https://docs.dhtmlx.com/gantt/desktop__loading.html#dataproperties

Я имею в виду не количество настраиваемых свойств, а отсутствие обязательных свойств, которых ожидает гант - я бы, Дата начала, продолжительность (или end_date), текст, родитель (если вы хотите вложенные задачи)

Поэтому, если вы не превратите свои данные во что-то, что может анализировать Гантт, я бы не ожидал, что что-нибудь будет отображаться.

Если вы не можете изменить формат, возвращаемый сервером, вам придется преобразовать данные на стороне клиента,

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.load

Другие вопросы по теме