ガントチャートのスクロールについて

下記に紹介されている記事を参照しガントチャートを設定したのですが、ガントチャート部分のスクロールについてどうしてもわからないので質問させていただきました。


To Do をガントチャートで表示する
https://developer.cybozu.io/hc/ja/articles/202640940

ガントチャートプラグイン
https://developer.cybozu.io/hc/ja/articles/203716110-ガントチャートプラグイン


普通に設定するとガントチャートの部分だけ縦スクロールが無効になっていますが、その設定を解除する方法をお教えください(ガントチャートのエリアではマウスのホイールが効きません)。

下記のようなこともしてみたのですが、特に変化がありませんでした。ちなみに「navigate: ‘buttons’」に設定していて横スクロールはボタンで操作するようにしています。

よろしくお願いいたします。


document.removeEventListener(‘mousewheel’, disableScroll, { passive: false });
function disableScroll(event) {

event.preventDefault();
}


ImTonoさん

恐らく、使用しているライブラリであるjQuery.GanttのCSSによるものかと思います。
https://js.cybozu.com/jquerygantt/20210106/css/style.css

overflow: hiddenに設定されている要素があるので、overflow: scrollなどで上書きしてみると良いかと思います。
http://www.htmq.com/css/overflow.shtml

江田様

アドバイスありがとうございます。

ご指摘いただきました『overflow: hidden』については、cssで設定されているところをすべて『overflow: scroll』にしてみましたが改善されませんでした。

https://js.cybozu.com/jquerygantt/20210106/jquery.fn.gantt.min.js

読み込ませている上記のjsの中に、以下のような記述があるので、ここが関係しているのでは思い、見当違いかもしれませんが、$(document).off(“mousewheel”)などのイベント削除を行おうとしましたが効果がありませんでした。

何か良い方法はないでしょうか?
江田様、みなさま、よろしくお願いいたします。


wheel="onwheel"in element?“wheel”:void 0!==document.onmousewheel?“mousewheel”:“DOMMouseScroll”;
return $(element).on(wheel,function(e){core.wheelScroll(element,e)})
・・・
・・

wheelScroll:function(element,e){e.preventDefault();


ImTonoさん

お世話になっております。

左様でしたか…。

少し勘違いしていたかもしれないので確認させていただきたいのですが、ガントチャートの中身が見切れているなどということではなく、ガントチャートの上にマウスがあるときにページ全体を縦スクロールできないという症状でしょうか?
ちょうど下記のissueと同じような症状でしょうか。
https://github.com/taitems/jQuery.Gantt/issues/204

もしその場合は、こちらのプルリクのようにjquery.fn.gantt.jsに変更を加えて、mouseScrollオプションを利用することでスクロールできるようになるかもしれません。
https://github.com/taitems/jQuery.Gantt/pull/193/files
ただ、試してはいないです。違っていたら申し訳ございません。

江田様

お世話になっております。
なんどもアドバイスありがとうございます。

今回の件は江田様がおっしゃったように、ガントチャートの上にマウスがあるときに縦スクロールができないという症状についてになります。

アドバイスいただきましたようにjquery.fn.gantt.jsの下記の部分をコメントアウト(①)もしくはイベント解除のコードを追記(②)したjsファイルをkintoneにアップロードすることで縦スクロールがうまく動くようになりました。

ありがとうございました!



/*
var wheel = ‘onwheel’ in element ?
‘wheel’ : document.onmousewheel !== undefined ?
‘mousewheel’ : ‘DOMMouseScroll’;
$(element).on(wheel, function (e) { core.wheelScroll(element, e); });
*/


var wheel = ‘onwheel’ in element ?
‘wheel’ : document.onmousewheel !== undefined ?
‘mousewheel’ : ‘DOMMouseScroll’;
$(element).on(wheel, function (e) { core.wheelScroll(element, e); });

$(“#gantt”).off(‘wheel’);

ちなみに、jquery.fn.gantt.jsのファイルは何もせずにそのままkintoneにアップロードして、kintone.events.on(events, function(event){…});などを記述している自分が作成したjsファイルで$(“#gantt”).off(‘wheel’)を実行してもうまくいきませんでした。

知識不足な質問で恐縮なのですが、なぜうまくいかないのかご教示いただけると大変助かります。

何卒よろしくお願いいたします。

江田様

お世話になっております。

ご無理なお願いをして大変申し訳ありません。
とりあえずjquery.fn.gantt.jsを修正して読み込ませることで、当初の目的な達成いたしましたので、
その方法でいきたいと思います。

本当にありがとうございました。

今後ともよろしくお願いいたします。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。