前提・実現したいこと
視聴数を棒グラフ化して画面にオーバーレイ表示されるプレーヤーを開発中です。
プレーヤー部分に再生箇所を示す赤いドットを表示させようとしていて、その前段階として別ファイルにてプレーヤー上に赤ドットを表示させました。
この赤ドットをウィンドウではなく棒グラフ項目のトップに表示させる方法は可能でしょうか。
また現状では棒グラフ項目をクリックするとドットが表示されますが、ドットがロード時に表示され、マウスの動きに応じて移動(各項目のトップを移動するイメージ)させたいです。
発生している問題・エラーメッセージ
座標や項目位置を取得する方法を調べていますが、Chart.jsはバージョンによって挙動がだいぶ変わるようで現バージョンでの情報が見つけられていません。
該当のソースコード
<html> <head > <meta http-equiv="Content-Style-Type" content="text/html"> <title>Chart.js Sample</title> </head> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script> <body> <canvas id="myChart"></canvas> <script> var data_labels = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30] var canvas = document.getElementById( 'myChart' ); var context = canvas.getContext('2d'); var graph = { type: 'bar', data: { labels: data_labels, datasets: [{ label: 'Views', data: [ 35, 25, 33, 15, 18, 6, 20, 39, 12, 8, 6, 15, 35, 30, 23, 10, 8, 5, 11, 30, 35, 39, 40, 41, 32, 20, 12, 9, 3, 1 ], backgroundColor: [ 'rgba(99, 204, 132, 0.2)' ], barPercentage: 1, categoryPercentage: 1, }] }, options: { title: { display: false, }, responsive: true, legend: { display: false, }, scales: { x: { display: false, }, y: { display: false, } }, } }; var myGraph = new Chart( canvas, graph ); canvas.addEventListener ('click', function(e) { var item = myGraph.getElementsAtEventForMode(e, 'nearest', true); if ( item.length == 0 ) { return; } console.log(item); item = item[0]; var idx = item.index; var x_right = myGraph.chartArea.right; var x_left = myGraph.chartArea.left; var x_width = ( x_right - x_left ) / data_labels.length; var y_height = myGraph.chartArea.height; var y_top = myGraph.chartArea.top; var draw_x0 = x_width * idx; context.beginPath(); context.arc( draw_x0 + x_left, y_top, 10, 0 * Math.PI / 180, 360 * Math.PI / 180 ); context.fillStyle = "red"; context.fill(); }); </script> </body> </html>
試したこと
補足情報(FW/ツールのバージョンなど)
Chart.js 3.5.1
将来的には以下内容を実装したいと考えています。
- プレーヤー(videoタグ?)の再生位置に応じてカーソル位置を動かす
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/09/22 02:49
退会済みユーザー
2021/09/22 03:51 編集
退会済みユーザー
2021/09/22 04:08