SpinelzのCalendarのオプション

SpinelzのCalendarがいい感じなので、使うことにしたんですけど・・・
ドキュメントがほとんどない。
なんで?あんま人気ないのかな?
あるのは、script.spinelz.org is Expired or Suspended.のデモくらい。
まぁ自分の検索が甘いだけかもしれませんが。

てか、ソース読めってことなんでしょうね。


てわけで、とりあえずデフォルトのオプションとその初期値を書いときます。
左がオプション名で、右がデフォルト値です。

オプション一覧

initDate             : new Date(),
cssPrefix            : 'custom_',
holidays             : [],
schedules            : [],
size                 : Calendar.size.large,
regularHoliday       : [0, 6],
displayIndexes       : [0, 1, 2, 3, 4, 5, 6],
displayTime          : [{hour: 0, min: 0}, {hour: 24, min: 0}],
weekIndex            : 0,
dblclickListener     : null,
afterSelect          : Prototype.emptyFunction,
beforeRefresh        : Prototype.emptyFunction,
changeSchedule       : Prototype.emptyFunction,
changeCalendar       : Prototype.emptyFunction,
displayType          : 'month',
highlightDay         : true,
beforeRemoveSchedule : function(){return true;},
dblclickSchedule     : null,
updateTirm           : Prototype.emptyFunction,
displayTimeLine      : true,
clickDateText        : null,
monthHeaderFormat    : null,
weekHeaderFormat     : null,
weekSubHeaderFormat  : null,
dayHeaderFormat      : null,
dayOfWeek            : DateUtil.dayOfWeek

となってます。
それでは、わかってる範囲でいくつかオプションの説明。

cssPrefix

  カスタムスタイルシートの名前

holidays

  休日のデータ

schedules

  スケジュールデータ

size

  カレンダーのサイズ、Largeとsmallが選べる

regularHoliday

  デフォルトの休日の曜日、0〜6がそれぞれ日曜〜土曜に対応してる。

displayIndexes

  初期表示する曜日

displayTime

  週および日表示のときの時間の表示領域

weekIndex

  週のはじまりの曜日

changeSchedule

  スケジュール変更終了時、実行される動作

displayType

  初期表示タイプ、month、week、dayが選択可。

dblclickSchedule

  スケジュールダブルクリック時の動作

updateTirm

  スケジュールの時間領域変更終了時に実行される動作

Rails用Helper

Railsで使うときのHelperを一応書いときます。

Helper

def calendar(name, options = {})
  options.stringify_keys!
  options["cssPrefix"]   = %Q!'#{options["cssPrefix"]}'! if options["cssPrefix"]
  options["displayType"] = %Q!'#{options["displayType"]}'! if options["displayType"]
  cal = %Q!var calendar = new Calendar('#{name}', {#{hash_to_javascript_options(options)}});!
  javascript_tag(cal)
end

private

def hash_to_javascript_options(hash_options)
  ary = Array.new
  hash_options.each do |key, value|
    ary << %Q!#{key}:#{value}!
  end
  ary.join(',')
end

んで、Viewは、
View

<div id="calendar1"></div>

<%= calendar("calendar1", {:displayType => "week"}) %>

といった感じで、
nameにカレンダーを表示するdivのidを、
optionsにはHashで変更したいオプションを入れてください。

まぁ

こんな感じですね。
え〜と、書いてないやつは確認してないので、自信がないので書いてません。
確認したら追記するかも。
なんとなく名前からわかる気もしますが・・・
あと、間違ってるとこあったら教えてください。


今のところ、Railsで使うときに、View内にベタでJavaScript書きたくないので、
Helperに落とし込んでる作業中なんですけど、
誰かRails用のHelper書いてたりしないですかね。

追記(6/22)

hash_to_javascript_optionsメソッドを書き忘れてたんで追記。
これは、Hashで渡されたオプションを
key : value
の形式に変えてるだけです。