普段、管理画面をAdminLTEを使って作っています。

今回、ガントチャートが必要となりいくつか試していました。

とりあえず「jquery ガントチャート」で検索してダンロードして試してみました。

どのツールも高機能なんですが、も一つフィットしない。

カスタマイズするとしたら、なんかめんどくさそう。。

で、最低限欲しかった機能として、画面でスケジュールを移動できて、イベントが取れるに絞って選択し直したところ「jquery.ganttView」をピックアップしました。

さっそくAdminLTEの環境に導入しようとしたところ問題が。。。

jqueryが古い。。。。

jquery.ganttViewがjQuery.live()を使っているため、jquery1.8以上で利用ができない。

jQuery.live()はjQuery.on()に変わっていたんです。

かといって、jQueryのバージョンを下げると、AdminLTEからえらーが表示される。

.liveを.onに変更するぐらいなら自分で。。。とも思ったんですが、それ以外にもありそうで躊躇。。。

困っていたところ、他の方から.live()を.on()に変更したライブラリがあることを教えていただきました。

そこで早速このバージョンをgitHubからダウンロード。

無事動作してくれました!

セルがずれてる。。。。

動作したんですが、よくよく見ると、セルの縦位置がずれている。。。

調べてみると、Bootstrapのcssを導入したらずれることがわかりました。

AdminLTEはBootStrapで動いてるんだから外す訳にはいかないし。。

ここで「Bootstrap jquery.ganttView」で調べてみると・・・・ありました。

こちらの方に「bootstrap css fix #29」記載されていました。

-webkit-box-sizingとか、-moz-box-sizingなどが初期化されていないのがまずかったようです。

cssを編集すると、無事にずれはなくなってくれました。

gitHub最強ですね(^^)

土日の色を変えたい。。。

ここまでやってると、普通にあるはずの機能として、土日がわかるようにしたくなってきました。

デフォルトでも、グレーで表示されてはるんですが、やっぱり土曜日は青、日曜日は赤ってやりたいw

他でこれをされているサイトが有りましたのですが、.live()のソースを使われていたので、参考にして修正することにしました。

「jquery.ganttViewのカスタマイズしてみました(まとめ)」

まずは、jquery.ganttView.cssに背景色の設定を追加しました。

div.ganttview-grid-row-cell.ganttview-sunday {
  background-color: #ffe4e1;
}
div.ganttview-grid-row-cell.ganttview-saturday {
  background-color: #f0f8ff;
}

つぎは、jquery.ganttView.jsを編集しました。

// if (DateUtils.isWeekend(dates[y][m][d]) && showWeekends) {
if (DateUtils.isSunday(dates[y][m][d]) && showWeekends) {
  cellDiv.addClass("ganttview-sunday");
}
if (DateUtils.isSaturday(dates[y][m][d]) && showWeekends) {
  cellDiv.addClass("ganttview-saturday");
}

ーー

isSunday: function (date) {
  return date.getDay() == 0;
},
isSaturday: function (date) {
  return date.getDay() == 6;
},

※一応もとのも残しています。

こんな感じに表示できるようになりました。

あとは、データベースと連動したり、親子関係を作ったり。。

さてさてです(^^)