「記録カードをクリックするとその記録の詳細を見ることができる。」の実装についての考察
「記録カードをクリックするとその記録の詳細を見ることができる。」の実装。
_done詳細データを送るためのデータ型IReceivedDataFromServer recordDetail型を定義する。
_done適当にHTMLを打ち込み画面を再現する
_done記録の数値表示に適切なフォントを選び抜く。
https://fonts.google.com/specimen/Montserrat?preview.text_type=custom#about
_doneそれをもとに、自動生成に持ち込む。
_done具体的なIRecord型,IRecordGroupResolved型オブジェクト二つに対して自動生成が行われることを確認する。...(1)
_donerecord/detail,POSTメソッドのrecord/searchの具体的なリクエストオブジェクトを制作しサーバーに送信する
_donerecord/detailに対応する処理を書く。
_doneサーバーサイドで受け取った記録を(1)につなげて、完全に自動生成されることを確認する。
_APIへリクエストを送信する部分について、コードを分離する
_GETリクエストでURLに記録IDを露出させられないかparty.icon
そうするとSNSで共有しやすくなる
_Twitter,Youtubeの動画表示に対応する。
_Twitter
_Youtube
データ型の定義
このページに遷移する条件
特定の記録カードをクリックする。
これに対応するIRecord型オブジェクト一つ(以下clickedRecord)が、これから処理をする上での与えられた情報となる。
つまり、それぞれの記録カードを配置するときに、onclickイベントリスナーを加えておく必要がある。
これらのonclickイベントリスナーはそれぞれfetch関数を実行することが出来る。
記録管理するためにクラスを作ることも考えたけど、今回はページの「状態」はそこまで重要にならないので、つくりをシンプルにするために関数のみで実装することにする。
思えばタグそれぞれにもクリックイベントを追加してやらなくてはならない
record/detailリクエストを送ったのち検索結果を示す画面に移りたい
表示する情報は何か
記録の詳細情報
IRecord型の情報一個分が必要。
この時、サーバーから取り寄せる際に必要となる情報はclickedRecordのidのみでよい。
クリックしたときにサーバーにリクエストを送りたい。
リクエストURLはrecord/detailが良いか?
IRecord型インスタンス一個分をリスポンスとして返す。
それに追従して、同レギュレーションの記録全て
IReceivedDataAtClient recordSearch型のインスタンスが一つ必要。
POSTメソッドのrecord/searchを利用して取り出す必要がある。
このとき、clickedRecord内のレギュレーション情報(IRegulation型)をそのまま検索条件にしてやったものをデータとして取り寄せる。
万が一当てはまった記録が多すぎた場合のために記録の個数制限を30個(...たぶん。)として設ける必要がある。
二つのリクエストを送る必要がある!
並列してPromise処理が望ましい?(Promise.allとか)
表示するのに必要な要素。
Twitterのwidject.jsを利用した、ツイートウィジェットを表示する。
https://developer.twitter.com/en/docs/twitter-for-websites/javascript-api/guides/scripting-factory-functions
APIの利用許可が手に入った時には直接動画データを取ってきたい
あるいはYoutubeAPIを利用した、Youtubeの動画欄
これらの実装は旧STASpeedrunのそれが参考になるはず。
ただし、どのようにしてmoduleに収めるかが難しい。ソースコードをダウンロードして、モジュールとして読み込めばちゃんと利用できる?
残念ながら@types/widget.jsは存在しない。
それらの下に引用元となるリンク。
この図中のリンクアイコンをFontAwesomeから探してくる必要あり。
タグ一覧。
最低限の情報を示すタグは既にCSSとして作ってるのでそれを再利用すれば良さそう。
追加しなくてはならないのはユーザーが好き勝手に追加できるタグと走者を示すタグ。
走者ノート
markdownに対応出来たらうれしい
そして下に走者記録が続く。
ユーザーは作品やモードごとの記録を見るで既に作ってる記録カードたちを再利用してやれば直ぐ実装できる。
https://gyazo.com/fa2fc7e2ddae0a720dbfb4c009fafefc