Changeset 124829 in spip-zone


Ignore:
Timestamp:
May 27, 2020, 8:16:20 AM (20 months ago)
Author:
Matthieu Marcillaud
Message:

On encaptule le script du modèle Chart, afin de charger automatiquement le script s’il n’est pas déjà chargé.
Il peut être chargé globalement sur le public ou le privé (via configuration du plugin)
ou spécifiquement maintenant, lors de l’appel au modèle Chart. Si le modèle est appelé plusieurs fois, le script n’est chargé qu’une seule fois.
Code en partie récupéré de Gis. Merci :)

Location:
_plugins_/chartjs/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/chartjs/trunk

    • Property subgit:lock:35f0a4070e3f9b27c50394d4b8bf67a0e62d1c8c deleted
    • Property subgit:lock:9bdeb4ed2db7daa281021e023f265db076e15a6c set to 2020-05-27T10:18:38.657
  • _plugins_/chartjs/trunk/modeles/chart.html

    r124819 r124829  
    278278
    279279<script>
    280 $(document).ready(function(){
    281         var conteneur[_(#GET{id})] = $("[#(#GET{id})]");
    282         var spipChart[_(#GET{id})] = new Chart(conteneur[_(#GET{id})], {
    283                 type: ['(#GET{type})'], // Type de graphe
    284                 data: {
    285                         labels:   [(#GET{labels}|json_encode)], // Labels en abscisse
    286                         datasets: [(#GET{datasets}|chartjs_array_typecaster|json_encode)], // Jeux de données et leurs options
    287                 },
    288                 options: [(#GET{options}|chartjs_array_typecaster|json_encode)] // Options générales
    289         });
    290 });
     280var jQChartjsLoader;
     281(function () {
     282        function draw_this_chartjs() {
     283                jQuery(function($){
     284                        var conteneur[_(#GET{id})] = $("[#(#GET{id})]");
     285                        var spipChart[_(#GET{id})] = new Chart(conteneur[_(#GET{id})], {
     286                                type: ['(#GET{type})'], // Type de graphe
     287                                        data: {
     288                                        labels:   [(#GET{labels}|json_encode)], // Labels en abscisse
     289                                        datasets: [(#GET{datasets}|chartjs_array_typecaster|json_encode)], // Jeux de données et leurs options
     290                                },
     291                                options: [(#GET{options}|chartjs_array_typecaster|json_encode)] // Options générales
     292                        });
     293                });
     294        }
     295        if (typeof jQuery.ajax === "undefined") {
     296                jQuery(init_chartjs);
     297        } else {
     298                init_chartjs();
     299        }
     300        function init_chartjs() {
     301                // Charger le javascript une seule fois si plusieurs graphiques
     302                if (typeof Chart === "undefined") {
     303                        if (typeof jQChartjsLoader === "undefined") {
     304                                jQChartjsLoader = jQuery.ajax({url: '[(#CHEMIN{lib/chartjs/Chart.js})]', dataType: 'script', cache: true});
     305                        }
     306                        jQChartjsLoader.done(draw_this_chartjs);
     307                } else {
     308                        draw_this_chartjs();
     309                }
     310        }
     311})();
     312
    291313</script>
    292314
Note: See TracChangeset for help on using the changeset viewer.