На стороне PHP создается логика чертежа, затем передается через JSON в fabric.js для отображения.
Создал линию, но она отображается, только при выделении холста, нужно, чтобы изначально отображалось.
Копировал линию из JS, то же самое, явно что-то в моменте рендеринга, но не понимаю, как исправить
canvas.loadFromJSON(dieline, function() {
canvas.renderAll();
});
// Создаем линию
$crease_1 = [
'type' => 'line',
// Относительные координаты точек
'x1' => 0, // относительно left
'y1' => 0, // относительно top
'x2' => 200, // относительно left
'y2' => 0, // относительно top
'stroke' => 'black', // self::$creasingColor цвет линии
'strokeWidth' => 2, // толщина линии
];
<canvas id="canvas" width="800" height="600" data-dieline="{{ json_encode($dieline) }}"></canvas>
// Отображаем линию
import * as fabric from 'fabric';
// Загружаем данные
let dataCanvas = document.getElementById('canvas');
let dieline = dataCanvas.dataset.dieline;
dieline = JSON.parse(dieline);
const canvas = new fabric.Canvas('canvas');
canvas.loadFromJSON(dieline, function() {
canvas.renderAll();
});
// json из консоли
{
"objects": [
{
"type": "group",
"left": 100,
"top": 100,
"objects": []
},
{
"type": "line",
"x1": 0,
"y1": 0,
"x2": 200,
"y2": 0,
"stroke": "black",
"strokeWidth": 2
}
]
}