[Labyrinthe Noir]>[Top]>[自作JavaScript集]>

グラフ年表スクリプト

歴史の人物を一覧表にして、生年と没年からグラフ化して表示するスクリプトです。
オリジナルの年表を作成できるように公開しています。HTML内の修正箇所は少ないため、データベースさえ用意すればどなたでも手軽に年表を作ることが可能です。

用途と特徴

データベースを利用してデータを取り込み、人名と生年と没年を表示したグラフを作成し、年表として表示します。
歴史上の人物であれば、どの年代に誰が居たのか確認すると共に、年齢を比較して見ることができます。
また、人物に限らず、組織や団体の存続を年表にしたり、漫画やアニメのキャラクタの登場回を年表風に見せることもできます。

使用例

年表名 内容 グラフの種類
三国志人物年表 三国志に登場する主要人物の生没年表 年表グラフ
大河ドラマ「平清盛」人物年表 NHKの大河ドラマ「平清盛」に関連した人物年表 年表グラフ
日本の湖ベスト30 湖の広さを比較する棒グラフの事例 棒グラフ
都道府県統計資料 国勢調査や統計資料からのまとめ マルチグラフ

その他の使用例

画面の操作

HTMLを表示させると以下のようなメニューが表の上に表示されます。

並替:▲  表幅:前[<<10][10>>]後[<<10][10>>] 位置:[<<1][1>>][<<10][10>>] 年表

メニュー 表示例 機能
並替   並替の対象となるフィールドがない場合、並替のメニューは表示されません
ヘッダーのフィールド名にも並替のリンクがあります
□/▲/▼ 並替の状態を表示(未ソート/降順/昇順)
区分 チェックありは、並替をしている項目。もう一度クリックすると逆順に並替
名前 チェックなしをクリックすると並替を実行。項目毎に並び替えの向きを記憶
表幅   生年と没年のデータが表示対象でない場合、表幅のメニューは表示されません
前[<<10][10>>] 年表の前部(グラフの左端)を10年分移動
後[<<10][10>>] 年表の後部(グラフの右端)を10年分移動
位置   生年と没年のデータが表示対象でない場合、位置のメニューは表示されません
[<<1][1>>] 年表の前後を同時に1年分移動
[<<10][10>>] 年表の前後を同時に10年分移動
[<<100][100>>] 年表の前後を同時に100年分移動(表幅が100年以上ある場合に表示)
一覧 年表】/【一覧 年表ファイルのデータを一覧で表示(一覧ウィンドウ)
ヘッダーの表示単位(head_unit)が「年」の場合は「年表」、それ以外では「一覧」と表示
iPadでは、サイズ指定やスクロール処理ができないため、新規ウィンドウを開いて表示します

【情報ウィンドウ】

マウスの動きに合わせて画面右上に情報ウインドウを表示します。iPadではマウスの動きをトレースできないため、タップするとその近くに表示します。

製作の準備

使用ファイル:list_people.html / list_people.js / list_people.txt (エンコードは全てUTF-8です)

【ファイルをダウンロード】

3つの使用ファイルをダウンロードします。リンクをクリックして開くか、リンクの上で右クリックをして保存をしてください。
表示や保存の際には、テキストエンコードをUTF-8で保存します。ブラウザ上で文字化けして見える場合は、エンコードを切り替えてください。IEなら画面内で右クリック、Firefoxなら表示メニュー内で切り替えます。

【サーバは必須】

データベースファイルの読込はオンラインでなければできませんので、ホームページとして公開できるスペースが必要になります。また、これらファイルを転送する際にはFTPソフトが必要ですので、使用するサーバの設定に従って準備を行ってください。

【データベースとの連動】

これは必須ではありませんが、データベースと連動することで、データの編集が容易になります。
データをテキスト(CSV)読込にしたため、手書きのテキストファイルだけでなく、データベースから出力したテキストで上書きすることにより、データをリアルタイムに置き換えることが可能です。

ファイルの役割

list_people.html ブラウザで表示させるためのHTMLファイル。表示の基本設定はこの中で行います。
list_people.js 年表を出力するスクリプトのファイルです。通常の使用では改変の必要はありません。
list_people.txt データベース用のデータが入ったファイルです。中身は書き換えて使います。

これら3つのファイルは同じフォルダに入れて使用してください。
複数の年表を作る場合、list_people.jsは共有して使います。他の2つのファイルは名前を変えて使ってください。

【注意点】

データベースの読込は通信機能を使っているため、オフライン(ローカル)では動作しません。
テスト時も必ずサーバに全ファイルを転送して動作確認をしてください。

グラフの種類

名称 内容 必須項目
年表グラフ 生年と没年の間を表現するグラフ 生年(year_st)、没年(year_ed)
棒グラフ 数値のデータを実数でグラフ表示( 基準値0、上限は無制限) 生年(year_st)、没年(year_ed)
マルチグラフ 並替選択時のみグラフを表示
数値のデータの最大値を100%とした時の比率でグラフ表示( 基準値0、上限100)
複数のフィールドに設定可能
フィールド名に「*」

年表グラフと棒グラフは、生年と没年の内容で判断、生年と没年が同じなら棒グラフモードになります。
マルチグラフは他のグラフと共存可能ですが、棒グラフの設定とマルチグラフの指定が同じフィールドにある場合は棒グラフが優先されます。

HTMLファイル(list_people.html)の設定方法

初期設定はHTMLファイル内で行います。 表示に関する様々な設定と、データベースとしてカスタマイズ可能な項目を用意しています。
初期値の項目を設定するだけで直ぐに使えるようになるでしょう。

初期設定

<script type="text/javascript">
<!--
//初期設定
setInit();

//初期値
dtitle = "三国志人物年表"; //このページのタイトル
dcomment = "主要人物の生没年表"; //説明書き
db_code = "後漢,魏,蜀,呉,晋"; //区分名
db_file = "list_people.txt"; //データベースファイル
hs_file = ""; //年表ファイル(オプション)
year_st = 180; //年表の最小値
year_ed = 280; //年表の最大値
//機能選択(0=OFF/1=ON)
ed_unknown = 1; //没年不明の表示
view_age = 1; //年齢グラフ表示
line_number = 0; //行番号表示
//色設定
hcolor = "ffff99"; //ヘッダー背景色
tcolor = "ff99cc"; //グラフ文字色
gcolor1 = "ffccff"; //グラフ背景色(生没期間)
gcolor2 = "cc66cc"; //グラフ背景色(任意期間)
gcolor3 = "ffff55"; //グラフ背景色(選択時)
//予約フィールド名
field_bun = "区分"; //分類項目
field_link = "名前"; //wikipediaとのリンク項目(不要な場合は空欄に)
field_st = "生年"; //グラフの始め
field_ed = "没年"; //グラフの終わり
//その他
head_unit = ""; //グラフ単位

//メイン処理
startMain();
-->
</script>

データのフィールド名については、データベースファイル(list_people.txt)の中で設定します。

下記に太字で表記した6項目の変数がデータベースに合わせて最初に調整すべき項目です。

変数 データの種類 内容
dtitle 文字列 人物年表 HTMLのタイトルを表示
dcomment 文字列 人物の生没年表 ページに表示される説明文
db_code 文字列 後漢,魏,蜀,呉,晋 区分フィールドに対応する区分名を「,」区切りで記入。自動で配列にします。
db_file 文字列 list_people.txt 読み込むデータベースファイル
hs_file 文字列 history.txt 読み込む年表ファイル(なくても動作)
year_st 数値 180 グラフの始まりの西暦年(紀元前はマイナス表記)
year_ed 数値 280 グラフの終わりの西暦年(紀元前はマイナス表記)
実際は1年前がヘッダーの最後となり、これ以降はまとめて表示
変数 データの種類 内容
ed_unknown 数値 0 / 1 没年が不明の場合、レコードを表示(1)するか否(0)か
view_age 数値 0 / 1 グラフ内に年齢を表示するか否か(棒グラフ、マルチグラフでは枠のみ)
line_number 数値 0 / 1 行番号を表示するか否か
変数 データの種類 内容
hcolor 文字列 ffff99 ヘッダーの背景色
tcolor 文字列 ff99cc グラフ内の文字色
gcolor1 文字列 ffccff グラフの基本となる背景色
gcolor2 文字列 cc66cc データに始年と終年がある場合のグラフの背景色
gcolor3 文字列 ffff55 グラフ上でマウスを重ねたり、クリックしたときの背景色(IE非対応)
変数 データの種類 内容
field_bun 文字列 区分 変数codeでデータを分類するフィールド名
field_link 文字列 名前 wikipediaへのリンクを設定するフィールド名
field_st 文字列 生年 グラフの開始位置を決めるフィールド名
field_ed 文字列 没年 グラフの終了位置を決めるフィールド名
変数 データの種類 内容
head_unit 文字列 年 / 回 / 話 ヘッダーに表示する単位

予約名として定義されるフィールド名もここで変更が可能です。

変数を設定しない場合、変数は消さないでください。与える値を空にするため、文字列を消して「""」とします。数値の場合は「0」にします。

【棒グラフモードについて】

field_st(生年)とfield_ed(没年)に同じフィールド名を指定すると0を起点にした棒グラフになります。

色の設定例

区分 名前 称号 以前 180年 190年 以後
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
後漢 12 劉宏 霊帝 156 24 25 26 27 28 29 30 31 32 33 189
後漢 13 劉弁 少帝弁 173 7 8 9 10 11 12 13 14 15 16 17 190
後漢 14 劉協 献帝 181 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 234

//色設定
hcolor = "ffff99"; //ヘッダー背景色
tcolor = "ff99cc"; //グラフ文字色
gcolor1 = "ffccff"; //グラフ背景色(生没期間)
gcolor2 = "cc66cc"; //グラフ背景色(任意期間)
gcolor3 = "ffff55"; //グラフ背景色(選択時)

区分 名前 称号 以前 180年 190年 以後
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
後漢 12 劉宏 霊帝 156 24 25 26 27 28 29 30 31 32 33 189
後漢 13 劉弁 少帝弁 173 7 8 9 10 11 12 13 14 15 16 17 190
後漢 14 劉協 献帝 181 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 234

//色設定
hcolor = "ffff99"; //ヘッダー背景色
tcolor = "ff99cc"; //グラフ文字色
gcolor1 = "ffccff"; //グラフ背景色(生没期間)
gcolor2 = "ccffff"; //グラフ背景色(任意期間)
gcolor3 = "ff9944"; //グラフ背景色(選択時)

テストモード

URLの後ろに「?test」と入力すると、データベースの読込テストができるテストモードとなります。
テストモードでは、データベースを単純に読み込んだ後、データを一覧表にして表示します。データが正常に表示されない場合、テストモードでデータのずれがないか確認してください。

例:list_people.html?test

データベースファイル(list_people.txt)の仕様

データベースとして正しく読み込むために幾つかのルールに従ってテキストファイルを作成してください。
形式としてはカンマ区切りのテキストファイル(CSV形式)です。データベースソフトやExcelで出力することもできます。(拡張子は.txtでも.csvでもかまいません)

基本的な仕様として、改行までの1行が1つのレコード(一人分のデータ)、レコード内を「,」で区切ったものが1つのフィールド(データ項目)です。

+区分,+名前,字,+生年,+没年,始年,終年
0,霊帝,,156,189,168,189
0,少帝弁,,173,190,189,189
0,献帝,,181,234,189,220
1,曹操,孟徳,155,220
1,曹丕,子桓,187,226,220,226
1,曹叡,元仲,206,239,226,239
1,曹芳,蘭卿,232,274,239,254
1,曹髦,彦士,241,260,254,260
1,曹奐,元帝,246,303,260,265
(以下省略)

レコードの仕様

先頭に「//」があるレコードは読み込みしません。コメント行として使用できます。

最初に読み込んだレコードを、フィールド名レコードとして自動取得します。このとき、各フィールド名の取得と同時にフィールドの最大値も決定します。 このフィールド最大値を超えるフィールドがデータレコードにあった場合、それらは読み込みされません。
2番目以降に読み込んだレコードを表示用のデータレコードとします。

フィールド名レコードもデータレコードも、各フィールドは「,」で分轄して読み込みます。
フィールド内に「,」を使っている場合は、フィールドの前後を「"」で囲う必要があります。
フィールド数が、フィールド名より多い場合、データは読み込まれません。逆に少ない場合は、空のデータを自動的に追加します。

フィールドの仕様

【接頭文字】

フィールド名の頭に記号を付けることでフィールドの扱いに規則を与えることができます。この記号を接頭文字と呼びます。

接頭文字 内容
! フィールドを非表示にします
+ フィールドをソートするとき、小から大へと昇順に並べ替えます
- フィールドをソートするとき、大から小へと降順に並べ替えます
* マルチグラフ用フィールドに指定。数値のみのフィールドで、グラフを自動化します

【補足情報】

フィールド名の後に記号を付けることでフィールドに補足情報を付け加えることが出来ます。これに使う記号を補足記号と呼びます。

補足記号 内容
[ ] [ ]内の文字をそのフィールドデータの単位として取得します(マルチグラフモード時の情報ウインドウ表示用)

【予約フィールド名】

HTMLで指定された以下のフィールド名を使うことで、それぞれの機能が働きます。(太字のフィールド名はHTMLファイル内で変更可)
これらのフィールドをマルチグラフモードに設定することはできません。(設定無効)

フィールド名 内容 設定方法 データの種類
区分 データを分類するための区分コードで、区分名に置き換えて表示されます。0から始めます HTML内のcodeで設定 数値
名前 wikipediaへのリンクを設定します HTML内のfield_wikiで設定 文字列
差替 名前でリンクできない場合にwikipediaへの正しいリンク先を設定します 自動判定 文字列 or "!"
生年 没年と組み合わせてグラフを表示します 自動判定 数値 or "?"
没年 生年と組み合わせてグラフを表示します 自動判定 数値 or "?" or ""
始年 終年と組み合わせてグラフを表示します 自動判定 数値
終年 始年と組み合わせてグラフを表示します 自動判定 数値 or ""

【名前と差替について】

wikipediaへのリンクは基本URL(スクリプトファイルの初期値link_wiki)に名前の文字列を足して設定しています。

<a href="http://ja.wikipedia.org/wiki/名前">名前</a>

差替フィールドを設定した場合、名前の部分を差替データと入れ替えます。(差替フィールドが空の場合は無効)

<a href="http://ja.wikipedia.org/wiki/差替">名前</a>

差替フィールドが「http」から始まるデータの場合、基本URLを使わず差替フィールドのみ設定します。外部サイトの場合、httpから表記が必要です。

<a href="差替">名前</a>

名前フィールドのデータの先頭に「!」を付けるか差替データを「!」にした場合、リンクをしません。

【生年・没年・始年・終年について】

不明の場合 生年および没年が不明の場合、「?」とします。 例:?
不確かな場合 年数・没年・始年・終年が違う可能性がある場合、数値の後ろに「?」を付けます。 例:200?
存命中の場合 没年は空の値または「-」とします。(生年がない場合無効) 例:
任期中の場合 存命中で任意期間も終了していない場合、終年を空の値または「-」にします。(始年が不明の場合無効) 例:
日付形式 日付形式(.または/で年月日を区切る)にすることで、一部に日付を表示できます。 例:1836.1.3

生年が不明の場合、表の先頭からグラフが表示されます。 没年が不明の場合は、グラフは表示されません。 (使用例1を参照)
存命中の場合は、生年から最後までグラフが表示されます。
始年および終年は、生没期間のグラフがある場合にその範囲の背景色を変更して表示します。(使用例2と3を参照)

その他仕様について

データ読込直後の表示は1番目のフィールドで昇順に並び替えを行っています。並び替えの接頭文字がある場合はそれに従います。

データの表示が正しくない場合、フィールドの数や「,」の位置がずれている場合があります。テストモードで読込が正しい順序かどうか確認しましょう。

年表ファイル(history.txt)の設定方法

年表ファイルを設定することで、年表データ(一覧データ)として、マウスのイベントや一覧ウィンドウに表示します。
データは1行毎に「年数,内容」という形式になっています。

184,黄巾の乱
189,董卓が相国となる
190,反董卓連合軍が結成
191,洛陽を焼き、長安へ遷都
//192,董卓死す
193,劉備、徐州の陶謙の元へ
(以下省略)

また「年数」部分には「1600.1.1」や「1600/1/1」のように日付形式も入力可能です。その場合、内部の処理で日付を「内容」の前に移し替えて表示します。

棒グラフモードで、年表ファイルがない場合は、データを自動的に生成して年表データとします。

その他の注意点

HTMLファイルの表示においてデータの更新が反映されない場合、年表ファイルを直接ブラウザで表示して更新してください。

現時点では並び替えには対応していませんので、事前に必要な順序で作成してください。

スクリプトファイル(list_people.js)の仕様

通常はそのままお使いください。一部変更可能な項目がありますので、その点だけ解説します。
変数の初期設定のうち、項目名と初期値は変更可能です。
予約フィールド名や初期値は初期設定ルーチンの中にあり、HTMLファイル内の初期設定より先に読み込まれています。

予約フィールド名

予約フィールド名の初期値を設定しています。個別に変更が必要な場合は、HTMLファイル内の初期値に追加してください。

変数 データの種類 初期値 内容
field_bun 文字列 区分 変数codeでデータを分類するフィールド名
field_link 文字列 名前 wikipediaへのリンクを設定するフィールド名
field_st 文字列 生年 グラフの開始位置を決めるフィールド名
field_ed 文字列 没年 グラフの終了位置を決めるフィールド名
field_link2 文字列 差替 差替項目の予約フィールド名
field_st2 文字列 始年 始年項目の予約フィールド名
field_ed2 文字列 終年 終年項目の予約フィールド名

初期値

色以外のデザインに関する設定値です。
これらの値は全HTMLファイルに影響がありますので、個別に設定が必要な場合は、HTMLファイル内の初期値に追加してください。

変数 データの種類 内容
fld_link ブーリアン true/false ヘッダー内のフィールド名に並替リンクを表示
b_move ブーリアン true/false 表位置の移動メニューを表示
auto_history ブーリアン true/false 棒グラフモードで年表ファイルがない場合、自動的に年表データを作成
b_comma ブーリアン true/false 数値と自動判定されたデータに対し、カンマを付ける
p_point 数値 0 ~ 8 マルチグラフモードで百分率を計算したときに表示する小数点以下の桁数
age_st 数値 0 ~ 1 生まれた年の年齢(1なら数え年になる)
dataMark 文字列 年表データの頭に付ける区切記号
link_wiki 文字列 http://ja.wikipedia.org/wiki/ 名前に設定するwikipedia等へのリンク(基本URL)
link_back 文字列 http://www.shurey.com/ リンク元ページが不明の場合の戻り先を指定

【ブーリアン】

条件文では「true/false」を「真/偽」と呼びますが、ここでは変数に対して「yes/no」もしくは「on/off」という意味になります。

著作権

このページの最初に紹介した事例(HTMLファイル)およびデータベースファイル(テキストファイル)は著作権を放棄しています。
スクリプトの著作権は秀麗が有していますが、改変して使用することができます。その際はスクリプトの最後に改変者のクレジットを足してください。二次配布は認めていません。

2011.4.24

履歴

2011.11.28 初期設定の変更(link_wikiをHTMLファイルからスクリプトファイルへ)
2011.8.14 初期設定の手順を変更(個別設定を後から上書き)
2011.6.28 数え年の年齢表記に対応
2011.6.21 マルチグラフモードにマウスイベントを追加
2011.6.12 棒グラフモードの場合、年表データを自動生成
2011.6.5 名前/差替データによるリンクしない機能
2011.6.3 表位置の移動(表示幅の前後を同時変更)に対応
2011.6.1 フィールド名に並替のリンクを設置
2011.5.28 年表ファイルのデータを一覧で枠表示
2011.5.21 並替手順の見直し
2011.5.20 単位表示に対応
2011.5.18 数値データにカンマを自動で付ける
2011.5.17 マルチグラフモードを追加
2011.5.16 存命中・任期中の処理
2011.5.15 生年、没年、始年、終年に日付形式が可能
2011.5.13 若干のデザイン変更(CSS)
2011.5.11 マウスに反応して情報ウィンドウを表示
2011.5.8 年表ファイルを導入
2011.5.7 区分名の書式を変更
2011.5.4 行番号を追加
2011.5.3 コメントアウト、数値自動右揃えに対応
2011.5.2 並替を昇順・降順に切り替え
2011.5.1 棒グラフに対応。存命中の処理
2011.4.29 空白フィールドの追加処理
2011.4.28 任意期間に対応(始年・終年を追加)、差替機能追加
2011.4.27 HTMLファイルとスクリプトを完全分離
2011.4.26 フィールド非表示、並替、表の幅変更に対応
2011.4.24 年表グラフ、区分処理、フィールド名自動取得、wikipedia自動リンクを実装

戻る