1

jsreport.net で jsrender ベースのフロート グラフを設定しましたが、現在、複数ページのグラフの y 軸で失敗します。2 番目の画像でわかるように、y 軸がバーと正しく一致していません。

更新: 遊び場のリンクは次のとおりです: https://playground.jsreport.net/#playground/WJmSGjkB5/2

先頭ページ: 先頭ページ

2 ページ目:

2 ページ目

これが現在のソースコードスニペットです

        var seriesCount = 1; // current data series identifier

        // drawing series hook
        dsHook = function(plot, canvascontext, series){
            for (var i = 0; i < series.data.length; i++){

                // get relative position of plot
                var offset = plot.offset();

                // get data point
                var dP = series.data[i];

               var pos = plot.p2c({x: dP[0], y: dP[1]});

               var barWidth = plot.p2c({x: dP[0] + series.bars.barWidth, y: dP[1]}).left - pos.left;

               var posCorr; 
               // set horizontal position correction

               switch(seriesCount) {
                   case 1: posCorr = -72; break;
                   case 2: posCorr = -23; break;
                   case 3: posCorr = 24; break;
                   case 4: posCorr = -50; break;
                   case 5: posCorr = 2; break;
                } 

                pos.left += offset.left + posCorr; 
                pos.top += offset.top - 30;

                numFormatted = number_format(dP[1], 0, '', '\'');

                var aDiv = $('<div></div>').css({'width':barWidth, 'background-color':'white','color':'black','font-size':'12px','text-align':'center','position':'absolute','left': pos.left,'top':pos.top}).text(numFormatted).appendTo("body");

            }
            seriesCount++;
        }
4

1 に答える 1

2

ページごとにヘッダー/マージンのスペースが追加されるため、plot.offset().top誤って計算されるようです。dsHook

最初の「解決策」は、これを反映するように計算を変更することです。

pos.top += offset.top - 30 + ({{:ID}}-1)*20;

https://playground.jsreport.net/#playground/WJmSGjkB5/5

2番目の「解決策」は、固定サイズの空のヘッダーをファントム構成に追加することです。まだ説明はありません

https://playground.jsreport.net/#playground/WJmSGjkB5/4

より良い説明/解決策でこれを更新したいと思います

于 2015-01-27T20:02:35.377 に答える