解説
トーナメント表が描かれるまで
対戦の一覧から SVG までに、パッケージが何をしているか。
トーナメント表は、順番を問わない対戦の一覧から始まります。1つの対戦は、1試合、複数試合の勝ち抜き、2試合の合計、再試合つきの試合のどれかなので、同じレイアウトでアイスホッケーのプレーオフもワールドカップも描けます。
- チームは一度だけ集めます。自分で挙げたチームと、挙げていない id で書かれた側ごとに、その名前のチームを作ります。
- 対戦ごとに結果を決めます。 スコア、試合、またはレグから結果を求め、勝った側も求めます。
- レイアウトは、どの対戦がどの対戦につながるか (勝者は、そのチームが次に出る対戦、または
feedsで指した対戦に進みます)、ラウンド、各対戦がどちらのブロックにあるか、どの側が不戦勝かを調べます。この部分がlayoutBracketで、描画をしない純粋な関数です。 - 描画が
drawBracketです。レイアウトを、見た目・大きさ・テーマ・言語に合わせて、自分のスタイルを持つ SVG の文字列にします。
ブラウザのレイアウトエンジンは使わないので、同じ入力は、ページでもサーバーでもテストでも、同じバイト列になります。ほかのボード (ランキング、メダル表、柔道のボード、結果ボード) も同じ決まりです。データを渡すと、SVG の文字列が返ります。
この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。