Przejdź do głównej treści

Przekazywanie danych do nowych wykresów w raportach

Ready_™ Developer TeamOkoło 1 minutchartseWykresyEChartsReportRawData

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 Chartopen in new window

Generowanie wykresu z własnymi danymi

Aby dało się wygenerować wykres ale z własnymi danymi należy:

  1. Przez raport to należy utworzyć szablon flexy a w nim wywołanie skryptu php zgodnie z Użycie newObject i callFunc
  2. 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!