В PHP делается выборка из базы и строится массив с данными, затем кодируется в JSON и отправляется JS скрипту где затем парсится JSON и строится диаграмма Гантта, данная диаграмма работает на библиотеке moment.js.
Объект выглядит так:
tasks: [{
"id": 1,
"resourceId": 1,
"label": "Задача 1",
"from": moment("7:00", "HH:mm"),
"to": moment("9:00", "HH:mm"),
"classes": "orange"
}, {
"id": 2,
"resourceId": 1,
"label": "Задача 2",
"from": moment("9:30", "HH:mm"),
"to": moment("11:00", "HH:mm"),
"classes": "orange"
}]
Сейчас, я делаю так, собираю массив на PHP:
$gantt_tasks[] = [
'id' => 1,
'label' => 'Задача 1',
'resourceId' => 1,
'from' => time(),//unix timestamp - это для примера
'to' => time(),
'classes' => 'orange',
];
...
$gantt_output = json_encode($gantt_tasks); // это отправляется в JS
Далее в JS:
var tasks = JSON.parse(gantt_output);
// И вот здесь перебирая каждый элемент и подставляю функцию moment
tasks.forEach( function (item) {
item.from = moment.unix(item.from).format("DD:MM:YYYY HH:mm");
item.from = moment(item.from, 'DD:MM:YYYY HH:mm');
item.to = moment.unix(item.to).format("DD:MM:YYYY HH:mm");
item.to = moment(item.to, 'DD:MM:YYYY HH:mm');
});
Могу ли я сразу из PHP передать функцию чтобы JS ее выполнил? А не отображал как строку?