本文へ移動

Taisen Brackets対戦

対戦の一覧から、トーナメント表をSVGで描きます。

対戦(たいせん)は、二者が向かい合って勝負することです。 名前について(英語)

目次

解説

トーナメント表が描かれるまで

対戦の一覧から SVG までに、パッケージが何をしているか。

トーナメント表は、順番を問わない対戦の一覧から始まります。1つの対戦は、1試合、複数試合の勝ち抜き、2試合の合計、再試合つきの試合のどれかなので、同じレイアウトでアイスホッケーのプレーオフもワールドカップも描けます。

  1. チームは一度だけ集めます。自分で挙げたチームと、挙げていない id で書かれた側ごとに、その名前のチームを作ります。
  2. 対戦ごとに結果を決めます。 スコア、試合、またはレグから結果を求め、勝った側も求めます。
  3. レイアウトは、どの対戦がどの対戦につながるか (勝者は、そのチームが次に出る対戦、または feeds で指した対戦に進みます)、ラウンド、各対戦がどちらのブロックにあるか、どの側が不戦勝かを調べます。この部分が layoutBracket で、描画をしない純粋な関数です。
  4. 描画が drawBracket です。レイアウトを、見た目・大きさ・テーマ・言語に合わせて、自分のスタイルを持つ SVG の文字列にします。

ブラウザのレイアウトエンジンは使わないので、同じ入力は、ページでもサーバーでもテストでも、同じバイト列になります。ほかのボード (ランキング、メダル表、柔道のボード、結果ボード) も同じ決まりです。データを渡すと、SVG の文字列が返ります。

ソースを見るGitHub で編集@johnmorrisdotca/taisen-brackets 0.20.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。