毎年、HPの更新作業で一番苦労するのが
試合日程表を作る作業。
作り方は、先にペナント競争の日程データを作り、
それをベースにエディタで置換しながら作っている。
でも、非常に大変。。。。
ということで、これをJavaScriptで作ってしまおうと考えて作成した。
●考え方
?使用するデータ。
○ペナント競争の日程データ
○カレンダデータ
?データ構成
○ペナント競争の日程データは、そのまま使用。
・開始時間は、デフォルトでhh:mmで出力し、
・時間確定時に手入力してもそんなに手間ではない。
・hh:mmを置換で18:00に替え、異なる部分だけ変更すればよい。
○オープン戦は、ペナント競争データの先頭にオープン戦用のデータを作成し付加する
・カレンダデータは、毎年使うので、年毎の変更が容易であること。
そのため、日付と曜日を対で入力せず、
○別データでカレンダの先頭日付の曜日を指定する。
○期間は、2/1から日本シリーズ終了+1週間まで
・日付には、
○祝日の場合は、祝日情報を付加する。
○オールスターゲームの場合は、対応する情報を付加する。
○クライマックス・日本シリーズの場合は、対応する情報を付加する。
○データ形式
○二次元配列で、日付(全角4桁:ex2月1日=" 2 1")、付加情報
○付加情報:祝日="祝"、オールスター="オ:文字列"、クライマックス="ク:文字列"
日本シリーズ:"日:文字列"
○対象チーム名:対象チーム名をペナント競争データのチーム名で設定する。
?仕様
○一日1行づつデータを作成していく。
○日付はポインタ管理し、カレンダデータとペナントデータで用いる。
○基本ポインタは、カレンダデータとし、ポインタを一つ進める。完了なら終了。
○基本ポインタの日付と同じ日がペナントデータにあれば、試合ポインタを当該データに進める。なければNULL。
○1行データの作成(1行データはNULLとし、ここに挿入して作成)
○基本データの文字毎に対応する処理へ進み、基本データ文字の最後まで繰り返す。
○祝:基本ポインタの日付が
○日曜日、もしくはカレンダデータの付加情報が祝日であれば、1行データに赤タグ付加
○土曜日であれば、1行データに青タグ付加
○日:基本ポインタの日付が1日でカレンダデータの先頭でなければ、前月の最終行を出力
"</pre><a href="#INDEX">このページの先頭へ</A>"
○1日の場合は、月初めの月行を出力。x=月の数値
"<a name="x"><h4><font color="green">"
"x月</font></h4></a>"
"<pre>"
○1行データに日付(全角2桁)+"日"を挿入
○曜:曜日を求め、1行データに挿入。
○閉:1行データの先頭にfontタグがあれば、</font>を挿入。
○(:試合ポインタがNULLでなく、対象チームが試合があるが予備日(=(があるとき)なら、半角の"("を挿入。
○ホ:試合ポインタがNULLでない場合、
○対象チームが試合があれば、ホームチーム名+"−"を全角3桁で挿入。
○対象チームが試合がなければ、全角3桁で" "を挿入。
○ビ:試合ポインタがNULLでない場合、
○対象チームが試合があれば、ビジターチーム名+" "を全角3桁で挿入。
○対象チームが試合がなければ、全角3桁で" "を挿入。
○球:試合ポインタがNULLでない場合、
○対象チームが試合があれば、球場名+" "を全角5桁で挿入。
○対象チームが試合がなければ、全角5桁で" "を挿入。
○時:試合ポインタがNULLでない場合、
○対象チームが試合があれば、"hh:mm"を挿入。
○対象チームが試合がなければ、" "を挿入。
○):試合ポインタがNULLでなく、対象チームが試合があるが予備日(=)があるとき)なら、半角の")"を挿入。
○他:試合ポインタがNULLでなく、
○他チームの試合があれば、" "+"CD,GT"にペナントデータを変換し挿入。
○すべて作成したらテキストBOXに出力する。
○1行の基本データ(すべての情報を配置したデータ)の中の半角文字を
○用いるデータから対応する内容に置換する。
・したがって、以下のテーブルを作る。
○「データ内の情報文字→対応した置換文字配列のインデックス番号」テーブル
○置換文字配列テーブル
○1行基本データは、以下とする。
「祝日曜閉(ホビ球時)他」
祝:祝日のFONTタグ(土曜:青、日曜・祝日:赤)
日:日付(全角3桁): 8日、12日
曜:曜日(全角3桁):(月)
閉:祝日のFONT閉じタグ
(:予備日の場合(半角1桁)
ホ:ホームチーム名(横浜、ヤク、日ハ)+"−"(全角3桁)
ビ:ビジターチーム名+" "(全角3桁)
球:球場名(ナゴヤド)+" "(全角5桁)
時:開始時間(hh:mm)半角5桁
):予備日の場合(半角1桁)
他:他の試合(CD,GT)(最大半角24桁)