Üdv!
Adatok megjelenítéséhez használnám a chartjs.org-ot. (Statikusan működik is.)
A Chart.js kell és egy dinamikusan generált js.
Ezt hogyan érdemes?
Így próbáltam:
# mymodule.libraries.yml: ... mymodule.datajs: version: 1.x header: true js: js/Chart.js: {} ...
# src/Controller/MyController.php: ... public function data() { // inline JS $html = "<div><canvas id=\"myChart\"></canvas></div> <script> var ctx = document.getElemetnById('myChart'); ... // ide kell generálni a dinamikus kódot ... </script> "; $build['data_view'] = [ '#type' = 'markup', '#markup' = $html, ]; $build['data_view']['#attached']['library'][] = 'mymodule/mymodule.datajs'; return $build; } ...
A Chart.js betöltődik, ez jó! Viszont az inline JS megjelenik az oldalon (a JS kód). A script tag-et (meg a div-et) leveszi a rendszer. Hogyan lehet a dinamikus inline JS-t betenni? Ne 'markup'-ot használjak?
Drupal verzió:
Fórum:
Meg is válaszoltad az utolsó kérdéssel magad :)
Ne. Ne a #markup típust használd.
Render arrays
render?
Pontosan merre induljak el a render arrays témában?
Tudnál egy kicsit segíteni?
Amikor modulból megjelenítést kezdeményezel ahhoz való.
Több módszer van a modulokból a megjelenítés kezdeményezésére. Ez egy hosszú téma, sok lehetőség van. Az igények döntik el mire van szükséged, sőt egyedi apik is készíthetők.
Rákerestem a chartjs-re. Sajnos valóban nincs kész megoldás drupal 8 alá.
https://www.drupal.org/project/chartjs_api is csak fejlesztői verzió, de talán érdemes ránézned.
Egyébként az adott twig témát is át lehet szerkeszteni (az adott mezőhöz egyedi twig-et készíthetsz), talán ez a legegyszerűbb, de kevésbé elegáns megoldás. A chartjs_api felhasználásával, már kiterjedtebbek a lehetőségek.
Nemrég ajánlottak itt egy remek kis könyvet a témában:
https://www.packtpub.com/web-development/drupal-8-module-development
chartjs_api
Szépen működik a dev is.