Przekazywanie danych do nowych wykresów w raportach
Biblioteka
Z uwagi na dość duże możliwości biblioteki wykorzystywanej do generowania eWykresów, poniżej znajduje się link do oficjalnej dokumentacji https://echarts.apache.org/handbook/en/get-started/
a co za tym idzie nieco skomplikowanej konfiguracji powstało udogodnienie mające na celu ułatwienie tego procesu.
Jako przykład niech posłuży wykres z przykładów biblioteki Basic Line Chart
Generowanie wykresu z własnymi danymi
Aby dało się wygenerować wykres ale z własnymi danymi należy:
- Przez raport to należy utworzyć szablon flexy a w nim wywołanie skryptu php zgodnie z Użycie newObject i callFunc
- Po przez custom widget to należy dodać go w customowym module zgodnie z Dodatkowe zakładki
W skrypcie php (wywołanym z szablonu flexy lub poprzez custom widget) należy dodać następujący kod
<?php
$output = 'id elementu drzewa DOM gdzie wykres na zostać umieszczony';
$rawData = '';
$renderer = new ChartRenderer\ChartRenderer($output, [], ChartRenderer\Renderer\Renderer::ECHARTS_RENDERER);
$renderer->setRawData($rawData);
$renderer->toHtml();
PAMIĘTAJ
W przypadku jeśli Twój edytor nie obsługuje sam eskejpowania znaków specjalnych należy je ręcznie poprzedzić znakiem ukośnika. Znak specjalny to np. apostrof.
Poniżej przykład kodu z eskejpowaniem znaków specjalnych
<?php
$output = 'id elementu drzewa DOM gdzie wykres na zostać umieszczony';
$rawData = '
option = {
xAxis: {
type: \'category\',
data: [\'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\', \'Sun\']
},
yAxis: {
type: \'value\'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: \'line\'
}]
};
';
$renderer = new ChartRenderer\ChartRenderer($output, [], ChartRenderer\Renderer\Renderer::ECHARTS_RENDERER);
$renderer->setRawData($rawData);
$renderer->toHtml();
Poniżej przykład kodu z użyciem nowdoc
<?php
$output = 'id elementu drzewa DOM gdzie wykres na zostać umieszczony';
$rawData = <<<'EOD'
option = {
xAxis: {
type:'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line'
}]
};
EOD;
$renderer = new ChartRenderer\ChartRenderer($output, [], ChartRenderer\Renderer\Renderer::ECHARTS_RENDERER);
$renderer->setRawData($rawData);
$renderer->toHtml();
WAŻNE
Dla składni nowdoc
PAMIĘTAJ ABY NIE ROBIĆ ŻADNEJ SPACJI (odstępu) OD ZAKOŃCZENIA EOD;
UWAGI
na chwilę obecną (potwierdzone) nie działają wykresy, które używają map. Być może istnieje jeszcze jakieś ograniczenie jednak na chwilę obecną nie stwierdzono.
pamiętaj aby kopiować kod z uwzględnieniem tego co on robi. Być może przykłady korzystają z zew. źródeł danych, ładują obrazki umieszczone na stronie https://echarts.apache.org/. Sprawdź czy kod ma sens!